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