nvenc: make gpu indices independent of supported capabilities
authorTimo Rothenpieler <timo@rothenpieler.org>
Tue, 7 Feb 2017 02:04:39 +0000 (18:04 -0800)
committerLuca Barbato <lu_zero@gentoo.org>
Thu, 9 Feb 2017 22:29:32 +0000 (23:29 +0100)
Do not allocate a CUDA context for every available gpu.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
libavcodec/nvenc.c

index fe7b7f4..90b9d1a 100644 (file)
@@ -359,6 +359,9 @@ static int nvenc_check_device(AVCodecContext *avctx, int idx)
     if (((major << 4) | minor) < NVENC_CAP)
         goto fail;
 
+    if (ctx->device != idx && ctx->device != ANY_DEVICE)
+        return -1;
+
     ret = nvel->cu_ctx_create(&ctx->cu_context_internal, 0, cu_device);
     if (ret != CUDA_SUCCESS)
         goto fail;
@@ -377,7 +380,7 @@ static int nvenc_check_device(AVCodecContext *avctx, int idx)
 
     av_log(avctx, loglevel, "supports NVENC\n");
 
-    if (ctx->device == cu_device || ctx->device == ANY_DEVICE)
+    if (ctx->device == idx || ctx->device == ANY_DEVICE)
         return 0;
 
 fail3: