diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2012-10-25 12:06:15 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2012-10-25 14:05:49 +0200 |
commit | 4dd39a3856fd1f4c54d0c9f0dfdd26ae76ed9373 (patch) | |
tree | c25c6debd9c1c2b009a8d4f5c8725415f70dea4f | |
parent | e0026d72036ccffbbcb1eaab53df8ddb5e4446ed (diff) |
assrender: Handle GAP events
-rw-r--r-- | ext/assrender/gstassrender.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/ext/assrender/gstassrender.c b/ext/assrender/gstassrender.c index 233733b06..b471b87e1 100644 --- a/ext/assrender/gstassrender.c +++ b/ext/assrender/gstassrender.c @@ -1540,6 +1540,23 @@ gst_ass_render_event_text (GstPad * pad, GstObject * parent, GstEvent * event) GST_ASS_RENDER_UNLOCK (render); break; } + case GST_EVENT_GAP:{ + GstClockTime start, duration; + + gst_event_parse_gap (event, &start, &duration); + if (GST_CLOCK_TIME_IS_VALID (duration)) + start += duration; + /* we do not expect another buffer until after gap, + * so that is our position now */ + GST_ASS_RENDER_LOCK (render); + render->subtitle_segment.position = start; + + /* wake up the video chain, it might be waiting for a text buffer or + * a text segment update */ + GST_ASS_RENDER_BROADCAST (render); + GST_ASS_RENDER_UNLOCK (render); + break; + } case GST_EVENT_FLUSH_STOP: GST_ASS_RENDER_LOCK (render); GST_INFO_OBJECT (render, "text flush stop"); |