st/xvmc: Set default CSC matrix to BT.601, no ProcAmp, full range RGB.
authorYounes Manton <younes.m@gmail.com>
Fri, 2 Oct 2009 02:01:18 +0000 (22:01 -0400)
committerYounes Manton <younes.m@gmail.com>
Fri, 2 Oct 2009 02:52:59 +0000 (22:52 -0400)
src/gallium/state_trackers/xorg/xvmc/context.c

index 6d90dfc367a63953f57533186a532b8e1be9777b..a002a7c84432a2d455d2d4db66b05234833ed21d 100644 (file)
@@ -8,6 +8,7 @@
 #include <vl_winsys.h>
 #include <util/u_memory.h>
 #include <util/u_debug.h>
+#include <vl/vl_csc.h>
 #include "xvmc_private.h"
 
 static Status Validate(Display *dpy, XvPortID port, int surface_type_id,
@@ -127,6 +128,7 @@ Status XvMCCreateContext(Display *dpy, XvPortID port, int surface_type_id,
    struct pipe_screen *screen;
    struct pipe_video_context *vpipe;
    XvMCContextPrivate *context_priv;
+   float csc[16];
 
    assert(dpy);
 
@@ -175,6 +177,15 @@ Status XvMCCreateContext(Display *dpy, XvPortID port, int surface_type_id,
       return BadAlloc;
    }
 
+   /* TODO: Define some Xv attribs to allow users to specify color standard, procamp */
+   vl_csc_get_matrix
+   (
+      debug_get_bool_option("G3DVL_NO_CSC", FALSE) ?
+      VL_CSC_COLOR_STANDARD_IDENTITY : VL_CSC_COLOR_STANDARD_BT_601,
+      NULL, true, csc
+   );
+   vpipe->set_csc_matrix(vpipe, csc);
+
    context_priv->vpipe = vpipe;
 
    context->context_id = XAllocID(dpy);