From patchwork Mon Nov 27 00:58:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Fei W" X-Patchwork-Id: 44822 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:bca6:b0:181:818d:5e7f with SMTP id fx38csp2999355pzb; Sun, 26 Nov 2023 16:57:49 -0800 (PST) X-Google-Smtp-Source: AGHT+IEw2T+kXqPx4b92BY+hjv5JEpN9KTP6hTXLP0tJKhF5OunJSKEMPLeMyLtNpJUKCn0gPM2X X-Received: by 2002:a17:906:7e05:b0:9ae:74d1:4b45 with SMTP id e5-20020a1709067e0500b009ae74d14b45mr8107371ejr.65.1701046669301; Sun, 26 Nov 2023 16:57:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701046669; cv=none; d=google.com; s=arc-20160816; b=b9ya3MTew5efm/CGyJ6Sd5OvJ9XhB6/6jHwrFgYLXNZwCwz0iZOp6gqAInfaviRVp2 r3vYcaF3bB5k7bUYg5EeeMj7cD6hEsoEY4LIA5aFktT2l9nA6Mv1YsMGAWjqrHiXDhUg 4Ef6hd3GAWzm8MkIegs2SLD6BAp8kwO+ctiF87W7MqFXl+GJATXe1mZgKy/BwFhhlHo9 nGjr7FFy70mZRgkvs1JSLgjn/QvF1Fwq6a0xaNLywwY2rnYZGm3464cDrVuJzIOChNgt jL1FZ2zMCbSXv2z8hniGCdYK5bb1DOGB+A9mM2WX5Xxa8ThElNpF0hL/zLoEyE3rMATR uGBg== 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:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=zqGXIUjXkWP5Rz+arjNRz0rgF1l7HnHr+MjoGIRy8q8=; fh=i4ESP4ZRFDcfYfwXKWpOXjc2YhmIGuOsCfZUnwNO0gc=; b=o5HNmC22jqnpPVkRIPU2HvAoyLRFUyMkLi8PFK5qmNTAF3sgY5h0RFY3KOB0fNHgge qFvL7FRqx2OnuvOwlVUYB77GIGw0BO9egvYdOUYFI3WeagV5FEdXW6ZpDkb/opxFhGej QvsTaLS3EaHA36mRlYbobLGxroc36+74AFzEb9bcVWrmoUjvJdBb55w2eVGRDXT3WjZC bw0yadBNjh/dkjzBg1Mkwuw4mdYmBocz1x/1RgPy+poOUHY0ZMmL2tCXU2+lvLjmKsjQ oql94M0JcuvhvN24D7TcFYNkdJTvDSYug1j6Zfie9LR1NfSjjaN4y8BW4MpbA51QQpA4 usGg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=L8JeCBXo; 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 p22-20020a17090635d600b009fbc6f0e80asi4193139ejb.497.2023.11.26.16.57.47; Sun, 26 Nov 2023 16:57:49 -0800 (PST) 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=@intel.com header.s=Intel header.b=L8JeCBXo; 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 3561568CF63; Mon, 27 Nov 2023 02:57:44 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 45E7968CBF7 for ; Mon, 27 Nov 2023 02:57:36 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1701046661; x=1732582661; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=4L/BYON4wM+ODG+T3QQJLcqk8aWTcmXATs/iVQ2afPY=; b=L8JeCBXoPAadNoT2c0Iss2VKRfeuN0arkRaXPY+v6zOo8AFF6GrRmzrK OvFg/e6NghNPmEaYu91sk4Syh465CazQil+nC3gXJi+S74IkFya3DxTLI T+uQD0ToL0YaYLi1LRTv2IukB3hYzRO+07fzdTBIg5YoxMHo1dFlNd9Gl oet1Sy4fGEldH7jkexGCQl89f71MxutX1HMJNEo0jl0ixu2HlR48K05Da nW6UuQYy437sAhZFulnzz/9Vv0iV1FBErKywWnWOHPdAvwxmIR/tVtUwZ fUzYJqHFupiNv/+EjjX/YB13Qw0zNeXR78I6M8x83kAxBwvZ7l60VoVxX Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10906"; a="396524619" X-IronPort-AV: E=Sophos;i="6.04,229,1695711600"; d="scan'208";a="396524619" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Nov 2023 16:57:33 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10906"; a="858877567" X-IronPort-AV: E=Sophos;i="6.04,229,1695711600"; d="scan'208";a="858877567" Received: from t-dg2.sh.intel.com ([10.239.159.57]) by FMSMGA003.fm.intel.com with ESMTP; 26 Nov 2023 16:57:32 -0800 From: fei.w.wang-at-intel.com@ffmpeg.org To: ffmpeg-devel@ffmpeg.org Date: Mon, 27 Nov 2023 08:58:01 +0800 Message-Id: <20231127005801.3440746-1-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v1] lavc/vaapi_encode_av1: Add qp option explicitly to set base q index 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: fei.w.wang@intel.com Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: gidsYk7Mr+6E From: Fei Wang Keep same way with librav1e/libsvtav1/qsv_av1.. to make it more acceptable instead of using global option "-global_quality". Fix #10615 Signed-off-by: Fei Wang --- doc/encoders.texi | 1 + libavcodec/vaapi_encode_av1.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/doc/encoders.texi b/doc/encoders.texi index 27a9acf076..2cffc32daf 100644 --- a/doc/encoders.texi +++ b/doc/encoders.texi @@ -4079,6 +4079,7 @@ Each encoder also has its own specific options: @table @option @item av1_vaapi +@option{qp} sets the value of @emph{base_q_index}. @option{profile} sets the value of @emph{seq_profile}. @option{tier} sets the value of @emph{seq_tier}. @option{level} sets the value of @emph{seq_level_idx}. diff --git a/libavcodec/vaapi_encode_av1.c b/libavcodec/vaapi_encode_av1.c index 5a9ff0f798..2e327fec5a 100644 --- a/libavcodec/vaapi_encode_av1.c +++ b/libavcodec/vaapi_encode_av1.c @@ -79,6 +79,7 @@ typedef struct VAAPIEncodeAV1Context { int cdef_param_size; /** user options */ + int qp; int profile; int level; int tier; @@ -786,6 +787,9 @@ static av_cold int vaapi_encode_av1_init(AVCodecContext *avctx) return AVERROR(EINVAL); } + if (priv->qp > 0) + ctx->explicit_qp = priv->qp; + ret = ff_vaapi_encode_init(avctx); if (ret < 0) return ret; @@ -864,6 +868,8 @@ static av_cold int vaapi_encode_av1_close(AVCodecContext *avctx) static const AVOption vaapi_encode_av1_options[] = { VAAPI_ENCODE_COMMON_OPTIONS, VAAPI_ENCODE_RC_OPTIONS, + { "qp", "Base q index (for P-frames; scaled by qfactor/qoffset for I/B)", + OFFSET(qp), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 255, FLAGS }, { "profile", "Set profile (seq_profile)", OFFSET(profile), AV_OPT_TYPE_INT, { .i64 = AV_PROFILE_UNKNOWN }, AV_PROFILE_UNKNOWN, 0xff, FLAGS, "profile" },