[libcamera-devel,v2,01/12] ipa: ipu3: Move the AWB stats structures
diff mbox series

Message ID 20210930093715.73293-2-jeanmichel.hautbois@ideasonboard.com
State Accepted
Headers show
Series
  • Improve ImgU statistics usage
Related show

Commit Message

Jean-Michel Hautbois Sept. 30, 2021, 9:37 a.m. UTC
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@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 src/ipa/ipu3/algorithms/awb.h | 37 ++++++++++++++++++-----------------
 1 file changed, 19 insertions(+), 18 deletions(-)

Patch
diff mbox series

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;