From: Sebastian Dröge Date: Fri, 6 Nov 2009 08:05:09 +0000 (+0100) Subject: textoverlay: Check if text timestamp/duration is valid before clipping X-Git-Tag: RELEASE-0.10.26~232 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8692174b5040505554869e1ff3e97f5fdcd5925b;p=platform%2Fupstream%2Fgst-plugins-base.git textoverlay: Check if text timestamp/duration is valid before clipping --- diff --git a/ext/pango/gsttextoverlay.c b/ext/pango/gsttextoverlay.c index 51c9078..e2bb4ea 100644 --- a/ext/pango/gsttextoverlay.c +++ b/ext/pango/gsttextoverlay.c @@ -1914,14 +1914,25 @@ gst_text_overlay_text_chain (GstPad * pad, GstBuffer * buffer) GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer) + GST_BUFFER_DURATION (buffer))); - in_seg = gst_segment_clip (overlay->segment, GST_FORMAT_TIME, - GST_BUFFER_TIMESTAMP (buffer), - GST_BUFFER_TIMESTAMP (buffer) + GST_BUFFER_DURATION (buffer), - &clip_start, &clip_stop); + if (G_LIKELY (GST_BUFFER_TIMESTAMP_IS_VALID (buffer))) { + GstClockTime stop; + + if (G_LIKELY (GST_BUFFER_DURATION_IS_VALID (buffer))) + stop = GST_BUFFER_TIMESTAMP (buffer) + GST_BUFFER_DURATION (buffer); + else + stop = GST_CLOCK_TIME_NONE; + + in_seg = gst_segment_clip (overlay->segment, GST_FORMAT_TIME, + GST_BUFFER_TIMESTAMP (buffer), stop, &clip_start, &clip_stop); + } else { + in_seg = TRUE; + } if (in_seg) { - GST_BUFFER_TIMESTAMP (buffer) = clip_start; - GST_BUFFER_DURATION (buffer) = clip_stop - clip_start; + if (GST_BUFFER_TIMESTAMP_IS_VALID (buffer)) + GST_BUFFER_TIMESTAMP (buffer) = clip_start; + else if (GST_BUFFER_DURATION_IS_VALID (buffer)) + GST_BUFFER_DURATION (buffer) = clip_stop - clip_start; /* Wait for the previous buffer to go away */ while (overlay->text_buffer != NULL) {