]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/dxva2.c
lavf/riffenc: Always write unexpected channel_mask.
[ffmpeg] / libavcodec / dxva2.c
index f68df860dcd4aa088b797a43d5f2df252614a89b..e1682334028611dbdeff9d3d1b365c2c3241e4b0 100644 (file)
@@ -42,8 +42,18 @@ unsigned ff_dxva2_get_surface_index(const AVCodecContext *avctx,
     unsigned i;
 
     for (i = 0; i < DXVA_CONTEXT_COUNT(avctx, ctx); i++)
-        if (DXVA_CONTEXT_SURFACE(avctx, ctx, i) == surface)
+#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;
+        }
+#endif
+#if CONFIG_DXVA2
+        if (avctx->pix_fmt == AV_PIX_FMT_DXVA2_VLD && ctx->dxva2.surface[i] == surface)
             return i;
+#endif
 
     assert(0);
     return 0;