src: ipa: raspberrypi: Avoid AGC filtering when both gain and shutter specified

When both gain and shutter have been directly specified, do not filter
slowly towards those target values, but adopt them immediately. This
should match user expectations better.

Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
Reviewed-by: Naushir Patuck <naush@raspberrypi.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
David Plowman 2020-12-01 17:55:32 +00:00 committed by Laurent Pinchart
parent 02b129dab5
commit 1b5001e92f

View file

@ -588,7 +588,12 @@ bool Agc::applyDigitalGain(double gain, double target_Y)
void Agc::filterExposure(bool desaturate) void Agc::filterExposure(bool desaturate)
{ {
double speed = frame_count_ <= config_.startup_frames ? 1.0 : config_.speed; double speed = config_.speed;
// AGC adapts instantly if both shutter and gain are directly specified
// or we're in the startup phase.
if ((status_.fixed_shutter && status_.fixed_analogue_gain) ||
frame_count_ <= config_.startup_frames)
speed = 1.0;
if (filtered_.total_exposure == 0.0) { if (filtered_.total_exposure == 0.0) {
filtered_.total_exposure = target_.total_exposure; filtered_.total_exposure = target_.total_exposure;
filtered_.total_exposure_no_dg = target_.total_exposure_no_dg; filtered_.total_exposure_no_dg = target_.total_exposure_no_dg;