[FFmpeg-devel] [PATCH 3/4] dxva2: get the slice number directly from the surface in D3D11VA
No need to loop through the known surfaces, we'll use the requested surface anyway. The loop is only done for DXVA2. --- libavcodec/dxva2.c | 15 +++ 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/libavcodec/dxva2.c b/libavcodec/dxva2.c index 2ac3f3e..c782f1c 100644 --- a/libavcodec/dxva2.c +++ b/libavcodec/dxva2.c @@ -41,20 +41,19 @@ unsigned ff_dxva2_get_surface_index(const AVCodecContext *avctx, void *surface = get_surface(frame); unsigned i; -for (i = 0; i < DXVA_CONTEXT_COUNT(avctx, ctx); i++) { #if CONFIG_D3D11VA -if (avctx->pix_fmt == AV_PIX_FMT_D3D11VA_VLD && ctx->d3d11va.surface[i] == surface) -{ -D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC viewDesc; -ID3D11VideoDecoderOutputView_GetDesc(ctx->d3d11va.surface[i], ); -return viewDesc.Texture2D.ArraySlice; -} +if (avctx->pix_fmt == AV_PIX_FMT_D3D11VA_VLD) { +D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC viewDesc; +ID3D11VideoDecoderOutputView_GetDesc((ID3D11VideoDecoderOutputView*) surface, ); +return viewDesc.Texture2D.ArraySlice; +} #endif #if CONFIG_DXVA2 +for (i = 0; i < DXVA_CONTEXT_COUNT(avctx, ctx); i++) { if (avctx->pix_fmt == AV_PIX_FMT_DXVA2_VLD && ctx->dxva2.surface[i] == surface) return i; -#endif } +#endif assert(0); return 0; -- 2.10.2 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH 3/4] dxva2: get the slice number directly from the surface in D3D11VA
From: Steve LhommeNo need to loop through the known surfaces, we'll use it anyway. The loop is only done for DXVA2 --- libavcodec/dxva2.c | 16 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/libavcodec/dxva2.c b/libavcodec/dxva2.c index a64b1b5..459e267 100644 --- a/libavcodec/dxva2.c +++ b/libavcodec/dxva2.c @@ -41,20 +41,20 @@ unsigned ff_dxva2_get_surface_index(const AVCodecContext *avctx, void *surface = ff_dxva2_get_surface(frame); unsigned i; -for (i = 0; i < DXVA_CONTEXT_COUNT(avctx, ctx); i++) { #if CONFIG_D3D11VA -if (avctx->pix_fmt == AV_PIX_FMT_D3D11VA_VLD && ctx->d3d11va.surface[i] == surface) -{ -D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC viewDesc; -ID3D11VideoDecoderOutputView_GetDesc(ctx->d3d11va.surface[i], ); -return viewDesc.Texture2D.ArraySlice; -} +if (avctx->pix_fmt == AV_PIX_FMT_D3D11VA_VLD) +{ +D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC viewDesc; +ID3D11VideoDecoderOutputView_GetDesc((ID3D11VideoDecoderOutputView*) surface, ); +return viewDesc.Texture2D.ArraySlice; +} #endif #if CONFIG_DXVA2 +for (i = 0; i < DXVA_CONTEXT_COUNT(avctx, ctx); i++) { if (avctx->pix_fmt == AV_PIX_FMT_DXVA2_VLD && ctx->dxva2.surface[i] == surface) return i; -#endif } +#endif assert(0); return 0; -- 2.10.1 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel