[vlc-devel] [PATCH 1/7] d3d11_fmt: share the code to release the picture_sys_t data
Steve Lhomme
robux4 at videolabs.io
Thu May 11 09:36:03 CEST 2017
---
modules/video_chroma/d3d11_fmt.h | 26 ++++++++++++++++++++++++++
modules/video_output/win32/direct3d11.c | 32 +++-----------------------------
2 files changed, 29 insertions(+), 29 deletions(-)
diff --git a/modules/video_chroma/d3d11_fmt.h b/modules/video_chroma/d3d11_fmt.h
index 3bf004a119..aa43c46d08 100644
--- a/modules/video_chroma/d3d11_fmt.h
+++ b/modules/video_chroma/d3d11_fmt.h
@@ -48,4 +48,30 @@ struct picture_sys_t
* (ie not DXGI_FORMAT_UNKNWON) */
#define KNOWN_DXGI_INDEX 0
+static inline void ReleasePictureSys(picture_sys_t *p_sys)
+{
+ for (int i=0; i<D3D11_MAX_SHADER_VIEW; i++) {
+ if (p_sys->resourceView[i]) {
+ ID3D11ShaderResourceView_Release(p_sys->resourceView[i]);
+ p_sys->resourceView[i] = NULL;
+ }
+ if (p_sys->texture[i]) {
+ ID3D11Texture2D_Release(p_sys->texture[i]);
+ p_sys->texture[i] = NULL;
+ }
+ }
+ if (p_sys->context) {
+ ID3D11DeviceContext_Release(p_sys->context);
+ p_sys->context = NULL;
+ }
+ if (p_sys->decoder) {
+ ID3D11VideoDecoderOutputView_Release(p_sys->decoder);
+ p_sys->decoder = NULL;
+ }
+ if (p_sys->processorInput) {
+ ID3D11VideoProcessorInputView_Release(p_sys->processorInput);
+ p_sys->processorInput = NULL;
+ }
+}
+
#endif /* include-guard */
diff --git a/modules/video_output/win32/direct3d11.c b/modules/video_output/win32/direct3d11.c
index 8b24ad4870..e9fcb83dca 100644
--- a/modules/video_output/win32/direct3d11.c
+++ b/modules/video_output/win32/direct3d11.c
@@ -855,36 +855,10 @@ error:
return sys->sys.pool;
}
-static void ReleasePictureResources(picture_sys_t *p_sys)
-{
- for (int i=0; i<D3D11_MAX_SHADER_VIEW; i++) {
- if (p_sys->resourceView[i]) {
- ID3D11ShaderResourceView_Release(p_sys->resourceView[i]);
- p_sys->resourceView[i] = NULL;
- }
- if (p_sys->texture[i]) {
- ID3D11Texture2D_Release(p_sys->texture[i]);
- p_sys->texture[i] = NULL;
- }
- }
- if (p_sys->context) {
- ID3D11DeviceContext_Release(p_sys->context);
- p_sys->context = NULL;
- }
- if (p_sys->decoder) {
- ID3D11VideoDecoderOutputView_Release(p_sys->decoder);
- p_sys->decoder = NULL;
- }
- if (p_sys->processorInput) {
- ID3D11VideoProcessorInputView_Release(p_sys->processorInput);
- p_sys->processorInput = NULL;
- }
-}
-
static void DestroyDisplayPoolPicture(picture_t *picture)
{
picture_sys_t *p_sys = picture->p_sys;
- ReleasePictureResources( p_sys );
+ ReleasePictureSys( p_sys );
free(p_sys);
free(picture);
}
@@ -2640,7 +2614,7 @@ static void ReleaseQuad(d3d_quad_t *quad)
ID3D11Buffer_Release(quad->pVertexShaderConstants);
quad->pVertexShaderConstants = NULL;
}
- ReleasePictureResources(&quad->picSys);
+ ReleasePictureSys(&quad->picSys);
}
static void Direct3D11DestroyResources(vout_display_t *vd)
@@ -2653,7 +2627,7 @@ static void Direct3D11DestroyResources(vout_display_t *vd)
Direct3D11DeleteRegions(sys->d3dregion_count, sys->d3dregions);
sys->d3dregion_count = 0;
- ReleasePictureResources(&sys->stagingSys);
+ ReleasePictureSys(&sys->stagingSys);
if (sys->flatVSShader)
{
--
2.12.1
More information about the vlc-devel
mailing list