summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimo Rothenpieler <timo@rothenpieler.org>2023-03-10 13:09:10 +0100
committerTimo Rothenpieler <timo@rothenpieler.org>2023-03-10 13:17:52 +0100
commit916bdc0f197de7ea24d30f3f3c284e4332dd3720 (patch)
tree6dd2cf16ab575a327aeff667c57f5a37076cd0f6
parent58f18df430d48e47a82c5e740d6e63a50c97d75f (diff)
downloadffmpeg-916bdc0f197de7ea24d30f3f3c284e4332dd3720.tar.gz
avcodec/nvenc: avoid failing b_ref_mode check when unset
-rw-r--r--libavcodec/nvenc.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c
index a8b7a4c0a0..9acf3e8697 100644
--- a/libavcodec/nvenc.c
+++ b/libavcodec/nvenc.c
@@ -459,7 +459,7 @@ static int nvenc_check_cap(AVCodecContext *avctx, NV_ENC_CAPS cap)
static int nvenc_check_capabilities(AVCodecContext *avctx)
{
NvencContext *ctx = avctx->priv_data;
- int ret;
+ int tmp, ret;
ret = nvenc_check_codec_support(avctx);
if (ret < 0) {
@@ -540,16 +540,18 @@ static int nvenc_check_capabilities(AVCodecContext *avctx)
}
#ifdef NVENC_HAVE_BFRAME_REF_MODE
+ tmp = (ctx->b_ref_mode >= 0) ? ctx->b_ref_mode : NV_ENC_BFRAME_REF_MODE_DISABLED;
ret = nvenc_check_cap(avctx, NV_ENC_CAPS_SUPPORT_BFRAME_REF_MODE);
- if (ctx->b_ref_mode == NV_ENC_BFRAME_REF_MODE_EACH && ret != 1 && ret != 3) {
+ if (tmp == NV_ENC_BFRAME_REF_MODE_EACH && ret != 1 && ret != 3) {
av_log(avctx, AV_LOG_WARNING, "Each B frame as reference is not supported\n");
return AVERROR(ENOSYS);
- } else if (ctx->b_ref_mode != NV_ENC_BFRAME_REF_MODE_DISABLED && ret == 0) {
+ } else if (tmp != NV_ENC_BFRAME_REF_MODE_DISABLED && ret == 0) {
av_log(avctx, AV_LOG_WARNING, "B frames as references are not supported\n");
return AVERROR(ENOSYS);
}
#else
- if (ctx->b_ref_mode != 0) {
+ tmp = (ctx->b_ref_mode >= 0) ? ctx->b_ref_mode : 0;
+ if (tmp > 0) {
av_log(avctx, AV_LOG_WARNING, "B frames as references need SDK 8.1 at build time\n");
return AVERROR(ENOSYS);
}