adaptivedemux2: Don't allow stream selection while switching periods
authorEdward Hervey <edward@centricular.com>
Mon, 5 Dec 2022 09:55:57 +0000 (10:55 +0100)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Mon, 5 Dec 2022 11:03:26 +0000 (11:03 +0000)
The stream selection is done on the currently outputting tracks, but in order to
(de)activate the backing streams we can only do it if the input and output
period are identical.

Fixes crash when doing stream selection during period migration

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

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

index 91161f6..817348d 100644 (file)
@@ -2355,6 +2355,13 @@ handle_stream_selection (GstAdaptiveDemux * demux, GList * streams,
     return FALSE;
 
   TRACKS_LOCK (demux);
+  /* We can't do stream selection if we are migrating between periods */
+  if (demux->input_period && demux->output_period != demux->input_period) {
+    GST_WARNING_OBJECT (demux,
+        "Stream selection while migrating between periods is not possible");
+    TRACKS_UNLOCK (demux);
+    return FALSE;
+  }
   /* Validate the streams and fill:
    * tracks : list of tracks corresponding to requested streams
    */