diff options
author | llyyr <llyyr.public@gmail.com> | 2023-09-20 17:11:37 +0530 |
---|---|---|
committer | Dudemanguy <random342@airmail.cc> | 2023-09-21 14:40:11 +0000 |
commit | e95958f5b34c614cede001468f629d5566ccf59e (patch) | |
tree | a1f5edcc903b6f3becd36962009eafa9db93f5c1 /sub | |
parent | e125da2096d97ec7e64701bf6289705a24c31729 (diff) | |
download | mpv-e95958f5b34c614cede001468f629d5566ccf59e.tar.bz2 mpv-e95958f5b34c614cede001468f629d5566ccf59e.tar.xz |
sd_ass: use directive instead of writing magic constants
Also improve comment about the assumed PlayResX and PlayResY
Diffstat (limited to 'sub')
-rw-r--r-- | sub/ass_mp.h | 6 | ||||
-rw-r--r-- | sub/sd_ass.c | 10 |
2 files changed, 9 insertions, 7 deletions
diff --git a/sub/ass_mp.h b/sub/ass_mp.h index 3dd2bf66aa..e581f939e8 100644 --- a/sub/ass_mp.h +++ b/sub/ass_mp.h @@ -26,8 +26,10 @@ #include <ass/ass.h> #include <ass/ass_types.h> -// This is probably arbitrary. -// sd_lavc_conv might indirectly still assume this PlayResY, though. +// These PlayResX and PlayResY values are arbitrary and taken from lavc. +// lavc assumes these values when converting to ass generally. Moreover, these +// values are also used by default in VSFilter, so it isn't that arbitrary. +#define MP_ASS_FONT_PLAYRESX 384 #define MP_ASS_FONT_PLAYRESY 288 #define MP_ASS_RGBA(r, g, b, a) \ diff --git a/sub/sd_ass.c b/sub/sd_ass.c index 516553f20b..55f0d09edb 100644 --- a/sub/sd_ass.c +++ b/sub/sd_ass.c @@ -85,8 +85,8 @@ static void mp_ass_add_default_styles(ASS_Track *track, struct mp_subtitle_opts if (track->n_styles == 0) { if (!track->PlayResY) { + track->PlayResX = MP_ASS_FONT_PLAYRESX; track->PlayResY = MP_ASS_FONT_PLAYRESY; - track->PlayResX = track->PlayResY * 4 / 3; } track->Kerning = true; int sid = ass_alloc_style(track); @@ -220,8 +220,8 @@ static void assobjects_init(struct sd *sd) ctx->ass_track->track_type = TRACK_TYPE_ASS; ctx->shadow_track = ass_new_track(ctx->ass_library); - ctx->shadow_track->PlayResX = 384; - ctx->shadow_track->PlayResY = 288; + ctx->shadow_track->PlayResX = MP_ASS_FONT_PLAYRESX; + ctx->shadow_track->PlayResY = MP_ASS_FONT_PLAYRESY; mp_ass_add_default_styles(ctx->shadow_track, opts); char *extradata = sd->codec->extradata; @@ -436,7 +436,7 @@ static void configure_ass(struct sd *sd, struct mp_osd_res *dim, #endif ass_set_selective_style_override_enabled(priv, set_force_flags); ASS_Style style = {0}; - mp_ass_set_style(&style, 288, opts->sub_style); + mp_ass_set_style(&style, MP_ASS_FONT_PLAYRESY, opts->sub_style); ass_set_selective_style_override(priv, &style); free(style.FontName); if (converted && track->default_style < track->n_styles) { @@ -473,7 +473,7 @@ static void configure_ass(struct sd *sd, struct mp_osd_res *dim, 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 / 384.0; + 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); } |