adaptivedemux2: Check stream selected instead of state
authorJan Schmidt <jan@centricular.com>
Thu, 30 Jun 2022 16:05:36 +0000 (02:05 +1000)
committerTim-Philipp Müller <tim@centricular.com>
Thu, 4 Aug 2022 12:43:25 +0000 (13:43 +0100)
When combining stream flows, ignore streams that
are not selected, instead of checking whether
the stream state has changed yet.

Fixes another issue with dashdemux2 where it fails to
change to the next period when playing content with
several video, audio and text streams, as with
Manifest_MultiPeriod_1080p.mpd when seeking to 730
just before the end of the first period.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2838>

subprojects/gst-plugins-good/ext/adaptivedemux2/gstadaptivedemux-period.c

index 405631e..412b551 100644 (file)
@@ -239,9 +239,9 @@ gst_adaptive_demux_period_combine_stream_flows (GstAdaptiveDemuxPeriod * period)
   for (iter = period->streams; iter; iter = g_list_next (iter)) {
     GstAdaptiveDemux2Stream *stream = iter->data;
 
-    /* Streams that are not running do not contribute
-     * to the flow */
-    if (stream->state == GST_ADAPTIVE_DEMUX2_STREAM_STATE_STOPPED)
+    /* Streams that are not running do not contribute to the flow,
+     * so ignore streams with no selected tracks */
+    if (!gst_adaptive_demux2_stream_is_selected (stream))
       continue;
 
     if (stream->last_ret != GST_FLOW_NOT_LINKED) {