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 <david.plowman@raspberrypi.com>
Reviewed-by: Naushir Patuck <naush@raspberrypi.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
David Plowman 2022-02-08 10:04:36 +00:00 committed by Laurent Pinchart
parent ca20503f62
commit 110c26b317
2 changed files with 24 additions and 0 deletions

View file

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