summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ipa/rpi/controller/rpi/agc_channel.cpp8
-rw-r--r--src/ipa/rpi/controller/rpi/agc_channel.h1
2 files changed, 7 insertions, 2 deletions
diff --git a/src/ipa/rpi/controller/rpi/agc_channel.cpp b/src/ipa/rpi/controller/rpi/agc_channel.cpp
index 1e7eae06..3efb6482 100644
--- a/src/ipa/rpi/controller/rpi/agc_channel.cpp
+++ b/src/ipa/rpi/controller/rpi/agc_channel.cpp
@@ -253,6 +253,8 @@ int AgcConfig::read(const libcamera::YamlObject &params)
stableRegion = params["stable_region"].get<double>(0.02);
+ desaturate = params["desaturate"].get<int>(1);
+
return 0;
}
@@ -860,8 +862,10 @@ bool AgcChannel::applyDigitalGain(double gain, double targetY, bool channelBound
* quickly (and we then approach the correct value more quickly from
* below).
*/
- bool desaturate = !channelBound &&
- targetY > config_.fastReduceThreshold && gain < sqrt(targetY);
+ bool desaturate = false;
+ if (config_.desaturate)
+ desaturate = !channelBound &&
+ targetY > config_.fastReduceThreshold && gain < sqrt(targetY);
if (desaturate)
dg /= config_.fastReduceThreshold;
LOG(RPiAgc, Debug) << "Digital gain " << dg << " desaturate? " << desaturate;
diff --git a/src/ipa/rpi/controller/rpi/agc_channel.h b/src/ipa/rpi/controller/rpi/agc_channel.h
index c1808422..4cf7233e 100644
--- a/src/ipa/rpi/controller/rpi/agc_channel.h
+++ b/src/ipa/rpi/controller/rpi/agc_channel.h
@@ -76,6 +76,7 @@ struct AgcConfig {
libcamera::utils::Duration defaultExposureTime;
double defaultAnalogueGain;
double stableRegion;
+ bool desaturate;
};
class AgcChannel