summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libmpcodecs/vf_ass.c6
-rw-r--r--libmpcodecs/vf_vo.c8
-rw-r--r--sub/ass_mp.c6
-rw-r--r--sub/ass_mp.h3
4 files changed, 13 insertions, 10 deletions
diff --git a/libmpcodecs/vf_ass.c b/libmpcodecs/vf_ass.c
index a3a47f6b9e..76a08807e7 100644
--- a/libmpcodecs/vf_ass.c
+++ b/libmpcodecs/vf_ass.c
@@ -362,7 +362,11 @@ static int put_image(struct vf_instance *vf, mp_image_t *mpi, double pts)
vf->priv->renderer_vsfilter : vf->priv->renderer_realaspect;
if (sub_visibility && renderer && osd->ass_track
&& (pts != MP_NOPTS_VALUE)) {
- mp_ass_reload_options(renderer, vf->opts, &osd->ass_force_reload);
+ if (osd->ass_force_reload) {
+ mp_ass_reload_options(vf->priv->renderer_realaspect, vf->opts);
+ mp_ass_reload_options(vf->priv->renderer_vsfilter, vf->opts);
+ }
+ osd->ass_force_reload = false;
images = ass_render_frame(renderer, osd->ass_track,
(pts + sub_delay) * 1000 + .5, NULL);
}
diff --git a/libmpcodecs/vf_vo.c b/libmpcodecs/vf_vo.c
index 8f2f541fb4..62ec64ef3f 100644
--- a/libmpcodecs/vf_vo.c
+++ b/libmpcodecs/vf_vo.c
@@ -175,12 +175,16 @@ static int control(struct vf_instance *vf, int request, void* data)
ass_set_aspect_ratio(renderer, scale, 1);
}
- mp_ass_reload_options(renderer, vf->opts, &osd->ass_force_reload);
+ if (osd->ass_force_reload) {
+ mp_ass_reload_options(vf->priv->renderer_realaspect, vf->opts);
+ mp_ass_reload_options(vf->priv->renderer_vsfilter, vf->opts);
+ }
images.imgs = ass_render_frame(renderer, osd->ass_track,
(pts+sub_delay) * 1000 + .5,
&images.changed);
- if (!vf->priv->prev_visibility)
+ if (!vf->priv->prev_visibility || osd->ass_force_reload)
images.changed = 2;
+ osd->ass_force_reload = false;
vf->priv->prev_visibility = true;
} else
vf->priv->prev_visibility = false;
diff --git a/sub/ass_mp.c b/sub/ass_mp.c
index 312a35a4a6..6fd50342c3 100644
--- a/sub/ass_mp.c
+++ b/sub/ass_mp.c
@@ -316,16 +316,12 @@ ASS_Library *mp_ass_init(void)
return priv;
}
-void mp_ass_reload_options(ASS_Renderer *priv, struct MPOpts *opts,
- bool *need_reload)
+void mp_ass_reload_options(ASS_Renderer *priv, struct MPOpts *opts)
{
- if (!*need_reload)
- return;
/* This could be needed for vf_ass case if the margins were actually
* runtime configurable, but would be wrong with EOSD:
* 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);
- *need_reload = false;
}
diff --git a/sub/ass_mp.h b/sub/ass_mp.h
index 02c55c8a12..5658f4f8c1 100644
--- a/sub/ass_mp.h
+++ b/sub/ass_mp.h
@@ -52,8 +52,7 @@ void mp_ass_configure(ASS_Renderer *priv, int w, int h, bool unscaled);
void mp_ass_configure_fonts(ASS_Renderer *priv);
ASS_Library *mp_ass_init(void);
-void mp_ass_reload_options(ASS_Renderer *priv, struct MPOpts *opts,
- bool *need_reload);
+void mp_ass_reload_options(ASS_Renderer *priv, struct MPOpts *opts);
#else /* CONFIG_ASS */