summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>2021-11-04 14:22:37 +0100
committerJean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>2021-11-15 11:00:05 +0100
commit3d81620b20e853650d2baadab1b7b8bdc82c94d5 (patch)
tree45e021d0e727ee3090afed6bf78888ad25cc0ab4
parent4fdf1e4f5e9dce03f9506999f610eb6b1277e1b7 (diff)
ipa: ipu3: agc: Refactor ev gain calculation and testing
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@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
-rw-r--r--src/ipa/ipu3/algorithms/agc.cpp14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp
index 74bce7bb..61ca8b3f 100644
--- a/src/ipa/ipu3/algorithms/agc.cpp
+++ b/src/ipa/ipu3/algorithms/agc.cpp
@@ -188,14 +188,6 @@ void Agc::filterExposure()
*/
void Agc::computeExposure(IPAFrameContext &frameContext)
{
-
- /* Are we correctly exposed ? */
- if (std::abs(iqMean_ - kEvGainTarget * knumHistogramBins) <= 1) {
- LOG(IPU3Agc, Debug) << "We are well exposed (iqMean = "
- << iqMean_ << ")";
- return;
- }
-
/* Get the effective exposure and gain applied on the sensor. */
uint32_t exposure = frameContext.sensor.exposure;
double analogueGain = frameContext.sensor.gain;
@@ -203,6 +195,12 @@ void Agc::computeExposure(IPAFrameContext &frameContext)
/* Estimate the gain needed to have the proportion wanted */
double evGain = kEvGainTarget * knumHistogramBins / iqMean_;
+ if (std::abs(evGain - 1.0) < 0.01) {
+ LOG(IPU3Agc, Debug) << "We are well exposed (iqMean = "
+ << iqMean_ << ")";
+ return;
+ }
+
/* extracted from Rpi::Agc::computeTargetExposure */
/* Calculate the shutter time in seconds */
utils::Duration currentShutter = exposure * lineDuration_;