souphttpsrc + avdec_h264 latency problem.
paolo perotinus
paoloperot at yahoo.it
Tue Jul 11 21:05:08 UTC 2017
I'm still fighting against the avdec_h264 latency problem.The pipeline (which I translated into C code) on my receiver is:
gst-launch-1.0 -v souphttpsrc location=http://127.0.0.1:8080/stream.ts ! tsdemux name=demuxer demuxer. ! h264parse ! avdec_h264 ! autovideosink
In gstavviddec.c the following lines reduce the latency if the upstream is live:
{ GstQuery *query; gboolean is_live;
if (ffmpegdec->max_threads == 0) { if (!(oclass->in_plugin->capabilities & CODEC_CAP_AUTO_THREADS)) ffmpegdec->context->thread_count = gst_ffmpeg_auto_max_threads (); else ffmpegdec->context->thread_count = 0; } else ffmpegdec->context->thread_count = ffmpegdec->max_threads;
query = gst_query_new_latency (); is_live = FALSE; /* Check if upstream is live. If it isn't we can enable frame based * threading, which is adding latency */ if (gst_pad_peer_query (GST_VIDEO_DECODER_SINK_PAD (ffmpegdec), query)) { gst_query_parse_latency (query, &is_live, NULL, NULL); } gst_query_unref (query);
if (is_live) ffmpegdec->context->thread_type = FF_THREAD_SLICE; else ffmpegdec->context->thread_type = FF_THREAD_SLICE | FF_THREAD_FRAME; }
If I set the is-live property ( g_object_set (G_OBJECT (souphttpsource), "location", argv[1], "is-live", TRUE, NULL); ) then the decoder's latency is reduced, according to the lines above,BUT some latency is added on the souphttpsrc element.
How can I avoid that?
For now, the only solution I have is to HACK the code of gstavviddec.c and force ffmpegdec->context->thread_type = FF_THREAD_SLICE also in the case that is-live == FALSE (with the consequence that I don't get latency neither on the souphttpsrc neither on the avdec_h264 element)It seems to me something that should be fixed in the library, though...
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20170711/fa6d85b3/attachment.html>
More information about the gstreamer-devel
mailing list