tsdemux: Don't trigger a program change when falling back to ignore-pcr behaviour
authorMart Raudsepp <mart@leio.tech>
Tue, 20 Sep 2022 20:31:45 +0000 (23:31 +0300)
committerEdward Hervey <bilboed@bilboed.com>
Wed, 28 Sep 2022 07:18:45 +0000 (07:18 +0000)
Since commit a79a756b79aa1675e we could change to ignore-pcr automatically at 500ms
into a live stream when no PCR is seen by then. However the stream counting in
program change detection was wrongly considering ignore-pcr programs to have a
separate PCR PID, even though we are actually ignoring the PCR PID completely,
resulting in an erroneous program switch getting triggered from the different
stream count. This in turn would send an EOS and switch out the pads for what
actually is still the same program, while we intended to simply apply a
workaround for broken encoders.

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

subprojects/gst-plugins-bad/gst/mpegtsdemux/mpegtsbase.c

index 01bc68e..9810193 100644 (file)
@@ -847,8 +847,8 @@ mpegts_base_is_same_program (MpegTSBase * base, MpegTSBaseProgram * oldprogram,
       sawpcrpid = TRUE;
   }
 
-  /* If the pcr is not shared with an existing stream, we'll have one extra stream */
-  if (!sawpcrpid)
+  /* If we have a PCR PID and the pcr is not shared with an existing stream, we'll have one extra stream */
+  if (!sawpcrpid && !base->ignore_pcr)
     nbstreams += 1;
 
   if (nbstreams != g_list_length (oldprogram->stream_list)) {