[libcamera-devel] [PATCH v6 1/5] ipa: ipu3: Move the AWB stats structures
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Fri Sep 10 17:01:27 CEST 2021
Hi Jean-Michel,
Thank you for the patch.
On Thu, Sep 09, 2021 at 03:54:45PM +0200, 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>
> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart 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;
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list