diff --git a/src/VideoStreaming/VideoReceiver.cc b/src/VideoStreaming/VideoReceiver.cc index 81c8f56284198559983313109c8bffcba8862a17..bf18c4b44b6c27603e1e99f1a6f8e279d2c41970 100644 --- a/src/VideoStreaming/VideoReceiver.cc +++ b/src/VideoStreaming/VideoReceiver.cc @@ -183,6 +183,7 @@ void VideoReceiver::start() GstElement* parser = NULL; GstElement* queue = NULL; GstElement* decoder = NULL; + GstElement* queue1 = NULL; do { if ((_pipeline = gst_pipeline_new("receiver")) == NULL) { @@ -225,11 +226,6 @@ void VideoReceiver::start() break; } - if ((decoder = gst_element_factory_make("avdec_h264", "h264-decoder")) == NULL) { - qCritical() << "VideoReceiver::start() failed. Error with gst_element_factory_make('avdec_h264')"; - break; - } - if((_tee = gst_element_factory_make("tee", NULL)) == NULL) { qCritical() << "VideoReceiver::start() failed. Error with gst_element_factory_make('tee')"; break; @@ -240,11 +236,21 @@ void VideoReceiver::start() break; } - gst_bin_add_many(GST_BIN(_pipeline), dataSource, demux, parser, _tee, queue, decoder, _videoSink, NULL); + if ((decoder = gst_element_factory_make("avdec_h264", "h264-decoder")) == NULL) { + qCritical() << "VideoReceiver::start() failed. Error with gst_element_factory_make('avdec_h264')"; + break; + } + + if ((queue1 = gst_element_factory_make("queue", NULL)) == NULL) { + qCritical() << "VideoReceiver::start() failed. Error with gst_element_factory_make('queue') [1]"; + break; + } + + gst_bin_add_many(GST_BIN(_pipeline), dataSource, demux, parser, _tee, queue, decoder, queue1, _videoSink, NULL); if(isUdp) { // Link the pipeline in front of the tee - if(!gst_element_link_many(dataSource, demux, parser, _tee, queue, decoder, _videoSink, NULL)) { + if(!gst_element_link_many(dataSource, demux, parser, _tee, queue, decoder, queue1, _videoSink, NULL)) { qCritical() << "Unable to link elements."; break; }