diff options
Diffstat (limited to 'sub')
-rw-r--r-- | sub/dec_sub.h | 2 | ||||
-rw-r--r-- | sub/osd_libass.c | 1 | ||||
-rw-r--r-- | sub/sd_ass.c | 4 | ||||
-rw-r--r-- | sub/sub.c | 7 | ||||
-rw-r--r-- | sub/sub.h | 2 |
5 files changed, 8 insertions, 8 deletions
diff --git a/sub/dec_sub.h b/sub/dec_sub.h index 0c5c1ab7ee..389851503e 100644 --- a/sub/dec_sub.h +++ b/sub/dec_sub.h @@ -13,8 +13,6 @@ struct MPOpts *opts; struct sub_render_params { double pts; struct mp_eosd_res dim; - double normal_scale; - double vsfilter_scale; }; static inline bool is_text_sub(int type) diff --git a/sub/osd_libass.c b/sub/osd_libass.c index d77c0d1af2..a182c6bdf2 100644 --- a/sub/osd_libass.c +++ b/sub/osd_libass.c @@ -283,6 +283,7 @@ void osd_object_get_bitmaps(struct osd_state *osd, struct osd_object *obj, return; ass_set_frame_size(osd->osd_render, osd->res.w, osd->res.h); + ass_set_aspect_ratio(osd->osd_render, osd->res.display_par, 1.0); mp_ass_render_frame(osd->osd_render, obj->osd_track, 0, &obj->parts_cache, out_imgs); talloc_steal(obj, obj->parts_cache); diff --git a/sub/sd_ass.c b/sub/sd_ass.c index a5e23d74da..7926820ece 100644 --- a/sub/sd_ass.c +++ b/sub/sd_ass.c @@ -137,11 +137,11 @@ static void get_bitmaps(struct sh_sub *sh, struct osd_state *osd, if (params->pts == MP_NOPTS_VALUE) return; - double scale = params->normal_scale; + double scale = params->dim.display_par; bool use_vs_aspect = opts->ass_style_override ? opts->ass_vsfilter_aspect_compat : 1; if (ctx->vsfilter_aspect && use_vs_aspect) - scale = params->vsfilter_scale; + scale = scale * params->dim.video_par; ASS_Renderer *renderer = osd->ass_renderer; mp_ass_configure(renderer, opts, ¶ms->dim); ass_set_aspect_ratio(renderer, scale, 1); @@ -270,15 +270,14 @@ void draw_osd_with_eosd(struct vo *vo, struct osd_state *osd) formats[n] = vo_control(vo, VOCTRL_QUERY_EOSD_FORMAT, &data) == VO_TRUE; } - osd_update_ext(osd, dim); + dim.display_par = vo->monitor_par; + dim.video_par = vo->aspdat.par; - struct aspect_data asp = vo->aspdat; + osd_update_ext(osd, dim); struct sub_render_params subparams = { .pts = osd->vo_sub_pts, .dim = dim, - .normal_scale = 1, - .vsfilter_scale = (double) asp.prew / asp.preh * asp.orgh / asp.orgw, }; for (int n = 0; n < MAX_OSD_PARTS; n++) { @@ -82,6 +82,8 @@ struct sub_bitmaps { struct mp_eosd_res { int w, h; // screen dimensions, including black borders int mt, mb, ml, mr; // borders (top, bottom, left, right) + double display_par; + double video_par; // PAR of the original video (for some sub decoders) }; enum mp_osdtype { |