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.
This commit is contained in:
Vincent Penquerc'h 2015-05-06 15:17:24 +01:00
parent 4a219df304
commit 1dd94be326

View file

@ -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 */