From patchwork Wed Mar 30 18:24:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Danil Chapovalov X-Patchwork-Id: 35084 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c05:b0:7a:e998:b410 with SMTP id bw5csp954896pzb; Wed, 30 Mar 2022 11:25:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw41KoOq8KHfYA4SrP+E1R7yWOmLVqoxLl7CjyZRCKa/iyZQOn4T+gE+OP0CYeUUyyMHoKq X-Received: by 2002:a17:907:d2a:b0:6e0:963c:97d9 with SMTP id gn42-20020a1709070d2a00b006e0963c97d9mr954623ejc.736.1648664735170; Wed, 30 Mar 2022 11:25:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648664735; cv=none; d=google.com; s=arc-20160816; b=eodKTRVlQu/xEY8BXbvc45j5ExCLoWRYNC3MhFi6urqKFztXxMaOaki48gRHulpwff JfxNrJ37m1hw5IoRPH10VaXY9/1iN1vBQTzd5rs6VONNNriFF4DjJhLCFOsPi4s7D2Sj kUdmQCuZGMk5V16/72p/mJ6OzJaSZoTi8yi60yiU1U1SbazCpkJ+sKS5jh8tQ/slyBLa mfQDUcMG2/UTj8ua3Dh1VzaP5S4wKTl1yRWF2NyjDKPj4GdIxQZmsOvgDUMVYdrEbuD+ nS4yKlNaLOILYHEPP/sdWWNFYjV/KdCXi+5NXI/e0dQRm2ukERHO1R9tvCC+/Fpecwj5 +rag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:to:from:references:mime-version :message-id:in-reply-to:date:dkim-signature:delivered-to; bh=XagsSKjBmiUlO2NDMb7qFGpwqcrNr6q4/TL62haZBWc=; b=c0tgaM9Aduwv8iSPbNtaHwhhNTNbB1LC5RMIbS3xPx0W9iojV3fKUjA00/3chHR/tO OsFYJNoNAeonuKtf5jMZnUgK4QDTUaYZJ3yW5CP6vRv40ZrFtYdSBOgzBBphCcq2PAWR jtEaNDkyGdOlZgCiur8gvDPIw7LxttZzD80fnwuKG+MwWDna5EqprYRU3kygfliJY+VA q4e+Nd+My2nhxevTiBgRxzOR6CbnMAFb7kFHaTAXWsMXG6LgrYiLVhQj88l6jOddPPHO 5rKXqagKbXEBFmXmOO8fqhhpyhb/3HsUR/nfYbEbhE1lV6izgvTsEvjd8XWSEkSNsjQ7 aq1w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@google.com header.s=20210112 header.b=qcT0T+GS; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id my23-20020a1709065a5700b006dff5b6f606si20613891ejc.37.2022.03.30.11.25.34; Wed, 30 Mar 2022 11:25:35 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@google.com header.s=20210112 header.b=qcT0T+GS; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A322C68B2BE; Wed, 30 Mar 2022 21:25:30 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f74.google.com (mail-lf1-f74.google.com [209.85.167.74]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4F02B68AF48 for ; Wed, 30 Mar 2022 21:25:24 +0300 (EEST) Received: by mail-lf1-f74.google.com with SMTP id i25-20020ac25239000000b0044a3f56e059so6640137lfl.15 for ; Wed, 30 Mar 2022 11:25:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=JBxeBA8NvGhU/80iFCOSw7/ZEWpXuo0R9XtlhZgoIJ0=; b=qcT0T+GS+XnMSOazqN3oXQcQxPuz/1AwFlEHE+8WJeQRe3CeqRLyYYaXxEy7Aw37+f p2T6igK4t04zszeJUIHXp5YG3HRm/LMi4X62jL7Ax5NPdZ3C22D/FfY0KyVMv5IAwDhh G1jtsJe/cH8bBfUwhyidwVd/S3/oBvjEWdV3AoJytob5Yk13UgK4+M9P9J3jYEbyzqaF t6JrzEByH1LCZiTirSa42VIEOGHFXkFzioxSRCIrdZqvkl5S2eRQ+nWg7+IsW2wdc5hi QVC5g50tfs/xvCJ+2JmLx+QIhqeQRIBAlj5Oy+p/LJjzJ6VnxDpc1D4pT0E9ulGctWth 6N9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=JBxeBA8NvGhU/80iFCOSw7/ZEWpXuo0R9XtlhZgoIJ0=; b=LF+9EeSknWJaqBmWkAAwhnbBTrn/JnHvhZlGr3RjoeF4fgrDIAWZvWKlvaWPrbas1v qFmtJNV3tUFGPAYrFXLJ0Rd4LC+OlH+utWVIhrQlHw/q2N60rsop6wTSa4vxzDo0E2sr +rIAs6MtNXtgl2+rZ4HuRUAgnd221rp737f/Y2g74yUpiuaqAmtl/3P86X2rDM8f+sMw JAIh312S2gxewoqBn8kjwC5y7SvTpf4tPDdzYltMuvfmaMzpRVOEo4ora4VB4ULweW7V Pd0e4YqdplQzzYv7GOtYVmoh197G6eyGHkOaFf+0DNwIW/BIpZ2PJR8kRInhSCsCfkdj LLew== X-Gm-Message-State: AOAM533TbQ74YIAM7Mtx0t8SoKGCDlnrTLOndKSRza7Ao+LaAJqymZNQ UforuNfHjPuqpWogQo0DUgVjEgRdFWJajx14+Tc4BN5oqdSBieSGgrPOTjNaLFAUogqxoDUcLiH 9YA98ViibOmyIebYA1Oovlv1wfSuBbAlXc3GlBeX5EZbb0/zuEdBjmspW2YyI82Owmd2/A5s= X-Received: from danilchap1.sto.corp.google.com ([2620:0:1043:12:5bbc:f24f:b606:4591]) (user=danilchap job=sendgmr) by 2002:a19:654c:0:b0:448:2649:1169 with SMTP id c12-20020a19654c000000b0044826491169mr7801335lfj.555.1648664723189; Wed, 30 Mar 2022 11:25:23 -0700 (PDT) Date: Wed, 30 Mar 2022 20:24:32 +0200 In-Reply-To: <20220324131116.825587-1-danilchap@google.com> Message-Id: <20220330182432.1338403-1-danilchap@google.com> Mime-Version: 1.0 References: <20220324131116.825587-1-danilchap@google.com> X-Mailer: git-send-email 2.35.1.1021.g381101b075-goog From: Danil Chapovalov To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH] avcodec/libvpxenc: enable dynamic max quantizer parameter reconfiguration X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Danil Chapovalov Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: qHwZDXug14G7 --- 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;