HLS - ADAPTIVEDEMUX CPU Consumption Issue
Edward Hervey
bilboed at bilboed.com
Fri May 26 05:37:30 UTC 2017
Hi,
On Wed, 2017-05-10 at 13:28 +0200, Josu Gorostegui wrote:
> Esteemed gurus,
>
> I find some strange behavior playing HLS sources from internet with
> versions of GStreamer 1.8.3 and above. I don't think this occurs only
> to HLS sources, as will be explained ahead.
The commit you point to below is in adaptivedemux, so it should only
happen on those kind of elements (hlsdemux, dashdemux, ...).
>
> The source is played correctly but the CPU consumption increases
> without any reason and the pipeline until the pipeline eventually
> freezes or exits with an error.
What kind of error messages do you get ?
>
> The tests is simple:
>
> $ gst-launch-1.0 -e souphttpsrc location=http://a3live-lh.akamaihd.ne
> t/i/antena3_1 at 35248/index_4_av-b.m3u8 name=source ! hlsdemux
> name=hlsm ! queue ! tsdemux name=demux use-buffering=true demux. !
> fakesink sync=true
>
> Running this pipeline, even at the start the behaviour is right.
>
> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+
> COMMAND
> 24202 udooer 20 0 133396 27780 5224 S 2.0 2.7 0:02.89
> lt-gst-launch-1
>
> After some couple of hours,
>
> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+
> COMMAND
> 23816 udooer 20 0 137304 33516 5284 S 55.6 3.3 38:03.58
> lt-gst-launch-1
>
> This simple test is run in an i.MX6 platform but the behaviour is
> exactly the same in other platforms (x86).
>
> The pattern repeats with playbin too, so it is not possible to play
> an Internet source without problems continuously without the
> pertinent CPU consumption increase issue.
>
> In my point of view there is some kind of instability here.
> Analyzing the problem, I founded that the problem arises from the
> next patch:
>
> https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=585
> e60c4abd0ea4e0a12700b84580e5b8a7cdc53
>
> So, deleting the callback:
>
> static GstPadProbeReturn
> gst_ad_stream_src_to_ready_cb (GstPad * pad, GstPadProbeInfo * info,
> gpointer user_data)
> {
> GstAdaptiveDemuxStream *stream = user_data;
>
> /* The source's src pad is IDLE so now set the state to READY */
> g_mutex_lock (&stream->fragment_download_lock);
> stream->src_at_ready = TRUE;
> g_cond_signal (&stream->fragment_download_cond);
> g_mutex_unlock (&stream->fragment_download_lock);
>
> return GST_PAD_PROBE_OK;
> }
>
> and the obviously the related stuff
>
> stream->src_at_ready = FALSE;
>
> gst_element_set_locked_state (stream->src, TRUE);
> gst_pad_add_probe (stream->src_srcpad, GST_PAD_PROBE_TYPE_IDLE,
> gst_ad_stream_src_to_ready_cb, stream, NULL);
>
> g_mutex_lock (&stream->fragment_download_lock);
> while (!stream->src_at_ready) {
> g_cond_wait (&stream->fragment_download_cond,
> &stream->fragment_download_lock);
> }
> g_mutex_unlock (&stream->fragment_download_lock);
>
> This behavior doesn't happen, so I think that is some kind of
> regression in this patch.
> However, I don't think that removing the stuff is the perfect way to
> go so I would like to consult you first.
>
> What do you think? Should I file a bug?
The first step would be to try to reproduce it with a more recent
version (1.12 for example).
If it still happens, please do open a bug report with as much detail
as possible (logs, error messages, etc..).
Thanks !
Edward
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20170526/d1419256/attachment.sig>
More information about the gstreamer-devel
mailing list