From 0a52de57d7ba51b7611eff3734a069f69d27c4e4 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 2 Feb 2006 11:59:27 +0000 Subject: [PATCH] gst/gstsegment.c: No reason to refuse to clip when start == -1 Original commit message from CVS: * gst/gstsegment.c: (gst_segment_clip): No reason to refuse to clip when start == -1 --- ChangeLog | 5 +++++ gst/gstsegment.c | 23 +++++++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 46dcc4ddd9..55823eb580 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-02-02 Wim Taymans + + * gst/gstsegment.c: (gst_segment_clip): + No reason to refuse to clip when start == -1 + 2006-02-02 Stefan Kost * docs/README: diff --git a/gst/gstsegment.c b/gst/gstsegment.c index 23e252b4a7..843400a94d 100644 --- a/gst/gstsegment.c +++ b/gst/gstsegment.c @@ -414,6 +414,8 @@ gst_segment_set_newsegment (GstSegment * segment, gboolean update, gdouble rate, * * This function is typically used by elements that need to operate on * the stream time of the buffers it receives, such as effect plugins. + * The stream time is always between 0 and the total duration of the + * media stream. * * Returns: the position in stream_time. */ @@ -451,7 +453,8 @@ gst_segment_to_stream_time (GstSegment * segment, GstFormat format, * segment. * * This function is typically used by elements that need to synchronize to the - * global clock in a pipeline. + * global clock in a pipeline. The runnning time is a constantly increasing value + * starting from 0. * * Returns: the position as the total running time. */ @@ -502,13 +505,9 @@ gst_segment_clip (GstSegment * segment, GstFormat format, gint64 start, else g_return_val_if_fail (segment->format == format, FALSE); - /* we need a valid start position */ - if (start == -1) - return FALSE; - - /* if we have a stop position and start is bigger, we're - * outside of the segment */ - if (segment->stop != -1 && start >= segment->stop) + /* if we have a stop position and a valid start and start is bigger, + * we're outside of the segment */ + if (segment->stop != -1 && start != -1 && start >= segment->stop) return FALSE; /* if a stop position is given and is before the segment start, @@ -516,8 +515,12 @@ gst_segment_clip (GstSegment * segment, GstFormat format, gint64 start, if (stop != -1 && stop <= segment->start) return FALSE; - if (clip_start) - *clip_start = MAX (start, segment->start); + if (clip_start) { + if (start == -1) + *clip_start = -1; + else + *clip_start = MAX (start, segment->start); + } if (clip_stop) { if (stop == -1)