[vlc-devel] [PATCH] direct3d: the surface allocated for the pool needs to have the decoder sizeof

Steve Lhomme robux4 at gmail.com
Mon Sep 7 14:40:04 CEST 2015


we must crop the decoded surface manually
---
 modules/video_output/msw/direct3d.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/modules/video_output/msw/direct3d.c b/modules/video_output/msw/direct3d.c
index 7fa4585..edd3d60 100644
--- a/modules/video_output/msw/direct3d.c
+++ b/modules/video_output/msw/direct3d.c
@@ -971,8 +971,8 @@ static int Direct3DCreatePool(vout_display_t *vd, video_format_t *fmt)
     /* Create a surface */
     LPDIRECT3DSURFACE9 surface;
     HRESULT hr = IDirect3DDevice9_CreateOffscreenPlainSurface(d3ddev,
-                                                              fmt->i_visible_width,
-                                                              fmt->i_visible_height,
+                                                              fmt->i_width,
+                                                              fmt->i_height,
                                                               d3dfmt->format,
                                                               D3DPOOL_DEFAULT,
                                                               &surface,
@@ -1461,7 +1461,12 @@ static int Direct3DImportPicture(vout_display_t *vd,
 
     /* Copy picture surface into texture surface
      * color space conversion happen here */
-    hr = IDirect3DDevice9_StretchRect(sys->d3ddev, source, NULL, destination, NULL, D3DTEXF_LINEAR);
+    RECT cropSource;
+    cropSource.left = 0;
+    cropSource.top = 0;
+    cropSource.right = vd->fmt.i_visible_width;
+    cropSource.bottom = vd->fmt.i_visible_height;
+    hr = IDirect3DDevice9_StretchRect(sys->d3ddev, source, &cropSource, destination, NULL, D3DTEXF_LINEAR);
     IDirect3DSurface9_Release(destination);
     if (FAILED(hr)) {
         msg_Dbg(vd, "%s:%d (hr=0x%0lX)", __FUNCTION__, __LINE__, hr);
-- 
2.5.0



More information about the vlc-devel mailing list