diff --git a/sub/sd_ass.c b/sub/sd_ass.c index 8a99c35ff2..9983f74682 100644 --- a/sub/sd_ass.c +++ b/sub/sd_ass.c @@ -550,12 +550,13 @@ static void configure_ass(struct sd *sd, struct mp_osd_res *dim, if (override_playres) { int vidw = dim->w - (dim->ml + dim->mr); int vidh = dim->h - (dim->mt + dim->mb); + int old_playresx = track->PlayResX; track->PlayResX = track->PlayResY * (double)vidw / MPMAX(vidh, 1); - // ffmpeg and mpv use a default PlayResX of 384 when it is not known, - // this comes from VSFilter. - double fix_margins = track->PlayResX / (double)MP_ASS_FONT_PLAYRESX; - track->styles->MarginL = round(track->styles->MarginL * fix_margins); - track->styles->MarginR = round(track->styles->MarginR * fix_margins); + double fix_margins = track->PlayResX / (double)old_playresx; + for (int n = 0; n < track->n_styles; n++) { + track->styles[n].MarginL = round(track->styles[n].MarginL * fix_margins); + track->styles[n].MarginR = round(track->styles[n].MarginR * fix_margins); + } } } }