diff options
author | wm4 <wm4@nowhere> | 2015-01-06 15:21:26 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2015-01-06 16:51:02 +0100 |
commit | 5410a5b2c55b5c7d9889451c1d6e56c697325a2c (patch) | |
tree | e7989451ced95a879a1d92b9037db86fa6b4c9e0 /video | |
parent | a52ca8a2b075388dc7dd5012e4e3f4871e26b133 (diff) | |
download | mpv-5410a5b2c55b5c7d9889451c1d6e56c697325a2c.tar.bz2 mpv-5410a5b2c55b5c7d9889451c1d6e56c697325a2c.tar.xz |
csputils: move image_params -> csp_params into a function
Although the line count increases, this is better for making sure
everything is handled consistently for all users of the mp_csp_params
stuff.
This also makes sure mp_csp_params is always initialized with
MP_CSP_PARAMS_DEFAULTS (for consistency).
Diffstat (limited to 'video')
-rw-r--r-- | video/csputils.c | 12 | ||||
-rw-r--r-- | video/csputils.h | 4 | ||||
-rw-r--r-- | video/out/gl_video.c | 11 | ||||
-rw-r--r-- | video/out/vo_direct3d.c | 4 | ||||
-rw-r--r-- | video/out/vo_opengl_old.c | 7 | ||||
-rw-r--r-- | video/vdpau_mixer.c | 4 |
6 files changed, 24 insertions, 18 deletions
diff --git a/video/csputils.c b/video/csputils.c index db206330bd..70edbfa6a3 100644 --- a/video/csputils.c +++ b/video/csputils.c @@ -35,6 +35,7 @@ #include <libavutil/common.h> #include <libavcodec/avcodec.h> +#include "mp_image.h" #include "csputils.h" const char *const mp_csp_names[MP_CSP_COUNT] = { @@ -682,6 +683,17 @@ void mp_gen_yuv2rgb_map(struct mp_csp_params *params, unsigned char *map, int si } } +// Set colorspace related fields in p from f. Don't touch other fields. +void mp_csp_set_image_params(struct mp_csp_params *params, + const struct mp_image_params *imgparams) +{ + struct mp_image_params p = *imgparams; + mp_image_params_guess_csp(&p); // ensure consistency + params->colorspace = p.colorspace; + params->levels_in = p.colorlevels; + params->levels_out = p.outputlevels; +} + // Copy settings from eq into params. void mp_csp_copy_equalizer_values(struct mp_csp_params *params, const struct mp_csp_equalizer *eq) diff --git a/video/csputils.h b/video/csputils.h index 4e2fe611b3..51de50c4b6 100644 --- a/video/csputils.h +++ b/video/csputils.h @@ -133,6 +133,10 @@ struct mp_csp_params { .rgamma = 1, .ggamma = 1, .bgamma = 1, \ .texture_bits = 8, .input_bits = 8} +struct mp_image_params; +void mp_csp_set_image_params(struct mp_csp_params *params, + const struct mp_image_params *imgparams); + enum mp_chroma_location { MP_CHROMA_AUTO, MP_CHROMA_LEFT, // mpeg2/4, h264 diff --git a/video/out/gl_video.c b/video/out/gl_video.c index 1ff0d9d333..672fb5dafb 100644 --- a/video/out/gl_video.c +++ b/video/out/gl_video.c @@ -638,13 +638,10 @@ static void update_uniforms(struct gl_video *p, GLuint program) gl->UseProgram(program); - struct mp_csp_params cparams = { - .colorspace = p->image_params.colorspace, - .levels_in = p->image_params.colorlevels, - .levels_out = p->image_params.outputlevels, - .input_bits = p->plane_bits, - .texture_bits = (p->plane_bits + 7) & ~7, - }; + struct mp_csp_params cparams = MP_CSP_PARAMS_DEFAULTS; + cparams.input_bits = p->plane_bits; + cparams.texture_bits = (p->plane_bits + 7) & ~7; + mp_csp_set_image_params(&cparams, &p->image_params); mp_csp_copy_equalizer_values(&cparams, &p->video_eq); if (p->image_desc.flags & MP_IMGFLAG_XYZ) { cparams.colorspace = MP_CSP_XYZ; diff --git a/video/out/vo_direct3d.c b/video/out/vo_direct3d.c index 4a2c86aab7..7183f7d555 100644 --- a/video/out/vo_direct3d.c +++ b/video/out/vo_direct3d.c @@ -1152,9 +1152,7 @@ static void update_colorspace(d3d_priv *priv) { float coeff[3][4]; struct mp_csp_params csp = MP_CSP_PARAMS_DEFAULTS; - csp.colorspace = priv->params.colorspace; - csp.levels_in = priv->params.colorlevels; - csp.levels_out = priv->params.outputlevels; + mp_csp_set_image_params(&csp, &priv->params); mp_csp_copy_equalizer_values(&csp, &priv->video_eq); if (priv->use_shaders) { diff --git a/video/out/vo_opengl_old.c b/video/out/vo_opengl_old.c index b88b36e5d1..6c9bfb62a0 100644 --- a/video/out/vo_opengl_old.c +++ b/video/out/vo_opengl_old.c @@ -1346,11 +1346,8 @@ static void update_yuvconv(struct vo *vo) if (!vo->params) return; - struct mp_csp_params cparams = { - .colorspace = vo->params->colorspace, - .levels_in = vo->params->colorlevels, - .levels_out = vo->params->outputlevels, - }; + struct mp_csp_params cparams = MP_CSP_PARAMS_DEFAULTS; + mp_csp_set_image_params(&cparams, vo->params); mp_csp_copy_equalizer_values(&cparams, &p->video_eq); gl_conversion_params_t params = { p->target, p->yuvconvtype, cparams, diff --git a/video/vdpau_mixer.c b/video/vdpau_mixer.c index 7b45ca7f55..182e1fd40a 100644 --- a/video/vdpau_mixer.c +++ b/video/vdpau_mixer.c @@ -197,9 +197,7 @@ static int create_vdp_mixer(struct mp_vdpau_mixer *mixer) VdpCSCMatrix matrix; struct mp_csp_params cparams = MP_CSP_PARAMS_DEFAULTS; - cparams.colorspace = mixer->image_params.colorspace; - cparams.levels_in = mixer->image_params.colorlevels; - cparams.levels_out = mixer->image_params.outputlevels; + mp_csp_set_image_params(&cparams, &mixer->image_params); mp_csp_copy_equalizer_values(&cparams, &mixer->video_eq); mp_get_yuv2rgb_coeffs(&cparams, matrix); |