vlc | branch: master | Steve Lhomme <[email protected]> | Mon May 29 15:00:56 2017 +0200| [ae6780d6890ea24fc0c322a0d046f197dbcac0e6] | committer: Jean-Baptiste Kempf
d3d11va: do not use the vlc_va_surface_t picture anymore Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=ae6780d6890ea24fc0c322a0d046f197dbcac0e6 --- modules/codec/avcodec/d3d11va.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/modules/codec/avcodec/d3d11va.c b/modules/codec/avcodec/d3d11va.c index 6bdfe2db46..fa64c9dd63 100644 --- a/modules/codec/avcodec/d3d11va.c +++ b/modules/codec/avcodec/d3d11va.c @@ -174,11 +174,7 @@ void SetupAVCodecContext(vlc_va_t *va) static int Extract(vlc_va_t *va, picture_t *output, uint8_t *data) { - vlc_va_surface_t *surface = output->p_sys->va_surface; - int ret = VLC_SUCCESS; - - picture_sys_t *p_sys_out = surface ? surface->p_pic->p_sys : output->p_sys; - + picture_sys_t *p_sys_out = output->p_sys; assert(p_sys_out->texture[KNOWN_DXGI_INDEX] != NULL); #if D3D11_DIRECT_DECODE @@ -187,8 +183,8 @@ static int Extract(vlc_va_t *va, picture_t *output, uint8_t *data) { vlc_va_sys_t *sys = va->sys; ID3D11VideoDecoderOutputView *src = (ID3D11VideoDecoderOutputView*)(uintptr_t)data; - picture_sys_t *p_sys_in = surface->p_pic->p_sys; - assert(p_sys_in->decoder == src); + ID3D11Resource *p_texture; + ID3D11VideoDecoderOutputView_GetResource(src, &p_texture); if( sys->context_mutex != INVALID_HANDLE_VALUE ) { WaitForSingleObjectEx( sys->context_mutex, INFINITE, FALSE ); @@ -206,19 +202,17 @@ static int Extract(vlc_va_t *va, picture_t *output, uint8_t *data) }; ID3D11DeviceContext_CopySubresourceRegion(sys->d3dctx, p_sys_out->resource[KNOWN_DXGI_INDEX], p_sys_out->slice_index, 0, 0, 0, - p_sys_in->resource[KNOWN_DXGI_INDEX], + p_texture, viewDesc.Texture2D.ArraySlice, ©Box); + ID3D11Resource_Release(p_texture); if( sys->context_mutex != INVALID_HANDLE_VALUE ) { ReleaseMutex( sys->context_mutex ); } } #endif - if (!output->p_sys && surface->p_pic && surface->p_pic->p_sys) - /* HW decoding in a software pipe, pass the texture to upstream filters */ - output->p_sys = surface->p_pic->p_sys; - return ret; + return VLC_SUCCESS; } static int CheckDevice(vlc_va_t *va) _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
