[vlc-devel] [PATCH] direct3d11: support YV12 which works better with DXVA2

Steve Lhomme robux4 at videolabs.io
Wed Apr 1 10:55:55 CEST 2015


--
swscale won't be needed between DXVA2 and D3D11
---
 modules/video_output/msw/direct3d11.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/modules/video_output/msw/direct3d11.c b/modules/video_output/msw/direct3d11.c
index 8ce639d..d9a140f 100644
--- a/modules/video_output/msw/direct3d11.c
+++ b/modules/video_output/msw/direct3d11.c
@@ -74,6 +74,7 @@ typedef struct
 
 static const d3d_format_t d3d_formats[] = {
     { "I420",     DXGI_FORMAT_NV12,           VLC_CODEC_I420,     DXGI_FORMAT_R8_UNORM,           DXGI_FORMAT_R8G8_UNORM },
+    { "YV12",     DXGI_FORMAT_NV12,           VLC_CODEC_YV12,     DXGI_FORMAT_R8_UNORM,           DXGI_FORMAT_R8G8_UNORM },
     { "NV12",     DXGI_FORMAT_NV12,           VLC_CODEC_NV12,     DXGI_FORMAT_R8_UNORM,           DXGI_FORMAT_R8G8_UNORM },
 #ifdef BROKEN_PIXEL
     { "YUY2",     DXGI_FORMAT_YUY2,           VLC_CODEC_I422,     DXGI_FORMAT_R8G8B8A8_UNORM,     0 },
@@ -749,6 +750,7 @@ static int Direct3D11Open(vout_display_t *vd, video_format_t *fmt)
         else
             sys->d3dPxShader = globPixelShaderBiplanarYUV_BT601_2RGB;
         break;
+    case VLC_CODEC_YV12:
     case VLC_CODEC_I420:
         if( fmt->i_height > 576 )
             sys->d3dPxShader = globPixelShaderBiplanarI420_BT709_2RGB;
-- 
2.3.0




More information about the vlc-devel mailing list