ipa: rpi: agc: Allow AGC channels to avoid using "fast desaturation"

"Fast desaturation" is a technique that can help the AGC algorithm to
desaturate images more quickly when they are very
over-exposed. However, it uses digital gain to do this which can
confuse our HDR techniques. Therefore make it optional.

Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Reviewed-by: Naushir Patuck <naush@raspberrypi.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
David Plowman 2023-10-12 14:59:31 +01:00 committed by Kieran Bingham
parent 0923d50b15
commit edb48a1337
2 changed files with 7 additions and 2 deletions

View file

@ -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;