From 8feed39593753646bfffcc426d7edb0f9d1997a0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 5 Nov 2009 16:44:09 +0100 Subject: [PATCH] assrender: Keep track of the subtitle segments --- ext/assrender/gstassrender.c | 26 ++++++++++++++++++++++++-- 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 97d86d5..89aa1b6 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 0a91f4c..1c46e64 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; -- 2.7.4