summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2012-10-25 12:06:15 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2012-10-25 14:05:49 +0200
commit4dd39a3856fd1f4c54d0c9f0dfdd26ae76ed9373 (patch)
treec25c6debd9c1c2b009a8d4f5c8725415f70dea4f
parente0026d72036ccffbbcb1eaab53df8ddb5e4446ed (diff)
assrender: Handle GAP events
-rw-r--r--ext/assrender/gstassrender.c17
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");