From patchwork Mon Aug 26 16:17:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 21027 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 468F6C324C for ; Mon, 26 Aug 2024 16:17:41 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 5E15363420; Mon, 26 Aug 2024 18:17:40 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="Q1tShAH8"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 69D906342D for ; Mon, 26 Aug 2024 18:17:25 +0200 (CEST) Received: from ideasonboard.com (mob-5-90-142-90.net.vodafone.it [5.90.142.90]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id C03F1480; Mon, 26 Aug 2024 18:16:18 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1724688979; bh=950sa0lBjmlQZWNUEOv+dTEaszo0vrblQOphQ54UL8I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Q1tShAH8bDpHVLAVMQrl5zMgqlfD5RxTQIYCEsZYYmRffOqKJwVWz/yDDCiZeogTl lUCi0dUwgx0Jn8rUkibStXBHlUN+Q6y2mCx7MEGNEFBrTlFy3a7XeHcdWK3Bsz5Cgr 7s2O+qneLMWdSUWC1OxFONoXiW0m8F7j3WdpkGJw= From: Jacopo Mondi To: libcamera-devel@lists.libcamera.org Cc: Paul Elder , Jacopo Mondi , Stefan Klug Subject: [PATCH v3 8/9] ipa: rkisp1: blc: Add support for BLS in compand Date: Mon, 26 Aug 2024 18:17:07 +0200 Message-ID: <20240826161709.524293-9-jacopo.mondi@ideasonboard.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240826161709.524293-1-jacopo.mondi@ideasonboard.com> References: <20240826161709.524293-1-jacopo.mondi@ideasonboard.com> MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" From: Paul Elder Extend the RkISP1 BLC algorithm to use the ISP 'companding' block for versions of the ISP (such as the one on the i.MX8MP) that lack the dedicated BLS block but implement BLS as part of the companding block. Signed-off-by: Paul Elder Signed-off-by: Laurent Pinchart Reviewed-by: Jacopo Mondi Reviewed-by: Stefan Klug Signed-off-by: Kieran Bingham Signed-off-by: Jacopo Mondi --- src/ipa/rkisp1/algorithms/blc.cpp | 33 ++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/src/ipa/rkisp1/algorithms/blc.cpp b/src/ipa/rkisp1/algorithms/blc.cpp index df1a91a413db..9bc10f4ad07f 100644 --- a/src/ipa/rkisp1/algorithms/blc.cpp +++ b/src/ipa/rkisp1/algorithms/blc.cpp @@ -110,7 +110,7 @@ int BlackLevelCorrection::init(IPAContext &context, const YamlObject &tuningData /** * \copydoc libcamera::ipa::Algorithm::prepare */ -void BlackLevelCorrection::prepare([[maybe_unused]] IPAContext &context, +void BlackLevelCorrection::prepare(IPAContext &context, const uint32_t frame, [[maybe_unused]] IPAFrameContext &frameContext, RkISP1Params *params) @@ -124,15 +124,30 @@ void BlackLevelCorrection::prepare([[maybe_unused]] IPAContext &context, if (!tuningParameters_) return; - auto config = params->block(); - config.setEnabled(true); + if (context.hw->compand) { + auto config = params->block(); + config.setEnabled(true); - config->enable_auto = 0; - /* The rkisp1 uses 12bit based black levels. Scale down accordingly. */ - config->fixed_val.r = blackLevelRed_ >> 4; - config->fixed_val.gr = blackLevelGreenR_ >> 4; - config->fixed_val.gb = blackLevelGreenB_ >> 4; - config->fixed_val.b = blackLevelBlue_ >> 4; + /* + * Scale up to the 20-bit black levels used by the companding + * block. + */ + config->r = blackLevelRed_ << 4; + config->gr = blackLevelGreenR_ << 4; + config->gb = blackLevelGreenB_ << 4; + config->b = blackLevelBlue_ << 4; + } else { + auto config = params->block(); + config.setEnabled(true); + + config->enable_auto = 0; + + /* Scale down to the 12-bit black levels used by the BLS block. */ + config->fixed_val.r = blackLevelRed_ >> 4; + config->fixed_val.gr = blackLevelGreenR_ >> 4; + config->fixed_val.gb = blackLevelGreenB_ >> 4; + config->fixed_val.b = blackLevelBlue_ >> 4; + } } /**