[gst-cvs] gst-plugins-base: textoverlay: Check if text timestamp/ duration is valid before clipping
Sebastian Dröge
slomo at kemper.freedesktop.org
Fri Nov 6 03:11:42 PST 2009
Module: gst-plugins-base
Branch: master
Commit: 8692174b5040505554869e1ff3e97f5fdcd5925b
URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=8692174b5040505554869e1ff3e97f5fdcd5925b
Author: Sebastian Dröge <sebastian.droege at collabora.co.uk>
Date: Fri Nov 6 09:05:09 2009 +0100
textoverlay: Check if text timestamp/duration is valid before clipping
---
ext/pango/gsttextoverlay.c | 23 +++++++++++++++++------
1 files changed, 17 insertions(+), 6 deletions(-)
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) {
More information about the Gstreamer-commits
mailing list