[libcamera-devel] [PATCH 1/4] ipa: ipu3: Move the AWB stats structures

Kieran Bingham kieran.bingham at ideasonboard.com
Thu Sep 2 14:16:16 CEST 2021


On 02/09/2021 09:32, Jean-Michel Hautbois wrote:
> The structure Ipu3AwbCell describes the AWB stats layout on the kernel
> side. We will need it to be used by the AGC algorithm to be introduced
> later, so let's make it visible from ipa::ipu3::algorithms and not only
> for the AWB class.
> 
> The IspStatsRegion will be needed by AGC too, so let's move it in the
> same namespace too.
> 
> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>

Just a code move, so no particular issues.

Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

> ---
>  src/ipa/ipu3/algorithms/awb.h | 37 ++++++++++++++++++-----------------
>  1 file changed, 19 insertions(+), 18 deletions(-)
> 
> diff --git a/src/ipa/ipu3/algorithms/awb.h b/src/ipa/ipu3/algorithms/awb.h
> index a16dd68d..cc848060 100644
> --- a/src/ipa/ipu3/algorithms/awb.h
> +++ b/src/ipa/ipu3/algorithms/awb.h
> @@ -23,6 +23,24 @@ namespace ipa::ipu3::algorithms {
>  static constexpr uint32_t kAwbStatsSizeX = 16;
>  static constexpr uint32_t kAwbStatsSizeY = 12;
>  
> +/* \todo Move the cell layout into intel-ipu3.h kernel header */
> +struct Ipu3AwbCell {
> +	unsigned char greenRedAvg;
> +	unsigned char redAvg;
> +	unsigned char blueAvg;
> +	unsigned char greenBlueAvg;
> +	unsigned char satRatio;
> +	unsigned char padding[3];
> +} __attribute__((packed));
> +
> +struct IspStatsRegion {
> +	unsigned int counted;
> +	unsigned int uncounted;
> +	unsigned long long rSum;
> +	unsigned long long gSum;
> +	unsigned long long bSum;
> +};
> +
>  class Awb : public Algorithm
>  {
>  public:
> @@ -32,16 +50,7 @@ public:
>  	void prepare(IPAContext &context, ipu3_uapi_params *params) override;
>  	void process(IPAContext &context, const ipu3_uapi_stats_3a *stats) override;
>  
> -	struct Ipu3AwbCell {
> -		unsigned char greenRedAvg;
> -		unsigned char redAvg;
> -		unsigned char blueAvg;
> -		unsigned char greenBlueAvg;
> -		unsigned char satRatio;
> -		unsigned char padding[3];
> -	} __attribute__((packed));
> -
> -	/* \todo Make these three structs available to all the ISPs ? */
> +	/* \todo Make these structs available to all the ISPs ? */
>  	struct RGB {
>  		RGB(double _R = 0, double _G = 0, double _B = 0)
>  			: R(_R), G(_G), B(_B)
> @@ -55,14 +64,6 @@ public:
>  		}
>  	};
>  
> -	struct IspStatsRegion {
> -		unsigned int counted;
> -		unsigned int uncounted;
> -		unsigned long long rSum;
> -		unsigned long long gSum;
> -		unsigned long long bSum;
> -	};
> -
>  	struct AwbStatus {
>  		double temperatureK;
>  		double redGain;
> 


More information about the libcamera-devel mailing list