summaryrefslogtreecommitdiffstats
path: root/video/out
diff options
context:
space:
mode:
authorNiklas Haas <git@haasn.dev>2022-09-25 20:31:08 +0200
committerNiklas Haas <git@haasn.dev>2022-09-25 20:31:22 +0200
commit2b0736ed83a19ec31e0d4b3bf4b3882d7c69063d (patch)
treeb6a95620a628e5fbf72d5ec38d1982f61a932d8f /video/out
parent56e24d535ebf8c67d14a3e6059aa16c8e6e84a7c (diff)
downloadmpv-2b0736ed83a19ec31e0d4b3bf4b3882d7c69063d.tar.bz2
mpv-2b0736ed83a19ec31e0d4b3bf4b3882d7c69063d.tar.xz
vo_gpu_next: implement --video-output-levels
This was ignored as an oversight.
Diffstat (limited to 'video/out')
-rw-r--r--video/out/vo_gpu_next.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/video/out/vo_gpu_next.c b/video/out/vo_gpu_next.c
index b4c0b2cbc8..ba9f56555b 100644
--- a/video/out/vo_gpu_next.c
+++ b/video/out/vo_gpu_next.c
@@ -128,6 +128,7 @@ struct priv {
struct scaler_params scalers[SCALER_COUNT];
const struct pl_hook **hooks; // storage for `params.hooks`
const struct pl_filter_config *frame_mixer;
+ enum mp_csp_levels output_levels;
#ifdef PL_HAVE_LCMS
struct pl_icc_params icc;
@@ -780,6 +781,7 @@ static void update_options(struct vo *vo)
p->color_adjustment.hue = cparams.hue;
p->color_adjustment.saturation = cparams.saturation;
p->color_adjustment.gamma = cparams.gamma;
+ p->output_levels = cparams.levels_out;
}
static void apply_target_options(struct priv *p, struct pl_frame *target)
@@ -795,6 +797,8 @@ static void apply_target_options(struct priv *p, struct pl_frame *target)
// Colorspace overrides
const struct gl_video_opts *opts = p->opts_cache->opts;
+ if (p->output_levels)
+ target->repr.levels = mp_levels_to_pl(p->output_levels);
if (opts->target_prim)
target->color.primaries = mp_prim_to_pl(opts->target_prim);
if (opts->target_trc)