Browse Source

avcodec/nvenc: make gpu indices independend of supported capabilities

tags/n3.3
Timo Rothenpieler 8 years ago
parent
commit
5403d90f32
1 changed files with 5 additions and 2 deletions
  1. +5
    -2
      libavcodec/nvenc.c

+ 5
- 2
libavcodec/nvenc.c View File

@@ -338,6 +338,9 @@ static av_cold int nvenc_check_device(AVCodecContext *avctx, int idx)
goto fail; goto fail;
} }


if (ctx->device != idx && ctx->device != ANY_DEVICE)
return -1;

cu_res = dl_fn->cuda_dl->cuCtxCreate(&ctx->cu_context_internal, 0, cu_device); cu_res = dl_fn->cuda_dl->cuCtxCreate(&ctx->cu_context_internal, 0, cu_device);
if (cu_res != CUDA_SUCCESS) { if (cu_res != CUDA_SUCCESS) {
av_log(avctx, AV_LOG_FATAL, "Failed creating CUDA context for NVENC: 0x%x\n", (int)cu_res); av_log(avctx, AV_LOG_FATAL, "Failed creating CUDA context for NVENC: 0x%x\n", (int)cu_res);
@@ -362,7 +365,7 @@ static av_cold int nvenc_check_device(AVCodecContext *avctx, int idx)


dl_fn->nvenc_device_count++; dl_fn->nvenc_device_count++;


if (ctx->device == dl_fn->nvenc_device_count - 1 || ctx->device == ANY_DEVICE)
if (ctx->device == idx || ctx->device == ANY_DEVICE)
return 0; return 0;


fail3: fail3:
@@ -451,7 +454,7 @@ static av_cold int nvenc_setup_device(AVCodecContext *avctx)
return AVERROR_EXTERNAL; return AVERROR_EXTERNAL;
} }


av_log(avctx, AV_LOG_FATAL, "Requested GPU %d, but only %d GPUs are available!\n", ctx->device, dl_fn->nvenc_device_count);
av_log(avctx, AV_LOG_FATAL, "Requested GPU %d, but only %d GPUs are available!\n", ctx->device, nb_devices);
return AVERROR(EINVAL); return AVERROR(EINVAL);
} }




Loading…
Cancel
Save