[libcamera-devel] [PATCH v1 4/7] ipa: ipu3: use process method for all algorithms

Jean-Michel Hautbois jeanmichel.hautbois at ideasonboard.com
Mon Jun 28 22:22:52 CEST 2021


The main goal will be to have the same process() prototype for all
algorithms, each of them would then grab the values needed using a
metadata exchange way (for instance, current analogue gain, shutter time,
or red/blue gains calculated in the AWB algorithm from AGC, etc.).

Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
---
 src/ipa/ipu3/ipu3.cpp     | 2 +-
 src/ipa/ipu3/ipu3_awb.cpp | 5 +++++
 src/ipa/ipu3/ipu3_awb.h   | 3 ++-
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp
index f43f8620..4466391a 100644
--- a/src/ipa/ipu3/ipu3.cpp
+++ b/src/ipa/ipu3/ipu3.cpp
@@ -296,7 +296,7 @@ void IPAIPU3::parseStatistics(unsigned int frame,
 	agcAlgo_->process(stats, exposure_, gain);
 	gain_ = camHelper_->gainCode(gain);
 
-	awbAlgo_->calculateWBGains(stats);
+	awbAlgo_->process(stats);
 
 	if (agcAlgo_->updateControls())
 		setControls(frame);
diff --git a/src/ipa/ipu3/ipu3_awb.cpp b/src/ipa/ipu3/ipu3_awb.cpp
index 9b409c8f..a94935c5 100644
--- a/src/ipa/ipu3/ipu3_awb.cpp
+++ b/src/ipa/ipu3/ipu3_awb.cpp
@@ -351,6 +351,11 @@ void IPU3Awb::calculateWBGains(const ipu3_uapi_stats_3a *stats)
 	}
 }
 
+void IPU3Awb::process(const ipu3_uapi_stats_3a *stats)
+{
+	calculateWBGains(stats);
+}
+
 void IPU3Awb::updateWbParameters(ipu3_uapi_params &params, double agcGamma)
 {
 	/*
diff --git a/src/ipa/ipu3/ipu3_awb.h b/src/ipa/ipu3/ipu3_awb.h
index f4100f4a..795e32e3 100644
--- a/src/ipa/ipu3/ipu3_awb.h
+++ b/src/ipa/ipu3/ipu3_awb.h
@@ -33,7 +33,7 @@ public:
 	~IPU3Awb();
 
 	void initialise(ipu3_uapi_params &params, const Size &bdsOutputSize, struct ipu3_uapi_grid_config &bdsGrid);
-	void calculateWBGains(const ipu3_uapi_stats_3a *stats);
+	void process(const ipu3_uapi_stats_3a *stats);
 	void updateWbParameters(ipu3_uapi_params &params, double agcGamma);
 
 private:
@@ -42,6 +42,7 @@ private:
 	void clearAwbStats();
 	void awbGreyWorld();
 	uint32_t estimateCCT(double red, double green, double blue);
+	void calculateWBGains(const ipu3_uapi_stats_3a *stats);
 
 	struct ipu3_uapi_grid_config awbGrid_;
 
-- 
2.30.2



More information about the libcamera-devel mailing list