[libcamera-devel] [PATCH 06/22] ipa: ipu3: agc: Refactor ev gain calculation and testing

Jean-Michel Hautbois jeanmichel.hautbois at ideasonboard.com
Mon Nov 8 14:13:34 CET 2021


When we compute the new gain, we use the iqMean_ and estimate an
exposure value gain to apply. Return early when the gain is less than
1%.

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

diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp
index 133f5931..119a7938 100644
--- a/src/ipa/ipu3/algorithms/agc.cpp
+++ b/src/ipa/ipu3/algorithms/agc.cpp
@@ -189,17 +189,15 @@ void Agc::filterExposure()
  */
 void Agc::computeExposure(uint32_t &exposure, double &analogueGain)
 {
+	/* Estimate the gain needed to have the proportion wanted */
+	double evGain = kEvGainTarget * knumHistogramBins / iqMean_;
 
-	/* Are we correctly exposed ? */
-	if (std::abs(iqMean_ - kEvGainTarget * knumHistogramBins) <= 1) {
+	if (std::abs(evGain - 1.0) < 0.01) {
 		LOG(IPU3Agc, Debug) << "We are well exposed (iqMean = "
 				    << iqMean_ << ")";
 		return;
 	}
 
-	/* Estimate the gain needed to have the proportion wanted */
-	double evGain = kEvGainTarget * knumHistogramBins / iqMean_;
-
 	/* extracted from Rpi::Agc::computeTargetExposure */
 	/* Calculate the shutter time in seconds */
 	utils::Duration currentShutter = exposure * lineDuration_;
-- 
2.32.0



More information about the libcamera-devel mailing list