From 8ed8d5e41484522276ed54afba211d5f8e855879 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Fri, 6 Nov 2009 09:30:38 +0100 Subject: [PATCH] textoverlay: Clip text buffers to the text segment and reset segments properly --- ext/pango/gsttextoverlay.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ext/pango/gsttextoverlay.c b/ext/pango/gsttextoverlay.c index a7ac571ab0..ea9f106aef 100644 --- a/ext/pango/gsttextoverlay.c +++ b/ext/pango/gsttextoverlay.c @@ -1737,6 +1737,7 @@ gst_text_overlay_text_event (GstPad * pad, GstEvent * event) overlay->text_flushing = FALSE; overlay->text_eos = FALSE; gst_text_overlay_pop_text (overlay); + gst_segment_init (&overlay->text_segment, GST_FORMAT_TIME); GST_OBJECT_UNLOCK (overlay); gst_event_unref (event); ret = TRUE; @@ -1828,6 +1829,7 @@ gst_text_overlay_video_event (GstPad * pad, GstEvent * event) GST_INFO_OBJECT (overlay, "video flush stop"); overlay->video_flushing = FALSE; overlay->video_eos = FALSE; + gst_segment_init (&overlay->segment, GST_FORMAT_TIME); GST_OBJECT_UNLOCK (overlay); ret = gst_pad_event_default (pad, event); break; @@ -1911,7 +1913,7 @@ gst_text_overlay_text_chain (GstPad * pad, GstBuffer * buffer) else stop = GST_CLOCK_TIME_NONE; - in_seg = gst_segment_clip (&overlay->segment, GST_FORMAT_TIME, + in_seg = gst_segment_clip (&overlay->text_segment, GST_FORMAT_TIME, GST_BUFFER_TIMESTAMP (buffer), stop, &clip_start, &clip_stop); } else { in_seg = TRUE; @@ -1936,6 +1938,10 @@ gst_text_overlay_text_chain (GstPad * pad, GstBuffer * buffer) } } + if (GST_BUFFER_TIMESTAMP_IS_VALID (buffer)) + gst_segment_set_last_stop (&overlay->text_segment, GST_FORMAT_TIME, + clip_start); + overlay->text_buffer = buffer; /* That's a new text buffer we need to render */ overlay->need_render = TRUE; @@ -2250,6 +2256,8 @@ gst_text_overlay_change_state (GstElement * element, GstStateChange transition) overlay->video_flushing = FALSE; overlay->video_eos = FALSE; overlay->text_eos = FALSE; + gst_segment_init (&overlay->segment, GST_FORMAT_TIME); + gst_segment_init (&overlay->text_segment, GST_FORMAT_TIME); GST_OBJECT_UNLOCK (overlay); break; default: