[PATCH 06/15] libipa: awb: Pass lux value to calculateAwb() as unsigned int

Stefan Klug stefan.klug at ideasonboard.com
Mon Feb 24 10:13:33 CET 2025


Hi Laurent,

Thank you for the patch. 

On Mon, Feb 24, 2025 at 01:03:54AM +0200, Laurent Pinchart wrote:
> The lux value can never be negative. Pass it as an unsigned int.
> 

I don't like unsigned ints outside lowlevel/hardware stuff (size_t maybe
one exception). They just produce too many ways to create hidden bugs.
But so be it :-)

> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> Do we need a Lux type ? And maybe a ColourTemperature type ?
> ---
>  src/ipa/libipa/awb.h         | 2 +-
>  src/ipa/libipa/awb_bayes.cpp | 2 +-
>  src/ipa/libipa/awb_bayes.h   | 2 +-
>  src/ipa/libipa/awb_grey.cpp  | 2 +-
>  src/ipa/libipa/awb_grey.h    | 2 +-
>  5 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/src/ipa/libipa/awb.h b/src/ipa/libipa/awb.h
> index 4a1b012a4334..5c298d3b6f69 100644
> --- a/src/ipa/libipa/awb.h
> +++ b/src/ipa/libipa/awb.h
> @@ -35,7 +35,7 @@ public:
>  	virtual ~AwbAlgorithm() = default;
>  
>  	virtual int init(const YamlObject &tuningData) = 0;
> -	virtual AwbResult calculateAwb(const AwbStats &stats, int lux) = 0;
> +	virtual AwbResult calculateAwb(const AwbStats &stats, unsigned int lux) = 0;
>  	virtual RGB<double> gainsFromColourTemperature(double colourTemperature) = 0;
>  
>  	const ControlInfoMap::Map &controls() const
> diff --git a/src/ipa/libipa/awb_bayes.cpp b/src/ipa/libipa/awb_bayes.cpp
> index e75bfcd693d9..9287b884cb95 100644
> --- a/src/ipa/libipa/awb_bayes.cpp
> +++ b/src/ipa/libipa/awb_bayes.cpp
> @@ -275,7 +275,7 @@ RGB<double> AwbBayes::gainsFromColourTemperature(double colourTemperature)
>  	return { { gains[0], 1.0, gains[1] } };
>  }
>  
> -AwbResult AwbBayes::calculateAwb(const AwbStats &stats, int lux)
> +AwbResult AwbBayes::calculateAwb(const AwbStats &stats, unsigned int lux)
>  {
>  	ipa::Pwl prior;
>  	if (lux > 0) {

This if clause should then be removed, too.

Regards,
Stefan

> diff --git a/src/ipa/libipa/awb_bayes.h b/src/ipa/libipa/awb_bayes.h
> index 47db7243273f..23bf88061118 100644
> --- a/src/ipa/libipa/awb_bayes.h
> +++ b/src/ipa/libipa/awb_bayes.h
> @@ -34,7 +34,7 @@ public:
>  	AwbBayes() = default;
>  
>  	int init(const YamlObject &tuningData) override;
> -	AwbResult calculateAwb(const AwbStats &stats, int lux) override;
> +	AwbResult calculateAwb(const AwbStats &stats, unsigned int lux) override;
>  	RGB<double> gainsFromColourTemperature(double temperatureK) override;
>  	void handleControls(const ControlList &controls) override;
>  
> diff --git a/src/ipa/libipa/awb_grey.cpp b/src/ipa/libipa/awb_grey.cpp
> index 06ffd45618d8..e979cc4d1a3e 100644
> --- a/src/ipa/libipa/awb_grey.cpp
> +++ b/src/ipa/libipa/awb_grey.cpp
> @@ -70,7 +70,7 @@ int AwbGrey::init(const YamlObject &tuningData)
>   *
>   * \return The AWB result
>   */
> -AwbResult AwbGrey::calculateAwb(const AwbStats &stats, [[maybe_unused]] int lux)
> +AwbResult AwbGrey::calculateAwb(const AwbStats &stats, [[maybe_unused]] unsigned int lux)
>  {
>  	AwbResult result;
>  	auto means = stats.getRGBMeans();
> diff --git a/src/ipa/libipa/awb_grey.h b/src/ipa/libipa/awb_grey.h
> index 1a365e616a98..e3c34201dbc9 100644
> --- a/src/ipa/libipa/awb_grey.h
> +++ b/src/ipa/libipa/awb_grey.h
> @@ -23,7 +23,7 @@ public:
>  	AwbGrey() = default;
>  
>  	int init(const YamlObject &tuningData) override;
> -	AwbResult calculateAwb(const AwbStats &stats, int lux) override;
> +	AwbResult calculateAwb(const AwbStats &stats, unsigned int lux) override;
>  	RGB<double> gainsFromColourTemperature(double colourTemperature) override;
>  
>  private:
> -- 
> Regards,
> 
> Laurent Pinchart
> 


More information about the libcamera-devel mailing list