summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-02-03 16:52:44 +0100
committerwm4 <wm4@nowhere>2015-02-03 16:52:44 +0100
commitf296dcb248625d6e5979eae1e683b5f4522896f9 (patch)
tree955606d2a9d73f4dee1e1404053e446a45c038e7
parent0f560bbf8a9a10411be2688dba9363621da0437d (diff)
downloadmpv-f296dcb248625d6e5979eae1e683b5f4522896f9.tar.bz2
mpv-f296dcb248625d6e5979eae1e683b5f4522896f9.tar.xz
csputils, vo_opengl: remove per-component gamma
There was some code accounting for different gamma values for R/G/B. It's inherited from an old, undocumented MPlayer feature, which was at some point disabled for convenience by myself (meaning you couldn't actually set separate gamma because it was removed from the property interface - mp_csp_copy_equalizer_values() just set them to the same value). Get rid of these meaningless leftovers.
-rw-r--r--video/csputils.c5
-rw-r--r--video/csputils.h7
-rw-r--r--video/out/gl_video.c6
-rw-r--r--video/out/gl_video_shaders.glsl4
4 files changed, 7 insertions, 15 deletions
diff --git a/video/csputils.c b/video/csputils.c
index 00e6d32cd2..835f06bcd9 100644
--- a/video/csputils.c
+++ b/video/csputils.c
@@ -633,10 +633,7 @@ void mp_csp_copy_equalizer_values(struct mp_csp_params *params,
params->contrast = (eq->values[MP_CSP_EQ_CONTRAST] + 100) / 100.0;
params->hue = eq->values[MP_CSP_EQ_HUE] / 100.0 * M_PI;
params->saturation = (eq->values[MP_CSP_EQ_SATURATION] + 100) / 100.0;
- float gamma = exp(log(8.0) * eq->values[MP_CSP_EQ_GAMMA] / 100.0);
- params->rgamma = gamma;
- params->ggamma = gamma;
- params->bgamma = gamma;
+ params->gamma = exp(log(8.0) * eq->values[MP_CSP_EQ_GAMMA] / 100.0);
}
static int find_eq(int capabilities, const char *name)
diff --git a/video/csputils.h b/video/csputils.h
index 4f0a09da6e..029b3213e4 100644
--- a/video/csputils.h
+++ b/video/csputils.h
@@ -114,9 +114,7 @@ struct mp_csp_params {
float contrast;
float hue;
float saturation;
- float rgamma;
- float ggamma;
- float bgamma;
+ float gamma;
// discard U/V components
bool gray;
// texture_bits/input_bits is for rescaling fixed point input to range [0,1]
@@ -132,8 +130,7 @@ struct mp_csp_params {
.levels_in = MP_CSP_LEVELS_TV, \
.levels_out = MP_CSP_LEVELS_PC, \
.brightness = 0, .contrast = 1, .hue = 0, .saturation = 1, \
- .rgamma = 1, .ggamma = 1, .bgamma = 1, \
- .texture_bits = 8, .input_bits = 8}
+ .gamma = 1, .texture_bits = 8, .input_bits = 8}
struct mp_image_params;
void mp_csp_set_image_params(struct mp_csp_params *params,
diff --git a/video/out/gl_video.c b/video/out/gl_video.c
index 5ad935bd70..f965a4abd9 100644
--- a/video/out/gl_video.c
+++ b/video/out/gl_video.c
@@ -567,10 +567,8 @@ static void update_uniforms(struct gl_video *p, GLuint program)
gl->Uniform1f(gl->GetUniformLocation(program, "sig_offset"), sig_offset);
float gamma = p->opts.gamma ? p->opts.gamma : 1.0;
- gl->Uniform3f(gl->GetUniformLocation(program, "inv_gamma"),
- 1.0 / (cparams.rgamma * gamma),
- 1.0 / (cparams.ggamma * gamma),
- 1.0 / (cparams.bgamma * gamma));
+ gl->Uniform1f(gl->GetUniformLocation(program, "inv_gamma"),
+ 1.0 / (cparams.gamma * gamma));
for (int n = 0; n < p->plane_count; n++) {
char textures_n[32];
diff --git a/video/out/gl_video_shaders.glsl b/video/out/gl_video_shaders.glsl
index b13d518e6c..032248516d 100644
--- a/video/out/gl_video_shaders.glsl
+++ b/video/out/gl_video_shaders.glsl
@@ -178,7 +178,7 @@ uniform mat3 colormatrix;
uniform vec3 colormatrix_c;
uniform mat3 cms_matrix;
uniform mat2 dither_trafo;
-uniform vec3 inv_gamma;
+uniform float inv_gamma;
uniform float input_gamma;
uniform float conv_gamma;
uniform float sig_center;
@@ -495,7 +495,7 @@ void main() {
color = clamp(color, 0.0, 1.0);
#ifdef USE_GAMMA_POW
// User-defined gamma correction factor (via the gamma sub-option)
- color = pow(color, inv_gamma);
+ color = pow(color, vec3(inv_gamma));
#endif
#ifdef USE_3DLUT
// For the 3DLUT we are arbitrarily using 2.4 as input gamma to reduce