From: <wt...@fr...> - 2005-10-25 10:16:00
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: wtay Date: Tue Oct 25 2005 03:15:57 PDT Log message: * gst/base/gstbasesink.c: (gst_base_sink_get_position): Don't use invalid stream_time. * gst/gstevent.c: (gst_event_new_newsegment): stream_time in newsegment cannot be undefined. Modified files: . : ChangeLog gst : gstevent.c gst/base : gstbasesink.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.1789&r2=1.1790 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstevent.c.diff?r1=1.80&r2=1.81 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/base/gstbasesink.c.diff?r1=1.81&r2=1.82 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.1789 retrieving revision 1.1790 diff -u -d -r1.1789 -r1.1790 --- ChangeLog 25 Oct 2005 10:12:13 -0000 1.1789 +++ ChangeLog 25 Oct 2005 10:15:45 -0000 1.1790 @@ -1,3 +1,11 @@ +2005-10-25 Wim Taymans <wi...@fl...> + + * gst/base/gstbasesink.c: (gst_base_sink_get_position): + Don't use invalid stream_time. + * gst/gstevent.c: (gst_event_new_newsegment): + stream_time in newsegment cannot be undefined. 2005-10-24 Wim Taymans <wi...@fl...> * gst/gstbus.c: Index: gstevent.c RCS file: /cvs/gstreamer/gstreamer/gst/gstevent.c,v retrieving revision 1.80 retrieving revision 1.81 diff -u -d -r1.80 -r1.81 --- gstevent.c 21 Oct 2005 11:36:31 -0000 1.80 +++ gstevent.c 25 Oct 2005 10:15:45 -0000 1.81 @@ -398,8 +398,9 @@ * used intelligently by plugins to use more efficient methods of skipping * unneeded packets. * - * The stream time of the segment is also used to convert the buffer timestamps - * into the stream time again. + * The stream time of the segment is used to convert the buffer timestamps + * into the stream time again, this is usually done in sinks to report the + * current stream_time. @stream_time cannot be -1. * The @start_value cannot be -1, the @stop_value can be -1. If there * is a valid @stop_value given, it must be greater or equal than @start_value. @@ -429,6 +430,9 @@ "start %lld, stop %lld, stream_time %lld", update, rate, format, start_value, stop_value, stream_time); } + if (stream_time == -1) + g_return_val_if_fail (stream_time != -1, NULL); if (start_value == -1) g_return_val_if_fail (start_value != -1, NULL); Index: gstbasesink.c RCS file: /cvs/gstreamer/gstreamer/gst/base/gstbasesink.c,v retrieving revision 1.82 diff -u -d -r1.81 -r1.82 --- gstbasesink.c 23 Oct 2005 09:08:44 -0000 1.81 +++ gstbasesink.c 25 Oct 2005 10:15:45 -0000 1.82 @@ -1406,6 +1406,7 @@ GST_LOCK (basesink); if ((clock = GST_ELEMENT_CLOCK (basesink))) { GstClockTime now; + gint64 segment_time; gst_object_ref (clock); GST_UNLOCK (basesink); @@ -1413,14 +1414,17 @@ now = gst_clock_get_time (clock); GST_LOCK (basesink); - *cur = - now - GST_ELEMENT_CAST (basesink)->base_time + - basesink->segment_time; + if (GST_CLOCK_TIME_IS_VALID (basesink->segment_time)) + segment_time = basesink->segment_time; + else + segment_time = 0; + *cur = now - GST_ELEMENT_CAST (basesink)->base_time + segment_time; GST_DEBUG_OBJECT (basesink, "now %" GST_TIME_FORMAT " + segment_time %" GST_TIME_FORMAT " = %" GST_TIME_FORMAT, GST_TIME_ARGS (now), - GST_TIME_ARGS (basesink->segment_time), GST_TIME_ARGS (*cur)); + GST_TIME_ARGS (segment_time), GST_TIME_ARGS (*cur)); gst_object_unref (clock); |