summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2016-09-02 14:50:03 +0200
committerwm4 <wm4@nowhere>2016-09-02 14:50:03 +0200
commitb2657814c9f7e38bf576d068619822823dbec8e1 (patch)
tree62a5a2744f68582fffd77a0d3e82847e49d3d4ac
parent4fa6bcbb902d500ca0a1b9d2feeab5a4e5a98345 (diff)
downloadmpv-b2657814c9f7e38bf576d068619822823dbec8e1.tar.bz2
mpv-b2657814c9f7e38bf576d068619822823dbec8e1.tar.xz
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.
-rw-r--r--video/out/opengl/video.c13
-rw-r--r--video/out/opengl/video.h2
-rw-r--r--video/out/vo_opengl.c7
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);
}