[vlc-devel] [PATCH 13/29] direct3d11: the magic value for the white point is 16/256
Steve Lhomme
robux4 at videolabs.io
Thu Jan 19 11:10:48 CET 2017
That's the "studio" range shifted for full range RGB.
--
replaces https://patches.videolan.org/patch/15373/
* fix compilation
---
modules/video_output/win32/direct3d11.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/modules/video_output/win32/direct3d11.c b/modules/video_output/win32/direct3d11.c
index 24f566d..5535dd3 100644
--- a/modules/video_output/win32/direct3d11.c
+++ b/modules/video_output/win32/direct3d11.c
@@ -1887,6 +1887,7 @@ static int AllocQuad(vout_display_t *vd, const video_format_t *fmt, d3d_quad_t *
vout_display_sys_t *sys = vd->sys;
D3D11_MAPPED_SUBRESOURCE mappedResource;
HRESULT hr;
+ static const FLOAT FULL_TO_STUDIO_SHIFT = 16.f / 256.f;
/* pixel shader constant buffer */
PS_CONSTANT_BUFFER defaultConstants = {
@@ -1906,7 +1907,7 @@ static int AllocQuad(vout_display_t *vd, const video_format_t *fmt, d3d_quad_t *
goto error;
}
- static const FLOAT WHITE_POINT_D65[4] = { -0.0625f, -0.5f, -0.5f, 1.f };
+ static const FLOAT WHITE_POINT_D65_TO_FULL[4] = { -FULL_TO_STUDIO_SHIFT, -0.5f, -0.5f, 1.f };
static const FLOAT COLORSPACE_BT601_TO_FULL[4*4] = {
1.164383561643836f, 0.f, 1.596026785714286f, 0.f,
@@ -1949,7 +1950,7 @@ static int AllocQuad(vout_display_t *vd, const video_format_t *fmt, d3d_quad_t *
break;
}
memcpy(colorspace.Colorspace, ppColorspace, sizeof(colorspace.Colorspace));
- memcpy(colorspace.WhitePoint, WHITE_POINT_D65, sizeof(colorspace.WhitePoint));
+ memcpy(colorspace.WhitePoint, WHITE_POINT_D65_TO_FULL, sizeof(colorspace.WhitePoint));
constantInit.pSysMem = &colorspace;
static_assert((sizeof(PS_COLOR_TRANSFORM)%16)==0,"Constant buffers require 16-byte alignment");
--
2.10.2
More information about the vlc-devel
mailing list