summaryrefslogtreecommitdiffstats
path: root/libavcodec/nvenc.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavcodec/nvenc.c')
-rw-r--r--libavcodec/nvenc.c43
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;
}
}
OpenPOWER on IntegriCloud