summaryrefslogtreecommitdiffstats
path: root/video/out/vo_direct3d.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-03-29 00:25:08 +0100
committerwm4 <wm4@nowhere>2014-03-29 00:25:08 +0100
commitbd0618f01f1331c1ba0a3b2bb65975b5a21fe2e2 (patch)
treeaa7ecd5d7a7662130c8a25d3dd569ac6c50624c2 /video/out/vo_direct3d.c
parentfdeda359f7b060ec0a926eccb86c01b736a1ee16 (diff)
downloadmpv-bd0618f01f1331c1ba0a3b2bb65975b5a21fe2e2.tar.bz2
mpv-bd0618f01f1331c1ba0a3b2bb65975b5a21fe2e2.tar.xz
video/out: remove legacy colorspace stuff
Reduce most dependencies on struct mp_csp_details, which was a bad first attempt at dealing with colorspace stuff. Instead, consistently use mp_image_params. Code which retrieves colorspace matrices from csputils.c still uses this type, though.
Diffstat (limited to 'video/out/vo_direct3d.c')
-rw-r--r--video/out/vo_direct3d.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/video/out/vo_direct3d.c b/video/out/vo_direct3d.c
index 0dde474f62..6d431cf0bb 100644
--- a/video/out/vo_direct3d.c
+++ b/video/out/vo_direct3d.c
@@ -141,6 +141,7 @@ typedef struct d3d_priv {
int src_height; /**< Source (movie) heigth */
struct mp_osd_res osd_res;
int image_format; /**< mplayer image format */
+ struct mp_image_params params;
bool use_textures; /**< use 3D texture rendering, instead of
StretchRect */
bool use_shaders; /**< use shader for YUV color conversion
@@ -180,7 +181,6 @@ typedef struct d3d_priv {
int max_texture_height; /**< from the device capabilities */
D3DMATRIX d3d_colormatrix;
- struct mp_csp_details colorspace;
struct mp_csp_equalizer video_eq;
struct osdpart *osd[MAX_OSD_PARTS];
@@ -1126,7 +1126,10 @@ static int query_format(struct vo *vo, uint32_t movie_fmt)
static void update_colorspace(d3d_priv *priv)
{
float coeff[3][4];
- struct mp_csp_params csp = { .colorspace = priv->colorspace };
+ struct mp_csp_params csp = MP_CSP_PARAMS_DEFAULTS;
+ csp.colorspace.format = priv->params.colorspace;
+ csp.colorspace.levels_in = priv->params.colorlevels;
+ csp.colorspace.levels_out = priv->params.outputlevels;
mp_csp_copy_equalizer_values(&csp, &priv->video_eq);
if (priv->use_shaders) {
@@ -1205,16 +1208,15 @@ static int control(struct vo *vo, uint32_t request, void *data)
case VOCTRL_REDRAW_FRAME:
d3d_draw_frame(priv);
return VO_TRUE;
- case VOCTRL_SET_YUV_COLORSPACE:
- priv->colorspace = *(struct mp_csp_details *)data;
- update_colorspace(priv);
- vo->want_redraw = true;
- return VO_TRUE;
- case VOCTRL_GET_YUV_COLORSPACE:
- if (!priv->use_shaders)
- break; // no idea what the heck D3D YUV uses
- *(struct mp_csp_details *)data = priv->colorspace;
+ case VOCTRL_GET_COLORSPACE: {
+ struct mp_image_params *p = data;
+ if (priv->use_shaders) { // no idea what the heck D3D YUV uses
+ p->colorspace = priv->params.colorspace;
+ p->colorlevels = priv->params.colorlevels;
+ p->outputlevels = priv->params.outputlevels;
+ }
return VO_TRUE;
+ }
case VOCTRL_SET_EQUALIZER: {
if (!priv->use_shaders)
break;
@@ -1282,6 +1284,7 @@ static int reconfig(struct vo *vo, struct mp_image_params *params, int flags)
priv->src_width = params->w;
priv->src_height = params->h;
+ priv->params = params;
init_rendering_mode(priv, params->imgfmt, true);
}
@@ -1709,14 +1712,12 @@ static const struct m_option opts[] = {
};
static const d3d_priv defaults_noshaders = {
- .colorspace = MP_CSP_DETAILS_DEFAULTS,
.video_eq = { MP_CSP_EQ_CAPS_COLORMATRIX },
.opt_disable_shaders = 1,
.opt_disable_textures = 1,
};
static const d3d_priv defaults = {
- .colorspace = MP_CSP_DETAILS_DEFAULTS,
.video_eq = { MP_CSP_EQ_CAPS_COLORMATRIX },
};