diff options
Diffstat (limited to 'libavcodec/nvenc.c')
-rw-r--r-- | libavcodec/nvenc.c | 43 |
1 files changed, 12 insertions, 31 deletions
diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c index 7166b9d..d984b58 100644 --- a/libavcodec/nvenc.c +++ b/libavcodec/nvenc.c @@ -603,9 +603,6 @@ static av_cold void nvenc_setup_rate_control(AVCodecContext *avctx) ctx->encode_config.rcParams.maxBitRate = avctx->rc_max_rate; if (ctx->flags & NVENC_LOSSLESS) { - if (avctx->codec->id == AV_CODEC_ID_H264) - ctx->encode_config.encodeCodecConfig.h264Config.qpPrimeYZeroTransformBypassFlag = 1; - set_lossless(avctx); avctx->qmin = -1; @@ -710,42 +707,26 @@ static av_cold int nvenc_setup_h264_config(AVCodecContext *avctx) h264->outputAUD = 1; - if (!ctx->profile && !(ctx->flags & NVENC_LOSSLESS)) { - switch (avctx->profile) { - case FF_PROFILE_H264_HIGH_444_PREDICTIVE: - cc->profileGUID = NV_ENC_H264_PROFILE_HIGH_444_GUID; - break; - case FF_PROFILE_H264_BASELINE: + if (ctx->flags & NVENC_LOSSLESS) { + h264->qpPrimeYZeroTransformBypassFlag = 1; + } else { + switch(ctx->profile) { + case NV_ENC_H264_PROFILE_BASELINE: cc->profileGUID = NV_ENC_H264_PROFILE_BASELINE_GUID; + avctx->profile = FF_PROFILE_H264_BASELINE; break; - case FF_PROFILE_H264_MAIN: + case NV_ENC_H264_PROFILE_MAIN: cc->profileGUID = NV_ENC_H264_PROFILE_MAIN_GUID; + avctx->profile = FF_PROFILE_H264_MAIN; break; - case FF_PROFILE_H264_HIGH: - case FF_PROFILE_UNKNOWN: - cc->profileGUID = NV_ENC_H264_PROFILE_HIGH_GUID; - break; - default: - av_log(avctx, AV_LOG_WARNING, "Unsupported profile requested, falling back to high\n"); - cc->profileGUID = NV_ENC_H264_PROFILE_HIGH_GUID; - break; - } - } else if (!(ctx->flags & NVENC_LOSSLESS)) { - if (!strcmp(ctx->profile, "high")) { + case NV_ENC_H264_PROFILE_HIGH: cc->profileGUID = NV_ENC_H264_PROFILE_HIGH_GUID; avctx->profile = FF_PROFILE_H264_HIGH; - } else if (!strcmp(ctx->profile, "main")) { - cc->profileGUID = NV_ENC_H264_PROFILE_MAIN_GUID; - avctx->profile = FF_PROFILE_H264_MAIN; - } else if (!strcmp(ctx->profile, "baseline")) { - cc->profileGUID = NV_ENC_H264_PROFILE_BASELINE_GUID; - avctx->profile = FF_PROFILE_H264_BASELINE; - } else if (!strcmp(ctx->profile, "high444p")) { + break; + case NV_ENC_H264_PROFILE_HIGH_444P: cc->profileGUID = NV_ENC_H264_PROFILE_HIGH_444_GUID; avctx->profile = FF_PROFILE_H264_HIGH_444_PREDICTIVE; - } else { - av_log(avctx, AV_LOG_FATAL, "Profile \"%s\" is unknown! Supported profiles: high, main, baseline\n", ctx->profile); - return AVERROR(EINVAL); + break; } } |