aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/amfenc_hevc.c
diff options
context:
space:
mode:
authorAraz Iusubov <Primeadvice@gmail.com>2024-08-15 12:57:59 +0200
committerDmitrii Ovchinnikov <ovchinnikov.dmitrii@gmail.com>2024-08-15 14:01:07 +0200
commit42a40538f3138ab4ebeb99513865baf3824660e5 (patch)
tree2353ee3829b73b01efa04009c221f5a3d8d15f4e /libavcodec/amfenc_hevc.c
parent1f801dfdb5066aadf0ade9cb5e94d620f33eacdc (diff)
downloadffmpeg-42a40538f3138ab4ebeb99513865baf3824660e5.tar.gz
avcodec/amfenc: new encoder features support
Implemented: New usage modes for AV1 encoder. Latency mode for H264, HEVC and AV1 encoders. Adaptive Quantization (AQ) mode in AV1 encoder. Signed-off-by: Dmitrii Ovchinnikov <ovchinnikov.dmitrii@gmail.com>
Diffstat (limited to 'libavcodec/amfenc_hevc.c')
-rw-r--r--libavcodec/amfenc_hevc.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/libavcodec/amfenc_hevc.c b/libavcodec/amfenc_hevc.c
index 2915a83677..51fc243747 100644
--- a/libavcodec/amfenc_hevc.c
+++ b/libavcodec/amfenc_hevc.c
@@ -64,6 +64,8 @@ static const AVOption options[] = {
{ "balanced", "", 0, AV_OPT_TYPE_CONST, { .i64 = AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_BALANCED }, 0, 0, VE, .unit = "quality" },
{ "speed", "", 0, AV_OPT_TYPE_CONST, { .i64 = AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_SPEED }, 0, 0, VE, .unit = "quality" },
+ { "latency", "enables low latency mode", OFFSET(latency), AV_OPT_TYPE_BOOL,{.i64 = -1 }, -1, 1, VE },
+
{ "rc", "Set the rate control mode", OFFSET(rate_control_mode), AV_OPT_TYPE_INT, { .i64 = AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_UNKNOWN }, AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_UNKNOWN, AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_HIGH_QUALITY_CBR, VE, .unit = "rc" },
{ "cqp", "Constant Quantization Parameter", 0, AV_OPT_TYPE_CONST, { .i64 = AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_CONSTANT_QP }, 0, 0, VE, .unit = "rc" },
{ "cbr", "Constant Bitrate", 0, AV_OPT_TYPE_CONST, { .i64 = AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_CBR }, 0, 0, VE, .unit = "rc" },
@@ -341,6 +343,10 @@ FF_ENABLE_DEPRECATION_WARNINGS
av_log(ctx, AV_LOG_WARNING, "rate control mode is PEAK_CONSTRAINED_VBR but rc_max_rate is not set\n");
}
+ if (ctx->latency != -1) {
+ AMF_ASSIGN_PROPERTY_BOOL(res, ctx->encoder, AMF_VIDEO_ENCODER_HEVC_LOWLATENCY_MODE, ((ctx->latency == 0) ? false : true));
+ }
+
if (ctx->preanalysis != -1) {
AMF_ASSIGN_PROPERTY_BOOL(res, ctx->encoder, AMF_VIDEO_ENCODER_HEVC_PRE_ANALYSIS_ENABLE, !!((ctx->preanalysis == 0) ? false : true));
}