diff options
author | wm4 <wm4@nowhere> | 2015-01-06 16:49:53 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2015-01-06 16:51:06 +0100 |
commit | d42d60bc1e0a1c3b472b21d3cd203279879f7d95 (patch) | |
tree | 5e3cc92bc64309acae00dc67312b56cc5873822c /video/out/gl_video.c | |
parent | 5410a5b2c55b5c7d9889451c1d6e56c697325a2c (diff) | |
download | mpv-d42d60bc1e0a1c3b472b21d3cd203279879f7d95.tar.bz2 mpv-d42d60bc1e0a1c3b472b21d3cd203279879f7d95.tar.xz |
csputils: replace float[3][4] with a struct
Not being able to use the 3x3 part of the matrix was annoying, so split
it into a float[3][3] matrix and a separate float[3] constant vector.
Diffstat (limited to 'video/out/gl_video.c')
-rw-r--r-- | video/out/gl_video.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/video/out/gl_video.c b/video/out/gl_video.c index 672fb5dafb..88de5eeffb 100644 --- a/video/out/gl_video.c +++ b/video/out/gl_video.c @@ -661,24 +661,20 @@ static void update_uniforms(struct gl_video *p, GLuint program) loc = gl->GetUniformLocation(program, "colormatrix"); if (loc >= 0) { - float m[3][4] = {{0}}; + struct mp_cmat m = {{{0}}}; if (p->image_desc.flags & MP_IMGFLAG_XYZ) { // Hard-coded as relative colorimetric for now, since this transforms // from the source file's D55 material to whatever color space our // projector/display lives in, which should be D55 for a proper // home cinema setup either way. - mp_get_xyz2rgb_coeffs(&cparams, p->csp_src, MP_INTENT_RELATIVE_COLORIMETRIC, m); + mp_get_xyz2rgb_coeffs(&cparams, p->csp_src, + MP_INTENT_RELATIVE_COLORIMETRIC, &m); } else { - mp_get_yuv2rgb_coeffs(&cparams, m); + mp_get_yuv2rgb_coeffs(&cparams, &m); } - float transposed[3][3]; - for (int a = 0; a < 3; a++) { - for (int b = 0; b < 3; b++) - transposed[a][b] = m[b][a]; - } - gl->UniformMatrix3fv(loc, 1, GL_FALSE, &transposed[0][0]); + gl->UniformMatrix3fv(loc, 1, GL_TRUE, &m.m[0][0]); loc = gl->GetUniformLocation(program, "colormatrix_c"); - gl->Uniform3f(loc, m[0][3], m[1][3], m[2][3]); + gl->Uniform3f(loc, m.c[0], m.c[1], m.c[2]); } gl->Uniform1f(gl->GetUniformLocation(program, "input_gamma"), |