From b2657814c9f7e38bf576d068619822823dbec8e1 Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 2 Sep 2016 14:50:03 +0200 Subject: vo_opengl: minor renderer option access refactor Reduce accesses to the renderer opts in vo_opengl.c, and instead add accessors for them to video.c. I suppose gamma and maybe icc-auto could be moved to vo_opengl.c options. Also, the output colorspace could probably be adjusted to what is really used, not just the options (although it's possible that this commit changes this, due to video.c mutating its own copy of the options according to actual renderer capapbilities). But don't deal with this now. --- video/out/opengl/video.c | 13 +++++++++++++ video/out/opengl/video.h | 2 ++ video/out/vo_opengl.c | 7 ++----- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/video/out/opengl/video.c b/video/out/opengl/video.c index 658153372e..56005e77eb 100644 --- a/video/out/opengl/video.c +++ b/video/out/opengl/video.c @@ -594,6 +594,19 @@ static void uninit_rendering(struct gl_video *p) gl_sc_reset_error(p->sc); } +bool gl_video_gamma_auto_enabled(struct gl_video *p) +{ + return p->opts.gamma_auto; +} + +struct mp_colorspace gl_video_get_output_colorspace(struct gl_video *p) +{ + return (struct mp_colorspace) { + .primaries = p->opts.target_prim, + .gamma = p->opts.target_trc, + }; +} + // Warning: profile.start must point to a ta allocation, and the function // takes over ownership. void gl_video_set_icc_profile(struct gl_video *p, bstr icc_data) diff --git a/video/out/opengl/video.h b/video/out/opengl/video.h index 29300c3312..b21112ac9f 100644 --- a/video/out/opengl/video.h +++ b/video/out/opengl/video.h @@ -167,6 +167,8 @@ float gl_video_scale_ambient_lux(float lmin, float lmax, void gl_video_set_ambient_lux(struct gl_video *p, int lux); void gl_video_set_icc_profile(struct gl_video *p, bstr icc_data); bool gl_video_icc_auto_enabled(struct gl_video *p); +bool gl_video_gamma_auto_enabled(struct gl_video *p); +struct mp_colorspace gl_video_get_output_colorspace(struct gl_video *p); void gl_video_set_gl_state(struct gl_video *p); void gl_video_unset_gl_state(struct gl_video *p); diff --git a/video/out/vo_opengl.c b/video/out/vo_opengl.c index 0e4c117352..300a3a76d0 100644 --- a/video/out/vo_opengl.c +++ b/video/out/vo_opengl.c @@ -242,7 +242,7 @@ static void get_and_update_ambient_lighting(struct gl_priv *p) if (r == VO_TRUE) { gl_video_set_ambient_lux(p->renderer, lux); } - if (r != VO_TRUE && p->renderer_opts->gamma_auto) { + if (r != VO_TRUE && gl_video_gamma_auto_enabled(p->renderer)) { MP_ERR(p, "gamma_auto option provided, but querying for ambient" " lighting is not supported on this platform\n"); } @@ -306,10 +306,7 @@ static int control(struct vo *vo, uint32_t request, void *data) struct mp_image *screen = gl_read_window_contents(p->gl); // set image parameters according to the display, if possible if (screen) { - screen->params.color = (struct mp_colorspace) { - .primaries = p->renderer_opts->target_prim, - .gamma = p->renderer_opts->target_trc, - }; + screen->params.color = gl_video_get_output_colorspace(p->renderer); if (p->glctx->flip_v) mp_image_vflip(screen); } -- cgit v1.2.3