From patchwork Mon Aug 7 07:27:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Rosca X-Patchwork-Id: 43156 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:9329:b0:130:ccc6:6c4b with SMTP id r41csp1426212pzh; Mon, 7 Aug 2023 00:28:49 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEOlk6hFDNbUZJw1ad8scpKZRe0qdtxfvw16++jWgnrNQ6ynwxR6axlss9OOKpkv9AS6Q0s X-Received: by 2002:a17:907:7e9e:b0:96f:9cea:a34d with SMTP id qb30-20020a1709077e9e00b0096f9ceaa34dmr6832372ejc.21.1691393328909; Mon, 07 Aug 2023 00:28:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691393328; cv=none; d=google.com; s=arc-20160816; b=GhwtWzsmwWUvQUeFdsB4QpxqQdwV727RwU1KDeUBJ7mtzQhIjielbqrRukN653qmvT 1qcyR/Hlh9l0eKgifzZGEF6xXmKETHnTb+s1jnsF2lsjrwvHMoYonhi7bc9qkOcB7wsx HRMcACFUtKMCbsDCtQq/a6BDt0EgZyQoHmjHPq6CdWIGHsdcfhojl7SbSWqVVE1pI+nI AD6OAIm+L/86hx+ANvsWWXawM83UOCBKnA9MH7U67cPvvRRKN8h7One4y6WxPucxBfxt I+usT+QC6oEzEsJ98HhYgVFj6Leai43SeFrFlAltYqzygThToblA+beqoPGGS0k9U1h1 RTWA== 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=qLvUqtCa8XH0QtD2GrpliT4owKrOt/tt5x8+0J86yNY=; fh=+H1WSyw0bZg9cL2A6W0J1AKQ8UNSeLFKwsXpGAgSXHY=; b=bu1Ztrv2nVLRTgUSvBlmVOm5WPXW9BoTJOgmqtFT69yZMKWE9stPnzQ3le0DUwkqPQ kRd15gsG7x6VN5FDdq4VklabHyqVOOByqheYXO3BlM00TRrmnZ4In0otrmHwXIes4Zyn HAnw86j2DBzlVUbkXdtlCRSvRvdrQmSriy75Z0ftgmMMUeiEMwZUOlpCKxHLCKfv6kUK pzIKW8W2R2C3jvohrKitCp5LnrJrxFFOVAiJrpxuAceijX54kj6Qy9DooV4eshUwDLDy 78hXMnwnP/J+VyTEk2alKx27mlwenHiQwnNHT+KJ6UYOxZ8jCRwyRF9CgiCCFfX7FGzx peUQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=I1tw1nYI; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id gv12-20020a170906f10c00b0099c49a11e76si4869339ejb.978.2023.08.07.00.28.48; Mon, 07 Aug 2023 00:28:48 -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=@gmail.com header.s=20221208 header.b=I1tw1nYI; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 843F268C334; Mon, 7 Aug 2023 10:28:44 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CB93368C334 for ; Mon, 7 Aug 2023 10:28:37 +0300 (EEST) Received: by mail-ed1-f53.google.com with SMTP id 4fb4d7f45d1cf-51a52a7d859so11087549a12.0 for ; Mon, 07 Aug 2023 00:28:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691393316; x=1691998116; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=JdkszemTTJ40WO3YElX5gt1bKTrgMlexzniU31o1KDo=; b=I1tw1nYIhmLwWcIQqQCED/DzSjpgDGle8OGrbdCJF9KO9nW/mmZnaNzyqXV0bNpZbU Y90LQzh6HIl+JQ2mnvlgo9xWqRrW+YhHtwwG92joqr7L7AxxaJh4ti6WZ9AKrFcj6tLV gjeAjg76iUDbBA2u+ZJqGdLTZasRDQRulhtEjo8g1BXlobusCYOD+xAMKGDaTqWCjKVP MUYZFclq0Jowtwuta+w/2Y6xM2Ii5nHsN/XxOMflnCmYAaD3VUcIupkwXhfjsn2nNbh2 P9Qy1gil52ZpEW1vJNVbdz7O5fqvx6dl/H3rLtAZN9nY2swcxhfRpx0u3fZeCUuebtOb kiPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691393316; x=1691998116; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=JdkszemTTJ40WO3YElX5gt1bKTrgMlexzniU31o1KDo=; b=S2axJ66cio2hr5vVVzz7M8YWXAu8pTFJwwJEn4S4zz/vKzSwHpz/h152+8vPLhqQ40 n+EN98i4oLOaW2kskzkf+G9SQ110KDqhzbC7YNULmeZ3gqcgs3pzsgr9MFVlMnM7EzWe ThWjjdVKkJ74qSMLuw3P4c0R44TZVOO76Cjkx0RmhSo898YsTcaMdxwSvRvfDEf+7NmF jbEcJv2AiXSZbRsf9YY9jIE5D+eszj35F1UMdwL42l64sHlz8ZepOaikS3OEPsCQ0v4e GERHdHp1/kC4KYLM0LK1QJMArp3xXga14Z/DoHAeQJ70QU4kKqzQO6F1+mRO+kFTJX0r jwLw== X-Gm-Message-State: AOJu0YykMSYoxB58JYmfYESmMtyUCUy5G1h3Cbu+dV20M0GMLytLXI8M 397yNgUiLscU+0wqzxa3wHEV/AK3egk= X-Received: by 2002:a17:907:1c8b:b0:992:103c:43fa with SMTP id nb11-20020a1709071c8b00b00992103c43famr7343702ejc.30.1691393316361; Mon, 07 Aug 2023 00:28:36 -0700 (PDT) Received: from mitsuki.. (ip-62-245-76-195.bb.vodafone.cz. [62.245.76.195]) by smtp.gmail.com with ESMTPSA id l7-20020a1709066b8700b0099c53c4407dsm4826417ejr.78.2023.08.07.00.28.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Aug 2023 00:28:35 -0700 (PDT) From: David Rosca To: ffmpeg-devel@ffmpeg.org Date: Mon, 7 Aug 2023 09:27:54 +0200 Message-ID: <20230807072801.14703-2-nowrep@gmail.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2] lavc/vaapi_encode: Add filler_data option 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: David Rosca Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: HMrRl9A6H5X8 v2: Add description in encoders.texi --- doc/encoders.texi | 3 +++ libavcodec/vaapi_encode.c | 1 + libavcodec/vaapi_encode.h | 9 ++++++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/doc/encoders.texi b/doc/encoders.texi index 25d6b7f09e..f146942aa5 100644 --- a/doc/encoders.texi +++ b/doc/encoders.texi @@ -3963,6 +3963,9 @@ Set the allowed max size in bytes for each frame. If the frame size exceeds the limitation, encoder will adjust the QP value to control the frame size. Invalid in CQP rate control mode. +@item filler_data +Insert filler data in CBR rate control mode to ensure target bitrate. + @item rc_mode Set the rate control mode to use. A given driver may only support a subset of modes. diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c index bfca315a7a..f161c76304 100644 --- a/libavcodec/vaapi_encode.c +++ b/libavcodec/vaapi_encode.c @@ -1860,6 +1860,7 @@ rc_mode_found: #if VA_CHECK_VERSION(1, 3, 0) .quality_factor = rc_quality, #endif + .rc_flags.bits.disable_bit_stuffing = !ctx->filler_data, }; vaapi_encode_add_global_param(avctx, VAEncMiscParameterTypeRateControl, diff --git a/libavcodec/vaapi_encode.h b/libavcodec/vaapi_encode.h index a1e639f56b..a2170cb8b0 100644 --- a/libavcodec/vaapi_encode.h +++ b/libavcodec/vaapi_encode.h @@ -198,6 +198,9 @@ typedef struct VAAPIEncodeContext { // Max Frame Size int max_frame_size; + // Filler Data + int filler_data; + // Explicitly set RC mode (otherwise attempt to pick from // available modes). int explicit_rc_mode; @@ -490,7 +493,11 @@ int ff_vaapi_encode_close(AVCodecContext *avctx); { "max_frame_size", \ "Maximum frame size (in bytes)",\ OFFSET(common.max_frame_size), AV_OPT_TYPE_INT, \ - { .i64 = 0 }, 0, INT_MAX, FLAGS } + { .i64 = 0 }, 0, INT_MAX, FLAGS }, \ + { "filler_data", \ + "Enable filler data", \ + OFFSET(common.filler_data), AV_OPT_TYPE_BOOL, \ + { .i64 = 1 }, 0, 1, FLAGS } #define VAAPI_ENCODE_RC_MODE(name, desc) \ { #name, desc, 0, AV_OPT_TYPE_CONST, { .i64 = RC_MODE_ ## name }, \