mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-04-19 09:02:26 +02:00
avcodec/nvenc: add HEVC REXT profile
This commit is contained in:
parent
a81b000a39
commit
033f98c902
@ -864,6 +864,10 @@ static av_cold int nvenc_setup_hevc_config(AVCodecContext *avctx)
|
|||||||
cc->profileGUID = NV_ENC_HEVC_PROFILE_MAIN10_GUID;
|
cc->profileGUID = NV_ENC_HEVC_PROFILE_MAIN10_GUID;
|
||||||
avctx->profile = FF_PROFILE_HEVC_MAIN_10;
|
avctx->profile = FF_PROFILE_HEVC_MAIN_10;
|
||||||
break;
|
break;
|
||||||
|
case NV_ENC_HEVC_PROFILE_REXT:
|
||||||
|
cc->profileGUID = NV_ENC_HEVC_PROFILE_FREXT_GUID;
|
||||||
|
avctx->profile = FF_PROFILE_HEVC_REXT;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// force setting profile as main10 if input is 10 bit
|
// force setting profile as main10 if input is 10 bit
|
||||||
@ -872,6 +876,12 @@ static av_cold int nvenc_setup_hevc_config(AVCodecContext *avctx)
|
|||||||
avctx->profile = FF_PROFILE_HEVC_MAIN_10;
|
avctx->profile = FF_PROFILE_HEVC_MAIN_10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// force setting profile as rext if input is yuv444
|
||||||
|
if (IS_YUV444(ctx->data_pix_fmt)) {
|
||||||
|
cc->profileGUID = NV_ENC_HEVC_PROFILE_FREXT_GUID;
|
||||||
|
avctx->profile = FF_PROFILE_HEVC_REXT;
|
||||||
|
}
|
||||||
|
|
||||||
hevc->chromaFormatIDC = IS_YUV444(ctx->data_pix_fmt) ? 3 : 1;
|
hevc->chromaFormatIDC = IS_YUV444(ctx->data_pix_fmt) ? 3 : 1;
|
||||||
|
|
||||||
hevc->pixelBitDepthMinus8 = IS_10BIT(ctx->data_pix_fmt) ? 2 : 0;
|
hevc->pixelBitDepthMinus8 = IS_10BIT(ctx->data_pix_fmt) ? 2 : 0;
|
||||||
|
@ -121,6 +121,7 @@ enum {
|
|||||||
enum {
|
enum {
|
||||||
NV_ENC_HEVC_PROFILE_MAIN,
|
NV_ENC_HEVC_PROFILE_MAIN,
|
||||||
NV_ENC_HEVC_PROFILE_MAIN_10,
|
NV_ENC_HEVC_PROFILE_MAIN_10,
|
||||||
|
NV_ENC_HEVC_PROFILE_REXT,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
@ -39,9 +39,10 @@ static const AVOption options[] = {
|
|||||||
{ "llhp", "low latency hp", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_LOW_LATENCY_HP }, 0, 0, VE, "preset" },
|
{ "llhp", "low latency hp", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_LOW_LATENCY_HP }, 0, 0, VE, "preset" },
|
||||||
{ "lossless", "lossless", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_LOSSLESS_DEFAULT }, 0, 0, VE, "preset" },
|
{ "lossless", "lossless", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_LOSSLESS_DEFAULT }, 0, 0, VE, "preset" },
|
||||||
{ "losslesshp", "lossless hp", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_LOSSLESS_HP }, 0, 0, VE, "preset" },
|
{ "losslesshp", "lossless hp", 0, AV_OPT_TYPE_CONST, { .i64 = PRESET_LOSSLESS_HP }, 0, 0, VE, "preset" },
|
||||||
{ "profile", "Set the encoding profile", OFFSET(profile), AV_OPT_TYPE_INT, { .i64 = NV_ENC_HEVC_PROFILE_MAIN }, NV_ENC_HEVC_PROFILE_MAIN, FF_PROFILE_HEVC_MAIN_10, VE, "profile" },
|
{ "profile", "Set the encoding profile", OFFSET(profile), AV_OPT_TYPE_INT, { .i64 = NV_ENC_HEVC_PROFILE_MAIN }, NV_ENC_HEVC_PROFILE_MAIN, FF_PROFILE_HEVC_REXT, VE, "profile" },
|
||||||
{ "main", "", 0, AV_OPT_TYPE_CONST, { .i64 = NV_ENC_HEVC_PROFILE_MAIN }, 0, 0, VE, "profile" },
|
{ "main", "", 0, AV_OPT_TYPE_CONST, { .i64 = NV_ENC_HEVC_PROFILE_MAIN }, 0, 0, VE, "profile" },
|
||||||
{ "main10", "", 0, AV_OPT_TYPE_CONST, { .i64 = NV_ENC_HEVC_PROFILE_MAIN_10 }, 0, 0, VE, "profile" },
|
{ "main10", "", 0, AV_OPT_TYPE_CONST, { .i64 = NV_ENC_HEVC_PROFILE_MAIN_10 }, 0, 0, VE, "profile" },
|
||||||
|
{ "rext", "", 0, AV_OPT_TYPE_CONST, { .i64 = NV_ENC_HEVC_PROFILE_REXT }, 0, 0, VE, "profile" },
|
||||||
{ "level", "Set the encoding level restriction", OFFSET(level), AV_OPT_TYPE_INT, { .i64 = NV_ENC_LEVEL_AUTOSELECT }, NV_ENC_LEVEL_AUTOSELECT, NV_ENC_LEVEL_HEVC_62, VE, "level" },
|
{ "level", "Set the encoding level restriction", OFFSET(level), AV_OPT_TYPE_INT, { .i64 = NV_ENC_LEVEL_AUTOSELECT }, NV_ENC_LEVEL_AUTOSELECT, NV_ENC_LEVEL_HEVC_62, VE, "level" },
|
||||||
{ "auto", "", 0, AV_OPT_TYPE_CONST, { .i64 = NV_ENC_LEVEL_AUTOSELECT }, 0, 0, VE, "level" },
|
{ "auto", "", 0, AV_OPT_TYPE_CONST, { .i64 = NV_ENC_LEVEL_AUTOSELECT }, 0, 0, VE, "level" },
|
||||||
{ "1", "", 0, AV_OPT_TYPE_CONST, { .i64 = NV_ENC_LEVEL_HEVC_1 }, 0, 0, VE, "level" },
|
{ "1", "", 0, AV_OPT_TYPE_CONST, { .i64 = NV_ENC_LEVEL_HEVC_1 }, 0, 0, VE, "level" },
|
||||||
|
Loading…
x
Reference in New Issue
Block a user