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
This commit is contained in:
Wim Taymans 2006-02-02 11:59:27 +00:00
parent 523041b533
commit 0a52de57d7
2 changed files with 18 additions and 10 deletions

View file

@ -1,3 +1,8 @@
2006-02-02 Wim Taymans <wim@fluendo.com>
* gst/gstsegment.c: (gst_segment_clip):
No reason to refuse to clip when start == -1
2006-02-02 Stefan Kost <ensonic@users.sf.net>
* docs/README:

View file

@ -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)
if (clip_start) {
if (start == -1)
*clip_start = -1;
else
*clip_start = MAX (start, segment->start);
}
if (clip_stop) {
if (stop == -1)