summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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);
}