summaryrefslogtreecommitdiffstats
path: root/video/csputils.c
diff options
context:
space:
mode:
Diffstat (limited to 'video/csputils.c')
-rw-r--r--video/csputils.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/video/csputils.c b/video/csputils.c
index a4d896f598..f42cfb398b 100644
--- a/video/csputils.c
+++ b/video/csputils.c
@@ -671,6 +671,9 @@ void mp_get_yuv2rgb_coeffs(struct mp_csp_params *params, struct mp_cmat *m)
abort();
}
+ rgblev.min = (rgblev.min + params->brightness) * params->contrast;
+ rgblev.max = (rgblev.max + params->brightness) * params->contrast;
+
double ymul = (rgblev.max - rgblev.min) / (yuvlev.ymax - yuvlev.ymin);
double cmul = (rgblev.max - rgblev.min) / (yuvlev.cmid - yuvlev.cmin) / 2;
for (int i = 0; i < 3; i++) {
@@ -682,14 +685,6 @@ void mp_get_yuv2rgb_coeffs(struct mp_csp_params *params, struct mp_cmat *m)
-(m->m[i][1] + m->m[i][2]) * yuvlev.cmid;
}
- // Brightness adds a constant to output R,G,B.
- // Contrast scales Y around 1/2 (not 0 in this implementation).
- for (int i = 0; i < 3; i++) {
- m->c[i] += params->brightness;
- m->m[i][0] *= params->contrast;
- m->c[i] += (rgblev.max-rgblev.min) * (1 - params->contrast)/2;
- }
-
int in_bits = FFMAX(params->int_bits_in, 1);
int out_bits = FFMAX(params->int_bits_out, 1);
double in_scale = (1 << in_bits) - 1.0;