From 03031037fafd2d535bbefb1fdf6024b5d1159043 Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Tue, 5 Aug 2014 17:13:13 +0200 Subject: [PATCH] tsdemux: Do not tweak segments on reverse playback We can't compare the first buffer start and the segment start in that case... playback is going backward! https://bugzilla.gnome.org/show_bug.cgi?id=734445 --- gst/mpegtsdemux/tsdemux.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c index af54a3e550..3cb63c0b22 100644 --- a/gst/mpegtsdemux/tsdemux.c +++ b/gst/mpegtsdemux/tsdemux.c @@ -1965,10 +1965,13 @@ calculate_and_push_newsegment (GstTSDemux * demux, TSDemuxStream * stream) } } else if (demux->segment.start < firstts) { /* Take into account the offset to the first buffer timestamp */ - if (GST_CLOCK_TIME_IS_VALID (demux->segment.stop)) - demux->segment.stop += firstts - demux->segment.start; - demux->segment.position = firstts; - demux->segment.start = firstts; + if (demux->segment.rate > 0) { + demux->segment.start = firstts; + + if (GST_CLOCK_TIME_IS_VALID (demux->segment.stop) ) + demux->segment.stop += firstts - demux->segment.start; + demux->segment.position = firstts; + } } if (!demux->segment_event) {