From 00cce8eb303195eb779a5bedbe38d52d3adb61dd Mon Sep 17 00:00:00 2001 From: eugeni Date: Wed, 23 Jan 2008 21:18:30 +0000 Subject: [PATCH] Add global ass_force_reload flag. If it is set, renderer is reconfigured before the next frame. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25841 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libass/ass_mp.c | 12 ++++++++++++ libass/ass_mp.h | 3 +++ libmpcodecs/vf_ass.c | 2 +- libmpcodecs/vf_vo.c | 2 +- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/libass/ass_mp.c b/libass/ass_mp.c index a00f0cae66..b3b3963eef 100644 --- a/libass/ass_mp.c +++ b/libass/ass_mp.c @@ -259,3 +259,15 @@ ass_library_t* ass_init(void) { free(path); return priv; } + +int ass_force_reload = 0; // flag set if global ass-related settings were changed + +ass_image_t* ass_mp_render_frame(ass_renderer_t *priv, ass_track_t* track, long long now, int* detect_change) { + if (ass_force_reload) { + ass_set_margins(priv, ass_top_margin, ass_bottom_margin, 0, 0); + ass_set_use_margins(priv, ass_use_margins); + ass_set_font_scale(priv, ass_font_scale); + ass_force_reload = 0; + } + return ass_render_frame(priv, track, now, detect_change); +} diff --git a/libass/ass_mp.h b/libass/ass_mp.h index 1395b45f9d..47e3f2787a 100644 --- a/libass/ass_mp.h +++ b/libass/ass_mp.h @@ -50,4 +50,7 @@ typedef struct { int changed; } mp_eosd_images_t; +extern int ass_force_reload; +ass_image_t* ass_mp_render_frame(ass_renderer_t *priv, ass_track_t* track, long long now, int* detect_change); + #endif /* ASS_MP_H */ diff --git a/libmpcodecs/vf_ass.c b/libmpcodecs/vf_ass.c index 9f4c91961a..a04f0e557a 100644 --- a/libmpcodecs/vf_ass.c +++ b/libmpcodecs/vf_ass.c @@ -326,7 +326,7 @@ static int put_image(struct vf_instance_s* vf, mp_image_t *mpi, double pts) { ass_image_t* images = 0; if (sub_visibility && vf->priv->ass_priv && ass_track && (pts != MP_NOPTS_VALUE)) - images = ass_render_frame(vf->priv->ass_priv, ass_track, (pts+sub_delay) * 1000 + .5, NULL); + images = ass_mp_render_frame(vf->priv->ass_priv, ass_track, (pts+sub_delay) * 1000 + .5, NULL); prepare_image(vf, mpi); if (images) render_frame(vf, mpi, images); diff --git a/libmpcodecs/vf_vo.c b/libmpcodecs/vf_vo.c index 8dff24eab0..f0daa59e62 100644 --- a/libmpcodecs/vf_vo.c +++ b/libmpcodecs/vf_vo.c @@ -134,7 +134,7 @@ static int control(struct vf_instance_s* vf, int request, void* data) ass_set_aspect_ratio(vf->priv->ass_priv, (double)res.w / res.h); } - images.imgs = ass_render_frame(vf->priv->ass_priv, ass_track, (pts+sub_delay) * 1000 + .5, &images.changed); + images.imgs = ass_mp_render_frame(vf->priv->ass_priv, ass_track, (pts+sub_delay) * 1000 + .5, &images.changed); if (!vf->priv->prev_visibility) images.changed = 2; vf->priv->prev_visibility = 1;