vlc | branch: master | Steve Lhomme <[email protected]> | Mon Sep 2 09:51:35 2019 +0200| [e214fc174c4775ee20132dcdc0ef8a2122aa2a5f] | committer: Steve Lhomme
d3d11va: avoid redundant storage with the lavc structure > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e214fc174c4775ee20132dcdc0ef8a2122aa2a5f --- modules/codec/avcodec/d3d11va.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/modules/codec/avcodec/d3d11va.c b/modules/codec/avcodec/d3d11va.c index 676c90b3b2..7b3900ea7b 100644 --- a/modules/codec/avcodec/d3d11va.c +++ b/modules/codec/avcodec/d3d11va.c @@ -106,7 +106,6 @@ struct vlc_va_sys_t d3d11_device_t d3d_dev; /* Video service */ - ID3D11VideoContext *d3dvidctx; DXGI_FORMAT render; /* pool */ @@ -116,7 +115,6 @@ struct vlc_va_sys_t D3D11_VIDEO_DECODER_CONFIG cfg; GUID decoder_guid; ID3D11VideoDevice *d3ddec; - ID3D11VideoDecoder *dxdecoder; /* avcodec internals */ struct AVD3D11VAContext hw; @@ -140,8 +138,6 @@ static void DxDestroySurfaces(vlc_va_sys_t *); static void SetupAVCodecContext(vlc_va_sys_t *sys, unsigned surfaces) { - sys->hw.video_context = sys->d3dvidctx; - sys->hw.decoder = sys->dxdecoder; sys->hw.cfg = &sys->cfg; sys->hw.surface_count = surfaces; sys->hw.surface = sys->hw_surface; @@ -361,7 +357,7 @@ static int Open(vlc_va_t *va, AVCodecContext *ctx, enum PixelFormat pix_fmt, msg_Err(va, "Could not Query ID3D11VideoContext Interface from the picture. (hr=0x%lX)", hr); D3D11_ReleaseDevice(&sys->d3d_dev); } else { - sys->d3dvidctx = d3dvidctx; + sys->hw.video_context = d3dvidctx; assert(p_sys->texture[KNOWN_DXGI_INDEX] != NULL); D3D11_TEXTURE2D_DESC dstDesc; @@ -457,7 +453,7 @@ static int D3dCreateDevice(vlc_va_t *va) ID3D11Device_Release(sys->d3d_dev.d3ddevice); return VLC_EGENERIC; } - sys->d3dvidctx = d3dvidctx; + sys->hw.video_context = d3dvidctx; void *d3dviddev = NULL; hr = ID3D11Device_QueryInterface(sys->d3d_dev.d3ddevice, &IID_ID3D11VideoDevice, &d3dviddev); @@ -465,7 +461,7 @@ static int D3dCreateDevice(vlc_va_t *va) msg_Err(va, "Could not Query ID3D11VideoDevice Interface. (hr=0x%lX)", hr); ID3D11DeviceContext_Release(sys->d3d_dev.d3dcontext); ID3D11Device_Release(sys->d3d_dev.d3ddevice); - ID3D11VideoContext_Release(sys->d3dvidctx); + ID3D11VideoContext_Release(sys->hw.video_context); return VLC_EGENERIC; } sys->d3ddec = d3dviddev; @@ -480,7 +476,7 @@ static void D3dDestroyDevice(vlc_va_t *va) { vlc_va_sys_t *sys = va->sys; ID3D11VideoDevice_Release(sys->d3ddec); - ID3D11VideoContext_Release(sys->d3dvidctx); + ID3D11VideoContext_Release(sys->hw.video_context); D3D11_ReleaseDevice( &sys->d3d_dev ); } @@ -909,10 +905,10 @@ static int DxCreateDecoderSurfaces(vlc_va_t *va, int codec_id, hr = ID3D11VideoDevice_CreateVideoDecoder( sys->d3ddec, &decoderDesc, &sys->cfg, &decoder ); if (FAILED(hr)) { msg_Err(va, "ID3D11VideoDevice_CreateVideoDecoder failed. (hr=0x%lX)", hr); - sys->dxdecoder = NULL; + sys->hw.decoder = NULL; return VLC_EGENERIC; } - sys->dxdecoder = decoder; + sys->hw.decoder = decoder; msg_Dbg(va, "DxCreateDecoderSurfaces succeed"); return VLC_SUCCESS; @@ -936,6 +932,6 @@ static void DxDestroySurfaces(vlc_va_sys_t *sys) ID3D11ShaderResourceView_Release(sys->renderSrc[i*D3D11_MAX_SHADER_VIEW + j]); } } - if (sys->dxdecoder) - ID3D11VideoDecoder_Release(sys->dxdecoder); + if (sys->hw.decoder) + ID3D11VideoDecoder_Release(sys->hw.decoder); } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
