From 72e505a944ac6b519d7a2348d63dd9a1fd2fe2a2 Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 24 Apr 2015 22:52:01 +0200 Subject: player: add --window-scale option Requested. Works similar to the property with the same name. --- DOCS/man/options.rst | 8 ++++++++ options/options.c | 2 ++ options/options.h | 1 + video/out/win_state.c | 2 ++ 4 files changed, 13 insertions(+) diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst index b9c423e053..f35a73b92d 100644 --- a/DOCS/man/options.rst +++ b/DOCS/man/options.rst @@ -1724,6 +1724,14 @@ Window (depending on the video aspect ratio, the width or height will be larger than 500 in order to keep the aspect ratio the same). +``--window-scale=`` + Resize the video window to a multiple (or fraction) of the video size. This + option is applied before ``--autofit`` and other options are applied (so + they override this option). + + For example, ``--window-scale=0.5`` would show the window at half the + video size. + ``--autosync=`` Gradually adjusts the A/V sync based on audio delay measurements. Specifying ``--autosync=0``, the default, will cause frame timing to be diff --git a/options/options.c b/options/options.c index d571a743f1..08ee420bd1 100644 --- a/options/options.c +++ b/options/options.c @@ -400,6 +400,7 @@ const m_option_t mp_opts[] = { OPT_SIZE_BOX("autofit", vo.autofit, 0), OPT_SIZE_BOX("autofit-larger", vo.autofit_larger, 0), OPT_SIZE_BOX("autofit-smaller", vo.autofit_smaller, 0), + OPT_FLOATRANGE("window-scale", vo.window_scale, 0, 0.001, 100), OPT_FLAG("force-window-position", vo.force_window_position, 0), // vo name (X classname) and window title strings OPT_STRING("x11-name", vo.winname, 0), @@ -662,6 +663,7 @@ const struct MPOpts mp_default_opts = { .keepaspect_window = 1, .border = 1, .WinID = -1, + .window_scale = 1.0, }, .allow_win_drag = 1, .wintitle = "mpv - ${?media-title:${media-title}}${!media-title:No file.}", diff --git a/options/options.h b/options/options.h index c425f8ab6c..ced518453f 100644 --- a/options/options.h +++ b/options/options.h @@ -30,6 +30,7 @@ typedef struct mp_vo_opts { struct m_geometry autofit; struct m_geometry autofit_larger; struct m_geometry autofit_smaller; + float window_scale; int keepaspect; int keepaspect_window; diff --git a/video/out/win_state.c b/video/out/win_state.c index af54f8215f..f48f628173 100644 --- a/video/out/win_state.c +++ b/video/out/win_state.c @@ -90,6 +90,8 @@ void vo_calc_window_geometry(struct vo *vo, const struct mp_rect *screen, int d_h = params.d_h; if ((vo->driver->caps & VO_CAP_ROTATE90) && params.rotate % 180 == 90) MPSWAP(int, d_w, d_h); + d_w = MPCLAMP(d_w * opts->window_scale, 1, 16000); + d_h = MPCLAMP(d_h * opts->window_scale, 1, 16000); int scr_w = screen->x1 - screen->x0; int scr_h = screen->y1 - screen->y0; -- cgit v1.2.3