summaryrefslogtreecommitdiffstats
path: root/video/out
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-08-24 19:37:34 +0200
committerwm4 <wm4@nowhere>2013-08-24 19:40:18 +0200
commit47e92b2f884d4dd831e3e59ae9c692b460ef8dc3 (patch)
tree545d089a4a1be158c135fd43eaa33d4d93538925 /video/out
parentba4654b72977b915e5f09d23ce02e099c2bd9d0f (diff)
downloadmpv-47e92b2f884d4dd831e3e59ae9c692b460ef8dc3.tar.bz2
mpv-47e92b2f884d4dd831e3e59ae9c692b460ef8dc3.tar.xz
video: handle video output levels with mp_image_params
Until now, video output levels (obscure feature, like using TV screens that require RGB output in limited range, similar to YUY) still required handling of VOCTRL_SET_YUV_COLORSPACE. Simplify this, and use the new mp_image_params code. This gets rid of some code. VOCTRL_SET_YUV_COLORSPACE is not needed at all anymore in VOs that use the reconfig callback. The result of VOCTRL_GET_YUV_COLORSPACE is now used only used for the colormatrix related properties (basically, for display on OSD). For other VOs, VOCTRL_SET_YUV_COLORSPACE will be sent only once after config instead of twice.
Diffstat (limited to 'video/out')
-rw-r--r--video/out/gl_video.c16
-rw-r--r--video/out/gl_video.h1
-rw-r--r--video/out/vo.c1
-rw-r--r--video/out/vo_opengl.c7
4 files changed, 7 insertions, 18 deletions
diff --git a/video/out/gl_video.c b/video/out/gl_video.c
index 6fb41e5814..e285be252a 100644
--- a/video/out/gl_video.c
+++ b/video/out/gl_video.c
@@ -1973,6 +1973,12 @@ void gl_video_config(struct gl_video *p, struct mp_image_params *params)
p->image_dw = params->d_w;
p->image_dh = params->d_h;
p->image_params = *params;
+
+ struct mp_csp_details csp = MP_CSP_DETAILS_DEFAULTS;
+ csp.levels_in = params->colorlevels;
+ csp.levels_out = params->outputlevels;
+ csp.format = params->colorspace;
+ p->colorspace = csp;
}
void gl_video_set_output_depth(struct gl_video *p, int r, int g, int b)
@@ -2046,16 +2052,6 @@ bool gl_video_get_csp_override(struct gl_video *p, struct mp_csp_details *csp)
return true;
}
-bool gl_video_set_csp_override(struct gl_video *p, struct mp_csp_details *csp)
-{
- if (p->is_yuv) {
- p->colorspace = *csp;
- update_all_uniforms(p);
- return true;
- }
- return false;
-}
-
bool gl_video_set_equalizer(struct gl_video *p, const char *name, int val)
{
if (mp_csp_equalizer_set(&p->video_eq, name, val) >= 0) {
diff --git a/video/out/gl_video.h b/video/out/gl_video.h
index 2ed8507a9c..bc21310498 100644
--- a/video/out/gl_video.h
+++ b/video/out/gl_video.h
@@ -66,7 +66,6 @@ void gl_video_resize(struct gl_video *p, struct mp_rect *window,
struct mp_rect *src, struct mp_rect *dst,
struct mp_osd_res *osd);
bool gl_video_get_csp_override(struct gl_video *p, struct mp_csp_details *csp);
-bool gl_video_set_csp_override(struct gl_video *p, struct mp_csp_details *csp);
bool gl_video_set_equalizer(struct gl_video *p, const char *name, int val);
bool gl_video_get_equalizer(struct gl_video *p, const char *name, int *val);
diff --git a/video/out/vo.c b/video/out/vo.c
index f3fc4aca4d..014fcf03ad 100644
--- a/video/out/vo.c
+++ b/video/out/vo.c
@@ -430,6 +430,7 @@ int vo_reconfig(struct vo *vo, struct mp_image_params *params, int flags)
struct mp_csp_details csp;
if (vo_control(vo, VOCTRL_GET_YUV_COLORSPACE, &csp) > 0) {
csp.levels_in = params->colorlevels;
+ csp.levels_out = params->outputlevels;
csp.format = params->colorspace;
vo_control(vo, VOCTRL_SET_YUV_COLORSPACE, &csp);
}
diff --git a/video/out/vo_opengl.c b/video/out/vo_opengl.c
index a6950c8d11..9253920049 100644
--- a/video/out/vo_opengl.c
+++ b/video/out/vo_opengl.c
@@ -245,13 +245,6 @@ static int control(struct vo *vo, uint32_t request, void *data)
vo->want_redraw = true;
return r ? VO_TRUE : VO_NOTIMPL;
}
- case VOCTRL_SET_YUV_COLORSPACE: {
- mpgl_lock(p->glctx);
- gl_video_set_csp_override(p->renderer, data);
- mpgl_unlock(p->glctx);
- vo->want_redraw = true;
- return VO_TRUE;
- }
case VOCTRL_GET_YUV_COLORSPACE:
mpgl_lock(p->glctx);
gl_video_get_csp_override(p->renderer, data);