From ab44e14c52555136738ff77aaad48b2eeea46ce6 Mon Sep 17 00:00:00 2001 From: Nicolas Dufresne Date: Sat, 30 Mar 2013 11:06:59 +0000 Subject: [PATCH] segment: Fix seeking when position is slightly outside the segment Very often, when the end of a segment is detected by demuxer, the position is slightly outside the segment boundaries. Currently, if that is the case the base will be set to NONE instead of normal accumulation. This would break non-flushing seeks in oggdemux and most likely other demuxers. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=696899 --- gst/gstsegment.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gst/gstsegment.c b/gst/gstsegment.c index 9890be5..e9f4bb8 100644 --- a/gst/gstsegment.c +++ b/gst/gstsegment.c @@ -311,6 +311,9 @@ gst_segment_do_seek (GstSegment * segment, gdouble rate, /* flush resets the running_time */ base = 0; } else { + /* make sure the position is inside the segment start/stop */ + position = CLAMP (position, segment->start, segment->stop); + /* remember the elapsed time */ base = gst_segment_to_running_time (segment, format, position); GST_DEBUG ("updated segment.base: %" G_GUINT64_FORMAT, base); -- 2.7.4