You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
5.5 KiB
102 lines
5.5 KiB
From 2215a98fbb1f11e5df8e58eba2ea15733cff7905 Mon Sep 17 00:00:00 2001
|
|
From: Leigh Scott <leigh123linux@gmail.com>
|
|
Date: Thu, 19 Dec 2019 15:03:32 +0000
|
|
Subject: [PATCH] Adapt patch from videolan mailing list
|
|
|
|
---
|
|
.../video_output/opengl/fragment_shaders.c | 6 +++++
|
|
modules/video_output/opengl/vout_helper.c | 4 ++-
|
|
modules/video_output/opengl/vout_helper.h | 27 +++++++++++++++++--
|
|
3 files changed, 34 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/modules/video_output/opengl/fragment_shaders.c b/modules/video_output/opengl/fragment_shaders.c
|
|
index 8c1f67ee7a..f6fb2be6c5 100644
|
|
--- a/modules/video_output/opengl/fragment_shaders.c
|
|
+++ b/modules/video_output/opengl/fragment_shaders.c
|
|
@@ -616,7 +616,13 @@ opengl_fragment_shader_init_impl(opengl_tex_converter_t *tc, GLenum tex_target,
|
|
color_params.intent = var_InheritInteger(tc->gl, "rendering-intent");
|
|
color_params.tone_mapping_algo = var_InheritInteger(tc->gl, "tone-mapping");
|
|
color_params.tone_mapping_param = var_InheritFloat(tc->gl, "tone-mapping-param");
|
|
+# if PL_API_VER >= 10
|
|
+ color_params.desaturation_strength = var_InheritFloat(tc->gl, "desat-strength");
|
|
+ color_params.desaturation_exponent = var_InheritFloat(tc->gl, "desat-exponent");
|
|
+ color_params.desaturation_base = var_InheritFloat(tc->gl, "desat-base");
|
|
+# else
|
|
color_params.tone_mapping_desaturate = var_InheritFloat(tc->gl, "tone-mapping-desat");
|
|
+# endif
|
|
color_params.gamut_warning = var_InheritBool(tc->gl, "tone-mapping-warn");
|
|
|
|
struct pl_color_space dst_space = pl_color_space_unknown;
|
|
diff --git a/modules/video_output/opengl/vout_helper.c b/modules/video_output/opengl/vout_helper.c
|
|
index 919560e603..12308e2060 100644
|
|
--- a/modules/video_output/opengl/vout_helper.c
|
|
+++ b/modules/video_output/opengl/vout_helper.c
|
|
@@ -628,7 +628,9 @@ opengl_init_program(vout_display_opengl_t *vgl, struct prgm *prgm,
|
|
.log_level = PL_LOG_INFO,
|
|
});
|
|
if (tc->pl_ctx) {
|
|
-# if PL_API_VER >= 6
|
|
+# if PL_API_VER >= 20
|
|
+ tc->pl_sh = pl_shader_alloc(tc->pl_ctx, NULL);
|
|
+# elif PL_API_VER >= 6
|
|
tc->pl_sh = pl_shader_alloc(tc->pl_ctx, NULL, 0);
|
|
# else
|
|
tc->pl_sh = pl_shader_alloc(tc->pl_ctx, NULL, 0, 0);
|
|
diff --git a/modules/video_output/opengl/vout_helper.h b/modules/video_output/opengl/vout_helper.h
|
|
index 978669f89c..cfc256530e 100644
|
|
--- a/modules/video_output/opengl/vout_helper.h
|
|
+++ b/modules/video_output/opengl/vout_helper.h
|
|
@@ -148,6 +148,15 @@ static const char * const tone_text[] = {
|
|
#define TONEMAP_DESAT_TEXT "Tone-mapping desaturation coefficient"
|
|
#define TONEMAP_DESAT_LONGTEXT "How strongly to desaturate overbright colors towards white. 0.0 disables this behavior."
|
|
|
|
+#define DESAT_STRENGTH_TEXT "Desaturation strength"
|
|
+#define DESAT_STRENGTH_LONGTEXT "How strongly to desaturate bright spectral colors towards white. 0.0 disables this behavior, 1.0 enables full desaturation (hollywood-style)"
|
|
+
|
|
+#define DESAT_EXPONENT_TEXT "Desaturation exponent"
|
|
+#define DESAT_EXPONENT_LONGTEXT "Controls the steepness of the desaturation curve. If you set this to 0.0, the curve will be flat, i.e. desaturation always enabled (hollywood-style)."
|
|
+
|
|
+#define DESAT_BASE_TEXT "Desaturation base"
|
|
+#define DESAT_BASE_LONGTEXT "Controls the starting offset of the desaturation curve. Brightness values below this base will always be colorimetrically tone mapped (never desaturated)."
|
|
+
|
|
#define TONEMAP_WARN_TEXT "Highlight clipped pixels"
|
|
#define TONEMAP_WARN_LONGTEXT "Debugging tool to indicate which pixels were clipped as part of the tone mapping process."
|
|
|
|
@@ -171,6 +180,21 @@ static const char * const dither_text[] = {
|
|
#define DEPTH_TEXT "Dither depth override (0 = framebuffer depth)"
|
|
#define DEPTH_LONGTEXT "Overrides the detected framebuffer depth. Useful to dither to lower bit depths than otherwise required."
|
|
|
|
+
|
|
+#if PL_API_VER >= 10
|
|
+#define add_desat_params() \
|
|
+ add_float("desat-strength", pl_color_map_default_params.desaturation_strength, \
|
|
+ DESAT_STRENGTH_TEXT, DESAT_STRENGTH_LONGTEXT, false) \
|
|
+ add_float("desat-exponent", pl_color_map_default_params.desaturation_exponent, \
|
|
+ DESAT_EXPONENT_TEXT, DESAT_EXPONENT_LONGTEXT, false) \
|
|
+ add_float("desat-base", pl_color_map_default_params.desaturation_base, \
|
|
+ DESAT_BASE_TEXT, DESAT_BASE_LONGTEXT, false)
|
|
+#else
|
|
+#define add_desat_params() \
|
|
+ add_float("tone-mapping-desat", pl_color_map_default_params.tone_mapping_desaturate, \
|
|
+ TONEMAP_DESAT_TEXT, TONEMAP_DESAT_LONGTEXT, false)
|
|
+#endif
|
|
+
|
|
#define add_glopts_placebo() \
|
|
set_section("Colorspace conversion", NULL) \
|
|
add_integer("rendering-intent", pl_color_map_default_params.intent, \
|
|
@@ -184,10 +208,9 @@ static const char * const dither_text[] = {
|
|
add_integer("tone-mapping", PL_TONE_MAPPING_HABLE, \
|
|
TONEMAPPING_TEXT, TONEMAPPING_LONGTEXT, false) \
|
|
change_integer_list(tone_values, tone_text) \
|
|
+ add_desat_params() \
|
|
add_float("tone-mapping-param", pl_color_map_default_params.tone_mapping_param, \
|
|
TONEMAP_PARAM_TEXT, TONEMAP_PARAM_LONGTEXT, true) \
|
|
- add_float("tone-mapping-desat", pl_color_map_default_params.tone_mapping_desaturate, \
|
|
- TONEMAP_DESAT_TEXT, TONEMAP_DESAT_LONGTEXT, false) \
|
|
add_bool("tone-mapping-warn", false, TONEMAP_WARN_TEXT, TONEMAP_WARN_LONGTEXT, false) \
|
|
set_section("Dithering", NULL) \
|
|
add_integer("dither-algo", -1, DITHER_TEXT, DITHER_LONGTEXT, false) \
|
|
--
|
|
2.24.1
|
|
|