[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