adaptivedemux: Clear "cancelled" on uridownloader before processing manifest
authorSeungha Yang <sh.yang@lge.com>
Sun, 4 Jun 2017 11:23:36 +0000 (20:23 +0900)
committerThiago Santos <thiagossantos@gmail.com>
Wed, 7 Jun 2017 02:21:56 +0000 (19:21 -0700)
Previous commit let demux call gst_uri_downloader_cancel() on _demux_reset().
Note that, _demux_reset() called during PAUSED_TO_READY and READY_TO_PAUSED.
And, it will set "cancelled" on uridownloader which blocks the use of
uridownloader. The issue is that, subclass can use the uridownloader not only
live streaming for manifest update, but also for fetching another manifests
such as variant and rendition m3u8 of hls streaming. So to unblock it,
demux should clear "cancelled" before processing initial manifest.

https://bugzilla.gnome.org/show_bug.cgi?id=783401

gst-libs/gst/adaptivedemux/gstadaptivedemux.c

index c410288..15c7f77 100644 (file)
@@ -567,6 +567,9 @@ gst_adaptive_demux_change_state (GstElement * element,
     case GST_STATE_CHANGE_READY_TO_PAUSED:
       GST_MANIFEST_LOCK (demux);
       gst_adaptive_demux_reset (demux);
+      /* Clear "cancelled" flag in uridownloader since subclass might want to
+       * use uridownloader to fetch another manifest */
+      gst_uri_downloader_reset (demux->downloader);
       if (demux->priv->have_manifest)
         gst_adaptive_demux_start_manifest_update_task (demux);
       demux->running = TRUE;