summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/assrender/gstassrender.c7
-rw-r--r--ext/assrender/gstassrender.h1
2 files changed, 7 insertions, 1 deletions
diff --git a/ext/assrender/gstassrender.c b/ext/assrender/gstassrender.c
index bd02e3480..474e7f7ed 100644
--- a/ext/assrender/gstassrender.c
+++ b/ext/assrender/gstassrender.c
@@ -651,7 +651,8 @@ gst_ass_render_setcaps_video (GstPad * pad, GstCaps * caps)
render->height = 0;
if (!gst_video_format_parse_caps (caps, &render->format, &render->width,
- &render->height)) {
+ &render->height) ||
+ !gst_video_parse_caps_framerate (caps, &render->fps_n, &render->fps_d)) {
GST_ERROR_OBJECT (render, "Can't parse caps: %" GST_PTR_FORMAT, caps);
ret = FALSE;
goto out;
@@ -963,6 +964,10 @@ gst_ass_render_chain_text (GstPad * pad, GstBuffer * buffer)
gst_segment_to_running_time (&render->video_segment, GST_FORMAT_TIME,
render->video_segment.last_stop);
+ if (render->fps_n && render->fps_d)
+ vid_running_time +=
+ gst_util_uint64_scale (GST_SECOND, render->fps_d, render->fps_n);
+
if (sub_running_time > vid_running_time) {
g_assert (render->subtitle_pending == NULL);
g_mutex_lock (render->subtitle_mutex);
diff --git a/ext/assrender/gstassrender.h b/ext/assrender/gstassrender.h
index c680dc5ae..e49b080c0 100644
--- a/ext/assrender/gstassrender.h
+++ b/ext/assrender/gstassrender.h
@@ -55,6 +55,7 @@ struct _GstAssRender
GstVideoFormat format;
gint width, height;
+ gint fps_n, fps_d;
GstAssRenderBlitFunction blit;
GMutex *subtitle_mutex;