[PATCH v2 11/11] ipa: rkisp1: blc: Add support for BLS in compand
Stefan Klug
stefan.klug at ideasonboard.com
Fri Jul 5 15:41:43 CEST 2024
Hi Paul, hi Laurent,
Thank you for the patch.
On Thu, Jul 04, 2024 at 07:20:35PM +0300, Laurent Pinchart wrote:
> From: Paul Elder <paul.elder at ideasonboard.com>
>
> 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 <paul.elder at ideasonboard.com>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> Reviewed-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>
Looks good to me.
Reviewed-by: Stefan Klug <stefan.klug at ideasonboard.com>
Cheers,
Stefan
> ---
> 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<Block::Bls>();
> - config.setEnabled(true);
> + if (context.hw->compand) {
> + auto config = params->block<Block::CompandBls>();
> + 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<Block::Bls>();
> + 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;
> + }
> }
>
> /**
> --
> Regards,
>
> Laurent Pinchart
>
More information about the libcamera-devel
mailing list