mirror of https://github.com/mpv-player/mpv
vo_gpu_next: update to new libplacebo gamut mapping API
This just replaces the API calls to get rid of deprecation warnings, it doesn't yet expand the enum, nor replace them by the proper options. The translation from tone map modes to hybrid mix parameters is taken from the libplacebo source code.
This commit is contained in:
parent
dc13d47c73
commit
a5da8b2c87
|
@ -1847,6 +1847,22 @@ static void update_render_options(struct vo *vo)
|
|||
[TONE_MAPPING_ST2094_10] = &pl_tone_map_st2094_10,
|
||||
};
|
||||
|
||||
#if PL_API_VER >= 269
|
||||
static const struct pl_gamut_map_function *gamut_modes[] = {
|
||||
[GAMUT_CLIP] = &pl_gamut_map_clip,
|
||||
[GAMUT_WARN] = &pl_gamut_map_highlight,
|
||||
[GAMUT_DESATURATE] = &pl_gamut_map_desaturate,
|
||||
[GAMUT_DARKEN] = &pl_gamut_map_darken,
|
||||
};
|
||||
|
||||
// Back-compat approximation, taken from libplacebo source code
|
||||
static const float hybrid_mix[] = {
|
||||
[TONE_MAP_MODE_RGB] = 1.0f,
|
||||
[TONE_MAP_MODE_MAX] = 0.0f,
|
||||
[TONE_MAP_MODE_LUMA] = 0.0f,
|
||||
[TONE_MAP_MODE_HYBRID] = 0.20f,
|
||||
};
|
||||
#else
|
||||
static const enum pl_gamut_mode gamut_modes[] = {
|
||||
[GAMUT_CLIP] = PL_GAMUT_CLIP,
|
||||
[GAMUT_WARN] = PL_GAMUT_WARN,
|
||||
|
@ -1861,18 +1877,28 @@ static void update_render_options(struct vo *vo)
|
|||
[TONE_MAP_MODE_HYBRID] = PL_TONE_MAP_HYBRID,
|
||||
[TONE_MAP_MODE_LUMA] = PL_TONE_MAP_LUMA,
|
||||
};
|
||||
#endif
|
||||
|
||||
p->color_map = pl_color_map_default_params;
|
||||
p->color_map.intent = opts->icc_opts->intent;
|
||||
p->color_map.tone_mapping_function = tone_map_funs[opts->tone_map.curve];
|
||||
p->color_map.tone_mapping_param = opts->tone_map.curve_param;
|
||||
p->color_map.inverse_tone_mapping = opts->tone_map.inverse;
|
||||
p->color_map.tone_mapping_mode = tone_map_modes[opts->tone_map.mode];
|
||||
if (isnan(p->color_map.tone_mapping_param)) // vo_gpu compatibility
|
||||
p->color_map.tone_mapping_param = 0.0;
|
||||
p->color_map.visualize_lut = opts->tone_map.visualize;
|
||||
|
||||
#if PL_API_VER >= 269
|
||||
if (opts->tone_map.gamut_mode != GAMUT_AUTO)
|
||||
p->color_map.gamut_mapping = gamut_modes[opts->tone_map.gamut_mode];
|
||||
if (opts->tone_map.mode != TONE_MAP_MODE_AUTO)
|
||||
p->color_map.hybrid_mix = hybrid_mix[opts->tone_map.mode];
|
||||
#else
|
||||
p->color_map.intent = opts->icc_opts->intent;
|
||||
p->color_map.tone_mapping_crosstalk = opts->tone_map.crosstalk;
|
||||
p->color_map.tone_mapping_mode = tone_map_modes[opts->tone_map.mode];
|
||||
if (opts->tone_map.gamut_mode != GAMUT_AUTO)
|
||||
p->color_map.gamut_mode = gamut_modes[opts->tone_map.gamut_mode];
|
||||
p->color_map.visualize_lut = opts->tone_map.visualize;
|
||||
#endif
|
||||
|
||||
switch (opts->dither_algo) {
|
||||
case DITHER_NONE:
|
||||
|
|
Loading…
Reference in New Issue