[{"id":30333,"web_url":"https://patchwork.libcamera.org/comment/30333/","msgid":"<v7ta2a5vge3s63if5ksykvt4ztfidkwvrp53i3eqhszuxjalrh@kbrhq3dzmzw7>","date":"2024-07-04T13:41:28","subject":"Re: [PATCH v1 11/11] ipa: rkisp1: blc: Add support for BLS in\n\tcompand","submitter":{"id":143,"url":"https://patchwork.libcamera.org/api/people/143/","name":"Jacopo Mondi","email":"jacopo.mondi@ideasonboard.com"},"content":"Hi LAurent\n\nOn Thu, Jul 04, 2024 at 01:52:30AM GMT, Laurent Pinchart wrote:\n> From: Paul Elder <paul.elder@ideasonboard.com>\n>\n> Add support for black level subtraction to use the BLS in the compand\n\nBLS is 'black level subtraction' so this reads as\n\nAdd support for BLS to use BLS in the compand block\n\nI would\n\nExtend the RkISP1 BLC algorithm to use the ISP 'companding' block\nfor versions of the ISP  (such as the one on the i.MX8MP) that\nlack a dedicated block but implement BLS in the companding one.\n\nor something similar\n\n> block, for versions of the ISP (such as the one on the i.MX8MP) that\n> lack the dedicated BLS block but have BLS in the companding block.\n>\n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  src/ipa/rkisp1/algorithms/blc.cpp | 30 ++++++++++++++++++++++--------\n>  1 file changed, 22 insertions(+), 8 deletions(-)\n>\n> diff --git a/src/ipa/rkisp1/algorithms/blc.cpp b/src/ipa/rkisp1/algorithms/blc.cpp\n> index 464a0e066dd4..bc329ea035aa 100644\n> --- a/src/ipa/rkisp1/algorithms/blc.cpp\n> +++ b/src/ipa/rkisp1/algorithms/blc.cpp\n> @@ -110,7 +110,7 @@ int BlackLevelCorrection::init(IPAContext &context, const YamlObject &tuningData\n>  /**\n>   * \\copydoc libcamera::ipa::Algorithm::prepare\n>   */\n> -void BlackLevelCorrection::prepare([[maybe_unused]] IPAContext &context,\n> +void BlackLevelCorrection::prepare(IPAContext &context,\n>  \t\t\t\t   const uint32_t frame,\n>  \t\t\t\t   [[maybe_unused]] IPAFrameContext &frameContext,\n>  \t\t\t\t   RkISP1Params *params)\n> @@ -124,14 +124,28 @@ void BlackLevelCorrection::prepare([[maybe_unused]] IPAContext &context,\n>  \tif (!tuningParameters_)\n>  \t\treturn;\n>\n> -\tauto config = params->block<Block::Bls>(RkISP1Params::State::Enable);\n> +\tif (context.hw->compand) {\n> +\t\tauto config = params->block<Block::CompandBls>(RkISP1Params::State::Enable);\n>\n> -\tconfig->enable_auto = 0;\n> -\t/* The rkisp1 uses 12bit based black levels. Scale down accordingly. */\n> -\tconfig->fixed_val.r = blackLevelRed_ >> 4;\n> -\tconfig->fixed_val.gr = blackLevelGreenR_ >> 4;\n> -\tconfig->fixed_val.gb = blackLevelGreenB_ >> 4;\n> -\tconfig->fixed_val.b = blackLevelBlue_ >> 4;\n> +\t\t/*\n> +\t\t * Scale up to the 20-bit black levels used by the companding\n> +\t\t * block.\n> +\t\t */\n> +\t\tconfig->r = blackLevelRed_ << 4;\n> +\t\tconfig->gr = blackLevelGreenR_ << 4;\n> +\t\tconfig->gb = blackLevelGreenB_ << 4;\n> +\t\tconfig->b = blackLevelBlue_ << 4;\n\nIf you return you could save one indentation level, but it's a minor\nReviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n\nThanks\n  j\n\n> +\t} else {\n> +\t\tauto config = params->block<Block::Bls>(RkISP1Params::State::Enable);\n> +\n> +\t\tconfig->enable_auto = 0;\n> +\n> +\t\t/* Scale down to the 12-bit black levels used by the BLS block. */\n> +\t\tconfig->fixed_val.r = blackLevelRed_ >> 4;\n> +\t\tconfig->fixed_val.gr = blackLevelGreenR_ >> 4;\n> +\t\tconfig->fixed_val.gb = blackLevelGreenB_ >> 4;\n> +\t\tconfig->fixed_val.b = blackLevelBlue_ >> 4;\n> +\t}\n>  }\n>\n>  /**\n> --\n> Regards,\n>\n> Laurent Pinchart\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 98A86BEFBE\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  4 Jul 2024 13:41:35 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1E46962E22;\n\tThu,  4 Jul 2024 15:41:34 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 7B287619C8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  4 Jul 2024 15:41:32 +0200 (CEST)","from ideasonboard.com (93-61-96-190.ip145.fastwebnet.it\n\t[93.61.96.190])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 3229263D;\n\tThu,  4 Jul 2024 15:41:03 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"mpzK5qrZ\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1720100463;\n\tbh=Z7eevJFIX4ccxh+ZqTZXCcDR0L2T4KkyR0NvRDpLIZw=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=mpzK5qrZAZWoWDAgC1tKiXPdPlsYMyvTwG8WVJqIzuFPZdUgQBQTdcuedXqplD0lh\n\t19kYnf1vx3dXRv1WxjNNgVAPWnnASgtCuI7o35qZCjCufraIosZX0iPVMZFvOIq8SU\n\twCyZ172oxtLOonHUoJ1oZ6r5tDv/NLvL7jV26ZoM=","Date":"Thu, 4 Jul 2024 15:41:28 +0200","From":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org, \n\tJacopo Mondi <jacopo.mondi@ideasonboard.com>,\n\tPaul Elder <paul.elder@ideasonboard.com>","Subject":"Re: [PATCH v1 11/11] ipa: rkisp1: blc: Add support for BLS in\n\tcompand","Message-ID":"<v7ta2a5vge3s63if5ksykvt4ztfidkwvrp53i3eqhszuxjalrh@kbrhq3dzmzw7>","References":"<20240703225230.3530-1-laurent.pinchart@ideasonboard.com>\n\t<20240703225230.3530-12-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20240703225230.3530-12-laurent.pinchart@ideasonboard.com>","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]