diff mbox series

[FFmpeg-devel] avcodec/libvpxenc: enable dynamic max quantizer parameter reconfiguration

Message ID 20220330182432.1338403-1-danilchap@google.com
State New
Headers show
Series [FFmpeg-devel] avcodec/libvpxenc: enable dynamic max quantizer parameter reconfiguration | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_aarch64_jetson success Make finished
andriy/make_fate_aarch64_jetson success Make fate finished
andriy/make_armv7_RPi4 success Make finished
andriy/make_fate_armv7_RPi4 success Make fate finished

Commit Message

Danil Chapovalov March 30, 2022, 6:24 p.m. UTC
---
 doc/encoders.texi      | 3 +++
 libavcodec/libvpxenc.c | 6 ++++++
 2 files changed, 9 insertions(+)

Comments

James Zern March 31, 2022, 5:31 p.m. UTC | #1
On Wed, Mar 30, 2022 at 11:25 AM Danil Chapovalov
<danilchap-at-google.com@ffmpeg.org> wrote:
>
> ---
>  doc/encoders.texi      | 3 +++
>  libavcodec/libvpxenc.c | 6 ++++++
>  2 files changed, 9 insertions(+)
>

lgtm. I'll submit this with a patch version bump soon if there aren't
any further comments.
James Zern April 6, 2022, 1:04 a.m. UTC | #2
On Thu, Mar 31, 2022 at 10:31 AM James Zern <jzern@google.com> wrote:
>
> On Wed, Mar 30, 2022 at 11:25 AM Danil Chapovalov
> <danilchap-at-google.com@ffmpeg.org> wrote:
> >
> > ---
> >  doc/encoders.texi      | 3 +++
> >  libavcodec/libvpxenc.c | 6 ++++++
> >  2 files changed, 9 insertions(+)
> >
>
> lgtm. I'll submit this with a patch version bump soon if there aren't
> any further comments.

Applied with some additional error checking. Thanks for the patch.
diff mbox series

Patch

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;