qtdemux: emit no-more-pads after pruning old pads
authorXabier Rodriguez Calvar <calvaris@igalia.com>
Wed, 3 May 2023 11:21:23 +0000 (13:21 +0200)
committerTim-Philipp Müller <tim@centricular.com>
Fri, 5 May 2023 15:24:17 +0000 (16:24 +0100)
If we don't do that, clients can rely on this signal to see the final pad
topology but it won't be the real one as some of them will disappear after
emitting that signal. This can happen after injecting a different init segment.

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

subprojects/gst-plugins-good/gst/isomp4/qtdemux.c

index 1449c67..0e5904d 100644 (file)
@@ -13789,8 +13789,6 @@ qtdemux_expose_streams (GstQTDemux * qtdemux)
 
   gst_qtdemux_guess_bitrate (qtdemux);
 
-  gst_element_no_more_pads (GST_ELEMENT_CAST (qtdemux));
-
   /* If we have still old_streams, it's no more used stream */
   for (i = 0; i < qtdemux->old_streams->len; i++) {
     QtDemuxStream *stream = QTDEMUX_NTH_OLD_STREAM (qtdemux, i);
@@ -13808,6 +13806,8 @@ qtdemux_expose_streams (GstQTDemux * qtdemux)
 
   g_ptr_array_set_size (qtdemux->old_streams, 0);
 
+  gst_element_no_more_pads (GST_ELEMENT_CAST (qtdemux));
+
   /* check if we should post a redirect in case there is a single trak
    * and it is a redirecting trak */
   if (QTDEMUX_N_STREAMS (qtdemux) == 1 &&