From 110c26b317c783a48c97badd93c006f6c2ae834b Mon Sep 17 00:00:00 2001 From: David Plowman Date: Tue, 8 Feb 2022 10:04:36 +0000 Subject: ipa: raspberrypi: awb: Better handling of how we disable AWB We now handle disabling ("pausing") AWB in the same way as AEC/AGC. Instead of letting the pause flag be set so that the code never runs at all, we instead fix the manual settings to the current values (but continue to be called). The algorithm does not restart any calculations in this state, but continues to add AWB metadata to every frame. Therefore certain other algorithms that want to know it (CCM and ALSC, for example) can still find it. Signed-off-by: David Plowman Reviewed-by: Naushir Patuck Reviewed-by: Laurent Pinchart Signed-off-by: Laurent Pinchart --- src/ipa/raspberrypi/controller/rpi/awb.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/ipa/raspberrypi/controller/rpi/awb.cpp') diff --git a/src/ipa/raspberrypi/controller/rpi/awb.cpp b/src/ipa/raspberrypi/controller/rpi/awb.cpp index 5cfd33a3..d4c93447 100644 --- a/src/ipa/raspberrypi/controller/rpi/awb.cpp +++ b/src/ipa/raspberrypi/controller/rpi/awb.cpp @@ -172,6 +172,26 @@ void Awb::Initialise() async_results_ = sync_results_; } +bool Awb::IsPaused() const +{ + return false; +} + +void Awb::Pause() +{ + // "Pause" by fixing everything to the most recent values. + manual_r_ = sync_results_.gain_r = prev_sync_results_.gain_r; + manual_b_ = sync_results_.gain_b = prev_sync_results_.gain_b; + sync_results_.gain_g = prev_sync_results_.gain_g; + sync_results_.temperature_K = prev_sync_results_.temperature_K; +} + +void Awb::Resume() +{ + manual_r_ = 0.0; + manual_b_ = 0.0; +} + unsigned int Awb::GetConvergenceFrames() const { // If not in auto mode, there is no convergence -- cgit v1.2.1