From patchwork Tue Sep 18 22:30:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Thompson X-Patchwork-Id: 10371 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:12c4:0:0:0:0:0 with SMTP id 65-v6csp12293jap; Tue, 18 Sep 2018 15:33:27 -0700 (PDT) X-Google-Smtp-Source: ANB0Vdbhj8lOOe8LXI0EVYSm3h3uGOZuLIWRCKn988rEngpXmK/WdeqWDu1sGpr4pFHM6pS8+C74 X-Received: by 2002:adf:f5c9:: with SMTP id k9-v6mr26385475wrp.59.1537310007899; Tue, 18 Sep 2018 15:33:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537310007; cv=none; d=google.com; s=arc-20160816; b=i+CBlh5af7eWt7xGGgugmxn3xptK5inRHnRKQ1UvhA9+Uslx393CRvKDSZbhYr1lqh mBzArHGdvxMrj7LC2THju620+oHPuV8NEd6xu7qHpOJfpjZhWwwOpvQugFr1jl7EG+Vl j/p5CDxdOuSxYGg+SfpubEGF9i3nuxzu1L2himiHvH9+e/3VrK5RE6KzH7IPPvnzy34u 6wz23K6WkSi984FtJGchHo3zN6j0cZuG23MKL0py/wYGwzkEUWXYpE15AHZB41pSMEN5 vy5PV7sfcpfpENsgyJ57e8qdACaXRiBkBn3pcczJ1VyQ9AjnqdgyDmgtR4ruKRXx+INh vb8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to; bh=ORJt0PrNbTOgokriXoVSyivOqhKRCtF/LiClky8mQGk=; b=pqluYL6ysCcjxsdGuj8J+kRgwFYeO4nWpjivFpfk0BOeJIFVJzMEG3d9JlhT2aoYKb PNMZlamRgFc+3GiL3lJIcrkBh75KUOY8OSm8kk8C8Y5rAbsG07Jx8H/+RmIymTnevrc9 vU2WvpBJtEepiu8arJ0SQU0vBbkAgd5r0CQ3z0IqFTTHBQn1fghnpa1qXisUTJLRQZbM bCcRj5UK6gR7AAuywgxN/GzH0Ny1abxJ2Aspo4OpRur5mh6mjtOtdakic2wFfs5PteFI OH7qYxGH1UjXSbQh4RKucUXvbdb+BBxMZ/sqmRXkAVk+3lmHr7IA56YJ9Wd4Z/ZPX8Un OWvw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@jkqxz-net.20150623.gappssmtp.com header.s=20150623 header.b=s2zYnTex; 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 s14-v6si17274237wrq.284.2018.09.18.15.33.21; Tue, 18 Sep 2018 15:33:27 -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=@jkqxz-net.20150623.gappssmtp.com header.s=20150623 header.b=s2zYnTex; 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 E878768A551; Wed, 19 Sep 2018 01:31:27 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 73E0268A38A for ; Wed, 19 Sep 2018 01:31:16 +0300 (EEST) Received: by mail-wm1-f53.google.com with SMTP id f21-v6so4127724wmc.5 for ; Tue, 18 Sep 2018 15:31:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jkqxz-net.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=VPMh8vIaCB70WCzbkwtunzo3DzLCKVOBKWDZNago+VM=; b=s2zYnTex1wzvsa/44B/m57Iv7C+622i/mgcyeHRhAuVC10MXeSHb59BXyIeSgxUAGq nNzx1GEdaiwgcgwxE74U/EqeUDzHLjn4QyrMr2W5NHQbmhIln+r8ZiH/VzHncU9LA63S ydbk1xRRmVi793ajyAbKYGaW0QX6wOGPSiWauBDho8NZJf6oL9PSDg3AZ8P8uaLMLsvT uxL2Dh++h82qSW/CPeOjZlQScr2ajMiRifPLZdB2Yxje21Uj+cvIXoFmyR2tvtHgNd5Y wA61cEB3X+ehN+lh5FZwPJugbtt3ldHSGkIccSEdXkjhGSSUE5VB1w4TwFlWLMkg8WMU Wu/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=VPMh8vIaCB70WCzbkwtunzo3DzLCKVOBKWDZNago+VM=; b=QIefFzBd7ztRetvfqpixGwU1PFR0V3mdsc5+AG40ROmCCSu7sz6qHcRz+l8ZBXqdjj TldiVsYDMbBMOlH4JNB5WxmnQDRYV5yTAaWyiOurSagCPlIxxICVPLoYxTnU74VhirBb mU955BJWhR2rH6zu1AdJ/UNGSBiu3+wBEtXcT1yK99qd+qf5KHXjwCbYsWr713/kgsSm 4drUehHkKpzomsP1MEIwSYNmg2dzYowrAED4ALVKyvOXJcwYB1afa4oP2kK9d/vhAlN6 qvL8YsKslTBhkuzZPWq2qFxjv+AFiANhUqMDyqWet3hePQc9MQATowNRu/TTYoZs8RT4 Dt8A== X-Gm-Message-State: APzg51ASdvvpxo/WTt5i5EsTyD7HO8TKWBiHCyDS7dDGldavmBTXCwKd Y5vdn2IrT/PlWtpTAMLJRmmQBi2DKXM= X-Received: by 2002:a1c:864c:: with SMTP id i73-v6mr17736665wmd.40.1537309888883; Tue, 18 Sep 2018 15:31:28 -0700 (PDT) Received: from rywe.jkqxz.net (cpc91242-cmbg18-2-0-cust650.5-4.cable.virginm.net. [82.8.130.139]) by smtp.gmail.com with ESMTPSA id e141-v6sm4863826wmd.32.2018.09.18.15.31.27 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 18 Sep 2018 15:31:28 -0700 (PDT) From: Mark Thompson To: ffmpeg-devel@ffmpeg.org Date: Tue, 18 Sep 2018 23:30:46 +0100 Message-Id: <20180918223116.14322-9-sw@jkqxz.net> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180918223116.14322-1-sw@jkqxz.net> References: <20180918223116.14322-1-sw@jkqxz.net> Subject: [FFmpeg-devel] [PATCH v4 08/38] vaapi_encode: Add support for max QP in rate control X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This was added in libva 2.1.0 (VAAPI 1.1.0). Use AVCodecContext.qmax, matching the existing behaviour for qmin, and clean up the defaults so that we only pass min/max when explicitly set. --- doc/encoders.texi | 3 ++- libavcodec/vaapi_encode.c | 3 +++ libavcodec/vaapi_encode_h264.c | 3 ++- libavcodec/vaapi_encode_h265.c | 2 ++ libavcodec/vaapi_encode_mpeg2.c | 2 ++ libavcodec/vaapi_encode_vp8.c | 2 ++ libavcodec/vaapi_encode_vp9.c | 2 ++ 7 files changed, 15 insertions(+), 2 deletions(-) diff --git a/doc/encoders.texi b/doc/encoders.texi index e550bd9893..4133bc15ee 100644 --- a/doc/encoders.texi +++ b/doc/encoders.texi @@ -2588,7 +2588,8 @@ Speed / quality tradeoff: higher values are faster / worse quality. Size / quality tradeoff: higher values are smaller / worse quality. @item @option{qmin} -(only: @option{qmax} is not supported) +@item +@option{qmax} @item @option{i_qfactor} / @option{i_quant_factor} @item diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c index 25d89c65c9..e9eeb6eb83 100644 --- a/libavcodec/vaapi_encode.c +++ b/libavcodec/vaapi_encode.c @@ -1436,6 +1436,9 @@ static av_cold int vaapi_encode_init_rate_control(AVCodecContext *avctx) .initial_qp = 0, .min_qp = (avctx->qmin > 0 ? avctx->qmin : 0), .basic_unit_size = 0, +#if VA_CHECK_VERSION(1, 1, 0) + .max_qp = (avctx->qmax > 0 ? avctx->qmax : 0), +#endif }; vaapi_encode_add_global_param(avctx, &ctx->rc_params.misc, sizeof(ctx->rc_params)); diff --git a/libavcodec/vaapi_encode_h264.c b/libavcodec/vaapi_encode_h264.c index c63766d918..e903b251c0 100644 --- a/libavcodec/vaapi_encode_h264.c +++ b/libavcodec/vaapi_encode_h264.c @@ -1033,7 +1033,8 @@ static const AVCodecDefault vaapi_encode_h264_defaults[] = { { "i_qoffset", "0" }, { "b_qfactor", "6/5" }, { "b_qoffset", "0" }, - { "qmin", "0" }, + { "qmin", "-1" }, + { "qmax", "-1" }, { NULL }, }; diff --git a/libavcodec/vaapi_encode_h265.c b/libavcodec/vaapi_encode_h265.c index b296919b37..13ddad79ae 100644 --- a/libavcodec/vaapi_encode_h265.c +++ b/libavcodec/vaapi_encode_h265.c @@ -1148,6 +1148,8 @@ static const AVCodecDefault vaapi_encode_h265_defaults[] = { { "i_qoffset", "0" }, { "b_qfactor", "6/5" }, { "b_qoffset", "0" }, + { "qmin", "-1" }, + { "qmax", "-1" }, { NULL }, }; diff --git a/libavcodec/vaapi_encode_mpeg2.c b/libavcodec/vaapi_encode_mpeg2.c index ff86b8817e..db72516187 100644 --- a/libavcodec/vaapi_encode_mpeg2.c +++ b/libavcodec/vaapi_encode_mpeg2.c @@ -672,6 +672,8 @@ static const AVCodecDefault vaapi_encode_mpeg2_defaults[] = { { "b_qfactor", "6/5" }, { "b_qoffset", "0" }, { "global_quality", "10" }, + { "qmin", "-1" }, + { "qmax", "-1" }, { NULL }, }; diff --git a/libavcodec/vaapi_encode_vp8.c b/libavcodec/vaapi_encode_vp8.c index 40871a6bbf..db67136556 100644 --- a/libavcodec/vaapi_encode_vp8.c +++ b/libavcodec/vaapi_encode_vp8.c @@ -230,6 +230,8 @@ static const AVCodecDefault vaapi_encode_vp8_defaults[] = { { "bf", "0" }, { "g", "120" }, { "global_quality", "40" }, + { "qmin", "-1" }, + { "qmax", "-1" }, { NULL }, }; diff --git a/libavcodec/vaapi_encode_vp9.c b/libavcodec/vaapi_encode_vp9.c index e400bc8b79..2b0658ec1f 100644 --- a/libavcodec/vaapi_encode_vp9.c +++ b/libavcodec/vaapi_encode_vp9.c @@ -253,6 +253,8 @@ static const AVCodecDefault vaapi_encode_vp9_defaults[] = { { "bf", "0" }, { "g", "250" }, { "global_quality", "100" }, + { "qmin", "-1" }, + { "qmax", "-1" }, { NULL }, };