Browse Source

Insert queue between decoder and videosink

QGC4.4
Jacob Walser 8 years ago
parent
commit
ce3cba6e56
  1. 20
      src/VideoStreaming/VideoReceiver.cc

20
src/VideoStreaming/VideoReceiver.cc

@ -183,6 +183,7 @@ void VideoReceiver::start() @@ -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() @@ -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() @@ -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;
}

Loading…
Cancel
Save