[vlc-devel] [PATCH 13/23] dxva: use the surface width/height from input format in create_decoder_surfaces

Steve Lhomme robux4 at videolabs.io
Wed Jun 21 14:14:58 CEST 2017


---
 modules/codec/avcodec/d3d11va.c             |  6 +++---
 modules/codec/avcodec/dxva2.c               | 10 +++++-----
 modules/codec/avcodec/va_surface_internal.h |  2 --
 3 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/modules/codec/avcodec/d3d11va.c b/modules/codec/avcodec/d3d11va.c
index e4368a908e..1ffd4a97e6 100644
--- a/modules/codec/avcodec/d3d11va.c
+++ b/modules/codec/avcodec/d3d11va.c
@@ -860,8 +860,8 @@ static int DxCreateDecoderSurfaces(vlc_va_t *va, int codec_id,
     {
         D3D11_TEXTURE2D_DESC texDesc;
         ZeroMemory(&texDesc, sizeof(texDesc));
-        texDesc.Width = dx_sys->va_pool.surface_width;
-        texDesc.Height = dx_sys->va_pool.surface_height;
+        texDesc.Width = fmt->i_width;
+        texDesc.Height = fmt->i_height;
         texDesc.MipLevels = 1;
         texDesc.Format = sys->render;
         texDesc.SampleDesc.Count = 1;
@@ -905,7 +905,7 @@ static int DxCreateDecoderSurfaces(vlc_va_t *va, int codec_id,
         }
     }
     msg_Dbg(va, "ID3D11VideoDecoderOutputView succeed with %d surfaces (%dx%d)",
-            surface_count, dx_sys->va_pool.surface_width, dx_sys->va_pool.surface_height);
+            surface_count, fmt->i_width, fmt->i_height);
 
     D3D11_VIDEO_DECODER_DESC decoderDesc;
     ZeroMemory(&decoderDesc, sizeof(decoderDesc));
diff --git a/modules/codec/avcodec/dxva2.c b/modules/codec/avcodec/dxva2.c
index 523d847a15..a9e83f48b7 100644
--- a/modules/codec/avcodec/dxva2.c
+++ b/modules/codec/avcodec/dxva2.c
@@ -657,8 +657,8 @@ static int DxCreateVideoDecoder(vlc_va_t *va, int codec_id,
     HRESULT hr;
 
     hr = IDirectXVideoDecoderService_CreateSurface(sys->d3ddec,
-                                                         sys->va_pool.surface_width,
-                                                         sys->va_pool.surface_height,
+                                                         fmt->i_width,
+                                                         fmt->i_width,
                                                          surface_count - 1,
                                                          p_sys->render,
                                                          D3DPOOL_DEFAULT,
@@ -671,12 +671,12 @@ static int DxCreateVideoDecoder(vlc_va_t *va, int codec_id,
         return VLC_EGENERIC;
     }
     msg_Dbg(va, "IDirectXVideoAccelerationService_CreateSurface succeed with %d surfaces (%dx%d)",
-            surface_count, sys->va_pool.surface_width, sys->va_pool.surface_height);
+            surface_count, fmt->i_width, fmt->i_height);
 
     IDirect3DSurface9 *tstCrash;
     hr = IDirectXVideoDecoderService_CreateSurface(sys->d3ddec,
-                                                         sys->va_pool.surface_width,
-                                                         sys->va_pool.surface_height,
+                                                         fmt->i_width,
+                                                         fmt->i_width,
                                                          0,
                                                          p_sys->render,
                                                          D3DPOOL_DEFAULT,
diff --git a/modules/codec/avcodec/va_surface_internal.h b/modules/codec/avcodec/va_surface_internal.h
index d95505e505..9b8223f45e 100644
--- a/modules/codec/avcodec/va_surface_internal.h
+++ b/modules/codec/avcodec/va_surface_internal.h
@@ -36,8 +36,6 @@
 typedef struct
 {
     int          codec_id;
-    int          width;
-    int          height;
 
     /* */
     unsigned     surface_count;
-- 
2.12.1



More information about the vlc-devel mailing list