Message ID | 20201126123203.19105-2-david.plowman@raspberrypi.com |
---|---|
State | Accepted |
Headers | show |
Series |
|
Related | show |
Hi David On 26/11/2020 12:32, David Plowman wrote: > 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> > --- > src/ipa/raspberrypi/controller/rpi/agc.cpp | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/src/ipa/raspberrypi/controller/rpi/agc.cpp b/src/ipa/raspberrypi/controller/rpi/agc.cpp > index 4c56bdc9..30a1c1c1 100644 > --- a/src/ipa/raspberrypi/controller/rpi/agc.cpp > +++ b/src/ipa/raspberrypi/controller/rpi/agc.cpp > @@ -588,7 +588,12 @@ bool Agc::applyDigitalGain(double gain, double target_Y) > > 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) { > filtered_.total_exposure = target_.total_exposure; > filtered_.total_exposure_no_dg = target_.total_exposure_no_dg; >
diff --git a/src/ipa/raspberrypi/controller/rpi/agc.cpp b/src/ipa/raspberrypi/controller/rpi/agc.cpp index 4c56bdc9..30a1c1c1 100644 --- a/src/ipa/raspberrypi/controller/rpi/agc.cpp +++ b/src/ipa/raspberrypi/controller/rpi/agc.cpp @@ -588,7 +588,12 @@ bool Agc::applyDigitalGain(double gain, double target_Y) 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) { filtered_.total_exposure = target_.total_exposure; filtered_.total_exposure_no_dg = target_.total_exposure_no_dg;