From: Sebastian Dröge Date: Fri, 26 Feb 2010 17:06:24 +0000 (+0100) Subject: assrender: Drop text buffers before the segment start and clip running time end to... X-Git-Tag: 1.19.3~507^2~17390 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=852be755dde44bbb6a9d276a16915d521ee8e2df;p=platform%2Fupstream%2Fgstreamer.git assrender: Drop text buffers before the segment start and clip running time end to the segment stop --- diff --git a/ext/assrender/gstassrender.c b/ext/assrender/gstassrender.c index 8a5603e..73901c0 100644 --- a/ext/assrender/gstassrender.c +++ b/ext/assrender/gstassrender.c @@ -1066,6 +1066,8 @@ gst_ass_render_chain_text (GstPad * pad, GstBuffer * buffer) GstClockTime timestamp, duration; GstClockTime sub_running_time, vid_running_time; GstClockTime sub_running_time_end; + gint64 cstart, cstop; + gboolean in_seg; if (render->subtitle_flushing) { gst_buffer_unref (buffer); @@ -1083,6 +1085,21 @@ gst_ass_render_chain_text (GstPad * pad, GstBuffer * buffer) return GST_FLOW_OK; } + in_seg = + gst_segment_clip (&render->subtitle_segment, GST_FORMAT_TIME, timestamp, + timestamp + duration, &cstart, &cstop); + if (!in_seg) { + GST_DEBUG_OBJECT (render, + "Text buffer before segment start (%" GST_TIME_FORMAT " < %" + GST_TIME_FORMAT ")", GST_TIME_ARGS (timestamp), + GST_TIME_ARGS (render->subtitle_segment.start)); + gst_buffer_unref (buffer); + return GST_FLOW_OK; + } + + GST_BUFFER_TIMESTAMP (buffer) = timestamp = cstart; + GST_BUFFER_DURATION (buffer) = duration = cstop - cstart; + gst_segment_set_last_stop (&render->subtitle_segment, GST_FORMAT_TIME, GST_BUFFER_TIMESTAMP (buffer));