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
This commit is contained in:
Nicolas Dufresne 2013-03-30 11:06:59 +00:00 committed by Wim Taymans
parent a45d8c9d00
commit c697912fcb

View file

@ -309,6 +309,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);
}