[FFmpeg-devel] [PATCH 2/2] dxva2: get the slice number directly from the surface in D3D11VA
Stève Lhomme
robux4 at videolabs.io
Thu Dec 1 16:13:45 EET 2016
I think I should update the minor version number as I need to rely on
this behaviour change in VLC, the surface array will be empty.
Should I also change the headers so that they don't require the output
surface to be pre-allocated ?
On Thu, Dec 1, 2016 at 3:10 PM, Steve Lhomme <robux4 at videolabs.io> wrote:
> No 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], &viewDesc);
> - return viewDesc.Texture2D.ArraySlice;
> - }
> + if (avctx->pix_fmt == AV_PIX_FMT_D3D11VA_VLD)
> + {
> + D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC viewDesc;
> + ID3D11VideoDecoderOutputView_GetDesc((ID3D11VideoDecoderOutputView*) surface, &viewDesc);
> + 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.windows.1
>
More information about the ffmpeg-devel
mailing list