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; } diff --git a/src/VideoStreaming/VideoSurface.cc b/src/VideoStreaming/VideoSurface.cc index 77fb96ab988b51a1c5db77aeba67f535217df8c0..0ec705b5e21a6c4d84aa3eedb5f6987f8262aa73 100644 --- a/src/VideoStreaming/VideoSurface.cc +++ b/src/VideoStreaming/VideoSurface.cc @@ -50,6 +50,7 @@ GstElement* VideoSurface::videoSink() qCritical("Failed to create qtquick2videosink. Make sure it is installed correctly"); return NULL; } + g_object_set(G_OBJECT(_data->videoSink), "sync", gboolean(false), NULL); g_signal_connect(_data->videoSink, "update", G_CALLBACK(onUpdateThunk), (void* )this); _refed = true; }