diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-11-05 16:44:09 +0100 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-11-05 17:07:04 +0100 |
commit | 8feed39593753646bfffcc426d7edb0f9d1997a0 (patch) | |
tree | 6ce5034c398e3c6fca25788b9b1d56f5cf094257 | |
parent | 06a79e9263d0b0062625374123b479032cd1da15 (diff) |
assrender: Keep track of the subtitle segments
-rw-r--r-- | ext/assrender/gstassrender.c | 26 | ||||
-rw-r--r-- | ext/assrender/gstassrender.h | 1 |
2 files changed, 25 insertions, 2 deletions
diff --git a/ext/assrender/gstassrender.c b/ext/assrender/gstassrender.c index 97d86d5a5..89aa1b672 100644 --- a/ext/assrender/gstassrender.c +++ b/ext/assrender/gstassrender.c @@ -764,8 +764,30 @@ gst_assrender_event_text (GstPad * pad, GstEvent * event) switch (GST_EVENT_TYPE (event)) { case GST_EVENT_NEWSEGMENT: { - gst_event_unref (event); - ret = TRUE; + GstFormat format; + gdouble rate; + gint64 start, stop, time; + gboolean update; + + GST_DEBUG_OBJECT (render, "received new segment"); + + gst_event_parse_new_segment (event, &update, &rate, &format, &start, + &stop, &time); + + if (format == GST_FORMAT_TIME) { + GST_DEBUG_OBJECT (render, "SUBTITLE SEGMENT now: %" GST_SEGMENT_FORMAT, + &render->subtitle_segment); + + gst_segment_set_newsegment (&render->subtitle_segment, update, rate, + format, start, stop, time); + ret = TRUE; + gst_event_unref (event); + } else { + GST_ELEMENT_WARNING (render, STREAM, MUX, (NULL), + ("received non-TIME newsegment event on subtitle input")); + ret = FALSE; + gst_event_unref (event); + } break; } case GST_EVENT_FLUSH_STOP: diff --git a/ext/assrender/gstassrender.h b/ext/assrender/gstassrender.h index 0a91f4c75..1c46e6493 100644 --- a/ext/assrender/gstassrender.h +++ b/ext/assrender/gstassrender.h @@ -56,6 +56,7 @@ struct _Gstassrender GCond *subtitle_cond; GstBuffer *subtitle_pending; gboolean subtitle_flushing; + GstSegment subtitle_segment; ASS_Library *ass_library; ASS_Renderer *ass_renderer; |