vlc | branch: master | Steve Lhomme <[email protected]> | Mon Jul 8 14:34:00 2019 +0200| [6bf69a6819947cb3fcaf7f0c955fc7632d5443bc] | committer: Steve Lhomme
d3d11va: only store the ID3D11VideoDecoderOutputView in the decoder picture_sys The other D3D11 picture_sys don't need to know about it. We only need to keep it +avoid a goto and remove duplicate variable set > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6bf69a6819947cb3fcaf7f0c955fc7632d5443bc --- modules/codec/avcodec/d3d11va.c | 7 +------ modules/hw/d3d11/d3d11_surface.c | 21 ++------------------- modules/video_chroma/d3d11_fmt.c | 4 ---- modules/video_chroma/d3d11_fmt.h | 1 - 4 files changed, 3 insertions(+), 30 deletions(-) diff --git a/modules/codec/avcodec/d3d11va.c b/modules/codec/avcodec/d3d11va.c index 2188fa5d44..a157c4c1e1 100644 --- a/modules/codec/avcodec/d3d11va.c +++ b/modules/codec/avcodec/d3d11va.c @@ -167,7 +167,6 @@ static picture_context_t *d3d11va_pic_context_copy(picture_context_t *ctx) } static struct d3d11va_pic_context *CreatePicContext( - ID3D11VideoDecoderOutputView *decoderSurface, ID3D11Resource *p_resource, ID3D11DeviceContext *context, UINT slice, @@ -175,7 +174,7 @@ static struct d3d11va_pic_context *CreatePicContext( { struct d3d11va_pic_context *pic_ctx = calloc(1, sizeof(*pic_ctx)); if (unlikely(pic_ctx==NULL)) - goto done; + return NULL; pic_ctx->ctx.s = (picture_context_t) { d3d11va_pic_context_destroy, d3d11va_pic_context_copy, }; @@ -186,15 +185,12 @@ static struct d3d11va_pic_context *CreatePicContext( pic_ctx->ctx.picsys.formatTexture = txDesc.Format; pic_ctx->ctx.picsys.context = context; pic_ctx->ctx.picsys.slice_index = slice; - pic_ctx->ctx.picsys.decoder = decoderSurface; for (int i=0;i<D3D11_MAX_SHADER_VIEW; i++) { pic_ctx->ctx.picsys.resource[i] = p_resource; pic_ctx->ctx.picsys.renderSrc[i] = renderSrc[i]; } AcquireD3D11PictureSys(&pic_ctx->ctx.picsys); - pic_ctx->ctx.picsys.context = context; -done: return pic_ctx; } @@ -213,7 +209,6 @@ static picture_context_t* NewSurfacePicContext(vlc_va_t *va, vlc_va_surface_t *v resourceView[i] = sys->renderSrc[viewDesc.Texture2D.ArraySlice*D3D11_MAX_SHADER_VIEW + i]; struct d3d11va_pic_context *pic_ctx = CreatePicContext( - surface, p_resource, sys->d3d_dev.d3dcontext, viewDesc.Texture2D.ArraySlice, diff --git a/modules/hw/d3d11/d3d11_surface.c b/modules/hw/d3d11/d3d11_surface.c index 5fb048ed14..3989a0a37b 100644 --- a/modules/hw/d3d11/d3d11_surface.c +++ b/modules/hw/d3d11/d3d11_surface.c @@ -247,22 +247,13 @@ static void D3D11_YUY2(filter_t *p_filter, picture_t *src, picture_t *dst) return; } - UINT srcSlice; - D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC viewDesc; - if (p_sys->decoder) - { - ID3D11VideoDecoderOutputView_GetDesc( p_sys->decoder, &viewDesc ); - srcSlice = viewDesc.Texture2D.ArraySlice; - } - else - srcSlice = 0; + UINT srcSlice = p_sys->slice_index; ID3D11Resource *srcResource = p_sys->resource[KNOWN_DXGI_INDEX]; #if CAN_PROCESSOR if (sys->d3d_proc.procEnumerator) { HRESULT hr; - assert(p_sys->slice_index == viewDesc.Texture2D.ArraySlice); if (FAILED( D3D11_Assert_ProcessorInput(p_filter, &sys->d3d_proc, p_sys) )) return; @@ -376,15 +367,7 @@ static void D3D11_NV12(filter_t *p_filter, picture_t *src, picture_t *dst) return; } - UINT srcSlice; - if (!p_sys->decoder) - srcSlice = p_sys->slice_index; - else - { - D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC viewDesc; - ID3D11VideoDecoderOutputView_GetDesc( p_sys->decoder, &viewDesc ); - srcSlice = viewDesc.Texture2D.ArraySlice; - } + UINT srcSlice = p_sys->slice_index; ID3D11Resource *srcResource = p_sys->resource[KNOWN_DXGI_INDEX]; #if CAN_PROCESSOR diff --git a/modules/video_chroma/d3d11_fmt.c b/modules/video_chroma/d3d11_fmt.c index e171a44ec9..77156f509b 100644 --- a/modules/video_chroma/d3d11_fmt.c +++ b/modules/video_chroma/d3d11_fmt.c @@ -60,8 +60,6 @@ void AcquireD3D11PictureSys(picture_sys_d3d11_t *p_sys) } if (p_sys->context) ID3D11DeviceContext_AddRef(p_sys->context); - if (p_sys->decoder) - ID3D11VideoDecoderOutputView_AddRef(p_sys->decoder); if (p_sys->processorInput) ID3D11VideoProcessorInputView_AddRef(p_sys->processorInput); if (p_sys->processorOutput) @@ -78,8 +76,6 @@ void ReleaseD3D11PictureSys(picture_sys_d3d11_t *p_sys) } if (p_sys->context) ID3D11DeviceContext_Release(p_sys->context); - if (p_sys->decoder) - ID3D11VideoDecoderOutputView_Release(p_sys->decoder); if (p_sys->processorInput) ID3D11VideoProcessorInputView_Release(p_sys->processorInput); if (p_sys->processorOutput) diff --git a/modules/video_chroma/d3d11_fmt.h b/modules/video_chroma/d3d11_fmt.h index 048436fe76..b7452a2287 100644 --- a/modules/video_chroma/d3d11_fmt.h +++ b/modules/video_chroma/d3d11_fmt.h @@ -68,7 +68,6 @@ typedef struct /* owned by the vout for VLC_CODEC_D3D11_OPAQUE */ typedef struct { - ID3D11VideoDecoderOutputView *decoder; /* may be NULL for pictures from the pool */ union { ID3D11Texture2D *texture[D3D11_MAX_SHADER_VIEW]; ID3D11Resource *resource[D3D11_MAX_SHADER_VIEW]; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
