ffmpeg | branch: master | Steve Lhomme <rob...@gmail.com> | Wed Jan  4 13:44:12 
2017 +0100| [f67235a28cef44fcd97ae74ad53bbbc0d7f63d60] | committer: Anton 
Khirnov

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.

Signed-off-by: Anton Khirnov <an...@khirnov.net>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f67235a28cef44fcd97ae74ad53bbbc0d7f63d60
---

 libavcodec/dxva2.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/libavcodec/dxva2.c b/libavcodec/dxva2.c
index 6fc4f97d74..b0452b6a9a 100644
--- a/libavcodec/dxva2.c
+++ b/libavcodec/dxva2.c
@@ -41,19 +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], 
&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;

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

Reply via email to