[PATCH] ipa: rpi: agc: Ignore stable region when exposure/gain set manually

David Plowman david.plowman at raspberrypi.com
Mon Sep 9 15:22:04 CEST 2024


When a user is taking control of exposure and gain, setting them
manually, we set the AGC "stable region" to zero. This means that any
user changes, however small, will be applied, and they won't be
regarded as "too small to bother with".

Signed-off-by: David Plowman <david.plowman at raspberrypi.com>
---
 src/ipa/rpi/controller/rpi/agc_channel.cpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/ipa/rpi/controller/rpi/agc_channel.cpp b/src/ipa/rpi/controller/rpi/agc_channel.cpp
index cf2565a8..c9df9b5b 100644
--- a/src/ipa/rpi/controller/rpi/agc_channel.cpp
+++ b/src/ipa/rpi/controller/rpi/agc_channel.cpp
@@ -883,11 +883,14 @@ void AgcChannel::filterExposure()
 
 	/*
 	 * AGC adapts instantly if both shutter and gain are directly specified
-	 * or we're in the startup phase.
+	 * or we're in the startup phase. Also disable the stable region, because we want
+	 * to reflect any user exposure/gain updates, however small.
 	 */
 	if ((status_.fixedShutter && status_.fixedAnalogueGain) ||
-	    frameCount_ <= config_.startupFrames)
+	    frameCount_ <= config_.startupFrames) {
 		speed = 1.0;
+		stableRegion = 0.0;
+	}
 	if (!filtered_.totalExposure) {
 		filtered_.totalExposure = target_.totalExposure;
 	} else if (filtered_.totalExposure * (1.0 - stableRegion) < target_.totalExposure &&
-- 
2.34.1



More information about the libcamera-devel mailing list