qtdemux: emit no-more-pads after pruning old pads

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/4535>
This commit is contained in:
Xabier Rodriguez Calvar 2023-05-03 13:21:23 +02:00 committed by GStreamer Marge Bot
parent 3bd43672ec
commit 021572de93

View file

@ -14372,8 +14372,6 @@ qtdemux_expose_streams (GstQTDemux * qtdemux)
gst_qtdemux_guess_bitrate (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 */ /* If we have still old_streams, it's no more used stream */
for (i = 0; i < qtdemux->old_streams->len; i++) { for (i = 0; i < qtdemux->old_streams->len; i++) {
QtDemuxStream *stream = QTDEMUX_NTH_OLD_STREAM (qtdemux, i); QtDemuxStream *stream = QTDEMUX_NTH_OLD_STREAM (qtdemux, i);
@ -14391,6 +14389,8 @@ qtdemux_expose_streams (GstQTDemux * qtdemux)
g_ptr_array_set_size (qtdemux->old_streams, 0); 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 /* check if we should post a redirect in case there is a single trak
* and it is a redirecting trak */ * and it is a redirecting trak */
if (QTDEMUX_N_STREAMS (qtdemux) == 1 && if (QTDEMUX_N_STREAMS (qtdemux) == 1 &&