[FFmpeg-devel] [PATCH] avcodec/libvpxenc: enable dynamic max quantizer parameter reconfiguration
Danil Chapovalov
danilchap at google.com
Wed Mar 30 21:24:32 EEST 2022
---
doc/encoders.texi | 3 +++
libavcodec/libvpxenc.c | 6 ++++++
2 files changed, 9 insertions(+)
diff --git a/doc/encoders.texi b/doc/encoders.texi
index 4b8cc69c0d..a304f865a6 100644
--- a/doc/encoders.texi
+++ b/doc/encoders.texi
@@ -1996,8 +1996,11 @@ kilobits/s.
@item keyint_min (@emph{kf-min-dist})
@item qmin (@emph{min-q})
+Minimum (Best Quality) Quantizer.
@item qmax (@emph{max-q})
+Maximum (Worst Quality) Quantizer.
+Can be changed per-frame.
@item bufsize (@emph{buf-sz}, @emph{buf-optimal-sz})
Set ratecontrol buffer size (in bits). Note @command{vpxenc}'s options are
diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c
index dff1d06b0e..463a658bb0 100644
--- a/libavcodec/libvpxenc.c
+++ b/libavcodec/libvpxenc.c
@@ -1625,6 +1625,12 @@ static int vpx_encode(AVCodecContext *avctx, AVPacket *pkt,
vpx_svc_layer_id_t layer_id;
int layer_id_valid = 0;
+ if (avctx->qmax >= 0 && enccfg->rc_max_quantizer != avctx->qmax) {
+ struct vpx_codec_enc_cfg cfg = *enccfg;
+ cfg.rc_max_quantizer = avctx->qmax;
+ vpx_codec_enc_config_set(&ctx->encoder, &cfg);
+ }
+
if (frame) {
const AVFrameSideData *sd = av_frame_get_side_data(frame, AV_FRAME_DATA_REGIONS_OF_INTEREST);
rawimg = &ctx->rawimg;
--
2.35.1.1021.g381101b075-goog
More information about the ffmpeg-devel
mailing list