qtdemux: Force stream-start push when re-using EOS'd streams
authorEdward Hervey <edward@centricular.com>
Fri, 27 Aug 2021 12:32:45 +0000 (14:32 +0200)
committerEdward Hervey <bilboed@bilboed.com>
Fri, 27 Aug 2021 12:40:02 +0000 (14:40 +0200)
When re-using streams, we *do* need to push a `stream-start` event downstream if
we previously were EOS'd. Failure to do that would never remove the EOS status
on all downstream elements and cause weird issues.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1067>

gst/isomp4/qtdemux.c

index 6ede64b..15c1e7d 100644 (file)
@@ -13163,8 +13163,9 @@ qtdemux_reuse_and_configure_stream (GstQTDemux * qtdemux,
   newstream->pad = oldstream->pad;
   oldstream->pad = NULL;
 
-  /* unset new_stream to prevent stream-start event */
-  newstream->new_stream = FALSE;
+  /* unset new_stream to prevent stream-start event, unless we are EOS in which
+   * case we need to force one through */
+  newstream->new_stream = GST_PAD_IS_EOS (newstream->pad);
 
   return gst_qtdemux_configure_stream (qtdemux, newstream);
 }