HYL_OK3568_LINUX/buildroot/package/gstreamer1/gst1-plugins-bad/0011-mpegtsdemux-Create-new-PCR-group-for-big-gap.patch
2025-05-10 21:49:39 +08:00

53 lines
2.0 KiB
Diff

From 718dbefc33f2399deb003b8d3a9173b130498ec6 Mon Sep 17 00:00:00 2001
From: Jeffy Chen <jeffy.chen@rock-chips.com>
Date: Fri, 23 Oct 2020 11:11:11 +0800
Subject: [PATCH 11/41] mpegtsdemux: Create new PCR group for big gap
Currently it would try to reuse the current group and handle the gap by
just adding 500ms to pcroffset.
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
---
gst/mpegtsdemux/mpegtspacketizer.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/gst/mpegtsdemux/mpegtspacketizer.c b/gst/mpegtsdemux/mpegtspacketizer.c
index 9ee5672..8daae5e 100644
--- a/gst/mpegtsdemux/mpegtspacketizer.c
+++ b/gst/mpegtsdemux/mpegtspacketizer.c
@@ -1994,6 +1994,7 @@ record_pcr (MpegTSPacketizer2 * packetizer, MpegTSPCR * pcrtable,
* Initialize current to that group
*/
GST_DEBUG ("No current window estimator, Checking for group to use");
+create_new_group:
for (tmp = pcrtable->groups; tmp; tmp = tmp->next) {
PCROffsetGroup *group = (PCROffsetGroup *) tmp->data;
@@ -2066,6 +2067,15 @@ record_pcr (MpegTSPacketizer2 * packetizer, MpegTSPCR * pcrtable,
if (G_UNLIKELY (corpcr - current->pending[current->last].pcr >
500 * PCR_MSECOND)) {
GST_DEBUG ("New PCR more than 500ms away, handling discont");
+
+#if 1
+ /**
+ * Create new discont group instead of reusing the current, otherwise
+ * it will try to handle the gap by just adding 500ms to pcroffset.
+ */
+ _close_current_group (pcrtable);
+ goto create_new_group;
+#else
/* Take values from current and put them in the current group (closing it) */
/* Create new group with pcr/offset just after the current group
* and mark it as a discont */
@@ -2073,6 +2083,7 @@ record_pcr (MpegTSPacketizer2 * packetizer, MpegTSPCR * pcrtable,
_append_group_values (current->group, current->pending[current->last]);
_set_current_group (pcrtable, current->group, pcr, offset, TRUE);
return;
+#endif
}
if (G_UNLIKELY (corpcr == current->last_value.pcr)) {
--
2.20.1