From 1dd94be32659fd8afb03091742c84b0d0c62ba7f Mon Sep 17 00:00:00 2001 From: Vincent Penquerc'h Date: Wed, 6 May 2015 15:17:24 +0100 Subject: [PATCH] tsdemux: fix buffer timestamp not being in stream time Timestamps should start at the segment start, rather than 0, so we need to not subtract the first timestamp. This makes the sink correctly account for running time when switching PMTs where a stream starts not quite at zero, causing timing offsets that can become noticeable and causing dropped frames after a few times. --- gst/mpegtsdemux/tsdemux.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c index 4f05672488..52ed207d50 100644 --- a/gst/mpegtsdemux/tsdemux.c +++ b/gst/mpegtsdemux/tsdemux.c @@ -2245,9 +2245,9 @@ gst_ts_demux_push_pending_data (GstTSDemux * demux, TSDemuxStream * stream) stream->discont = FALSE; if (GST_CLOCK_TIME_IS_VALID (GST_BUFFER_DTS (buffer))) - demux->segment.position = GST_BUFFER_DTS (buffer) - stream->first_dts; + demux->segment.position = GST_BUFFER_DTS (buffer); else if (GST_CLOCK_TIME_IS_VALID (GST_BUFFER_PTS (buffer))) - demux->segment.position = GST_BUFFER_PTS (buffer) - stream->first_dts; + demux->segment.position = GST_BUFFER_PTS (buffer); res = gst_pad_push (stream->pad, buffer); /* Record that a buffer was pushed */