mirror of https://github.com/mpv-player/mpv
sub: add option to not scale subtitles with window
--sub-scale-by-window=no attempts to keep subs always at the same pixel size. The implementation is a bit all over the place, because it compensates already done scaling by an inverse scale factor, but it will probably do its job. Fixes #1424. (The semantics and name of --sub-scale-with-window are kept, and this adds a new option - the name is confusingly similar, but it's actually analogue to --osd-scale-by-window.)
This commit is contained in:
parent
2ab259e683
commit
067bb9605c
|
@ -1123,12 +1123,23 @@ Subtitles
|
|||
This affects ASS subtitles as well, and may lead to incorrect subtitle
|
||||
rendering. Use with care, or use ``--sub-text-font-size`` instead.
|
||||
|
||||
``--sub-scale-by-window=<yes|no>``
|
||||
Whether to scale subtitles with the window size (default: yes). If this is
|
||||
disabled, changing the window size won't change the subtitle font size.
|
||||
|
||||
Like ``--sub-scale``, this can break ASS subtitles.
|
||||
|
||||
``--sub-scale-with-window=<yes|no>``
|
||||
Make the subtitle font size relative to the window, instead of the video.
|
||||
This is useful if you always want the same font size, even if the video
|
||||
doesn't covert the window fully, e.g. because screen aspect and window
|
||||
aspect mismatch (and the player adds black bars).
|
||||
|
||||
This option is misnamed. The difference to the confusingly similar sounding
|
||||
option ``--sub-scale-by-window`` is that ``--sub-scale-with-window`` still
|
||||
scales with the approximate window size, while the other option disables
|
||||
this scaling.
|
||||
|
||||
Like ``--sub-scale``, this can break ASS subtitles.
|
||||
|
||||
``--embeddedfonts``, ``--no-embeddedfonts``
|
||||
|
|
|
@ -347,6 +347,7 @@ const m_option_t mp_opts[] = {
|
|||
({"simple", 0}, {"complex", 1})),
|
||||
OPT_CHOICE("ass-style-override", ass_style_override, 0,
|
||||
({"no", 0}, {"yes", 1}, {"force", 3}, {"signfs", 4})),
|
||||
OPT_FLAG("sub-scale-by-window", sub_scale_by_window, 0),
|
||||
OPT_FLAG("sub-scale-with-window", sub_scale_with_window, 0),
|
||||
OPT_FLAG("osd-bar", osd_bar_visible, 0),
|
||||
OPT_FLOATRANGE("osd-bar-align-x", osd_bar_align_x, 0, -1.0, +1.0),
|
||||
|
@ -699,6 +700,7 @@ const struct MPOpts mp_default_opts = {
|
|||
.osd_bar_h = 3.125,
|
||||
.osd_scale = 1,
|
||||
.osd_scale_by_window = 1,
|
||||
.sub_scale_by_window = 1,
|
||||
.use_text_osd = 1,
|
||||
#if HAVE_LUA
|
||||
.lua_load_osc = 1,
|
||||
|
|
|
@ -235,6 +235,8 @@ typedef struct MPOpts {
|
|||
float osd_bar_h;
|
||||
float osd_scale;
|
||||
int osd_scale_by_window;
|
||||
int sub_scale_by_window;
|
||||
int sub_scale_with_window;
|
||||
struct osd_style_opts *osd_style;
|
||||
struct osd_style_opts *sub_text_style;
|
||||
float sub_scale;
|
||||
|
@ -252,7 +254,6 @@ typedef struct MPOpts {
|
|||
int ass_style_override;
|
||||
int ass_hinting;
|
||||
int ass_shaper;
|
||||
int sub_scale_with_window;
|
||||
int sub_clear_on_seek;
|
||||
|
||||
int hwdec_api;
|
||||
|
|
|
@ -146,6 +146,11 @@ void mp_ass_configure(ASS_Renderer *priv, struct MPOpts *opts,
|
|||
int vidh = dim->h - (dim->mt + dim->mb);
|
||||
set_font_scale *= dim->h / (float)MPMAX(vidh, 1);
|
||||
}
|
||||
if (!opts->sub_scale_by_window) {
|
||||
double factor = dim->h / 720.0;
|
||||
if (factor != 0.0)
|
||||
set_font_scale /= factor;
|
||||
}
|
||||
}
|
||||
|
||||
ass_set_use_margins(priv, set_use_margins);
|
||||
|
|
Loading…
Reference in New Issue