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