[vlc-devel] [PATCH 06/18] d3d11: set the Close callback in the generated operations structure

Steve Lhomme robux4 at ycbcr.xyz
Thu Oct 8 10:32:00 CEST 2020


---
 modules/hw/d3d11/d3d11_filters.c |  2 +-
 modules/hw/d3d11/d3d11_filters.h |  1 -
 modules/hw/d3d11/d3d11_surface.c | 33 ++++++++++++++++----------------
 3 files changed, 17 insertions(+), 19 deletions(-)

diff --git a/modules/hw/d3d11/d3d11_filters.c b/modules/hw/d3d11/d3d11_filters.c
index a8f59e5d4b9..abd43d7ae1c 100644
--- a/modules/hw/d3d11/d3d11_filters.c
+++ b/modules/hw/d3d11/d3d11_filters.c
@@ -599,7 +599,7 @@ vlc_module_begin()
 
     add_submodule()
     set_capability( "video converter", 10 )
-    set_callbacks( D3D11OpenConverter, D3D11CloseConverter )
+    set_callback( D3D11OpenConverter )
 
     add_submodule()
     set_callback( D3D11OpenCPUConverter )
diff --git a/modules/hw/d3d11/d3d11_filters.h b/modules/hw/d3d11/d3d11_filters.h
index 555d2b6ba3a..fbc1e2fd6af 100644
--- a/modules/hw/d3d11/d3d11_filters.h
+++ b/modules/hw/d3d11/d3d11_filters.h
@@ -30,7 +30,6 @@
 
 int  D3D11OpenDeinterlace(vlc_object_t *);
 int  D3D11OpenConverter(vlc_object_t *);
-void D3D11CloseConverter(vlc_object_t *);
 int  D3D11OpenCPUConverter(vlc_object_t *);
 
 int  D3D11OpenDecoderDeviceW8(vlc_decoder_device *, vout_window_t *);
diff --git a/modules/hw/d3d11/d3d11_surface.c b/modules/hw/d3d11/d3d11_surface.c
index fe20618a696..9fa42114aac 100644
--- a/modules/hw/d3d11/d3d11_surface.c
+++ b/modules/hw/d3d11/d3d11_surface.c
@@ -591,9 +591,22 @@ static void NV12_D3D11(filter_t *p_filter, picture_t *src, picture_t *dst)
     dst->i_planes = 0;
 }
 
-VIDEO_FILTER_WRAPPER (D3D11_NV12)
-VIDEO_FILTER_WRAPPER (D3D11_YUY2)
-VIDEO_FILTER_WRAPPER (D3D11_RGBA)
+static void D3D11CloseConverter( filter_t *p_filter )
+{
+    filter_sys_t *p_sys = p_filter->p_sys;
+#if CAN_PROCESSOR
+    if (p_sys->procOutTexture)
+        ID3D11Texture2D_Release(p_sys->procOutTexture);
+    D3D11_ReleaseProcessor( &p_sys->d3d_proc );
+#endif
+    CopyCleanCache(&p_sys->cache);
+    if (p_sys->staging)
+        ID3D11Texture2D_Release(p_sys->staging);
+}
+
+VIDEO_FILTER_WRAPPER_CLOSE(D3D11_NV12, D3D11CloseConverter)
+VIDEO_FILTER_WRAPPER_CLOSE(D3D11_YUY2, D3D11CloseConverter)
+VIDEO_FILTER_WRAPPER_CLOSE(D3D11_RGBA, D3D11CloseConverter)
 
 static picture_t *AllocateCPUtoGPUTexture(filter_t *p_filter, filter_sys_t *p_sys)
 {
@@ -845,17 +858,3 @@ done:
     }
     return err;
 }
-
-void D3D11CloseConverter( vlc_object_t *obj )
-{
-    filter_t *p_filter = (filter_t *)obj;
-    filter_sys_t *p_sys = p_filter->p_sys;
-#if CAN_PROCESSOR
-    if (p_sys->procOutTexture)
-        ID3D11Texture2D_Release(p_sys->procOutTexture);
-    D3D11_ReleaseProcessor( &p_sys->d3d_proc );
-#endif
-    CopyCleanCache(&p_sys->cache);
-    if (p_sys->staging)
-        ID3D11Texture2D_Release(p_sys->staging);
-}
-- 
2.26.2



More information about the vlc-devel mailing list