From 23ada683db6a33ee848dd9d3061d252e6c9e5dfd Mon Sep 17 00:00:00 2001 From: David Plowman Date: Mon, 23 Nov 2020 07:38:00 +0000 Subject: libcamera: ipa: raspberrypi: awb: Add SwitchMode method to output AWB status The Awb class now implements a SwitchMode method which outputs its AwbStatus for other algorithms to read, should they be interested. Signed-off-by: David Plowman Reviewed-by: Naushir Patuck Acked-by: Kieran Bingham Signed-off-by: Kieran Bingham --- src/ipa/raspberrypi/controller/rpi/awb.cpp | 14 ++++++++++++++ src/ipa/raspberrypi/controller/rpi/awb.hpp | 1 + 2 files changed, 15 insertions(+) (limited to 'src/ipa/raspberrypi/controller') diff --git a/src/ipa/raspberrypi/controller/rpi/awb.cpp b/src/ipa/raspberrypi/controller/rpi/awb.cpp index 469d0e53..020825e3 100644 --- a/src/ipa/raspberrypi/controller/rpi/awb.cpp +++ b/src/ipa/raspberrypi/controller/rpi/awb.cpp @@ -179,6 +179,20 @@ void Awb::SetManualGains(double manual_r, double manual_b) manual_b_ = manual_b; } +void Awb::SwitchMode([[maybe_unused]] CameraMode const &camera_mode, + Metadata *metadata) +{ + // If fixed colour gains have been set, we should let other algorithms + // know by writing it into the image metadata. + if (manual_r_ != 0.0 && manual_b_ != 0.0) { + prev_sync_results_.gain_r = manual_r_; + prev_sync_results_.gain_g = 1.0; + prev_sync_results_.gain_b = manual_b_; + sync_results_ = prev_sync_results_; + } + metadata->Set("awb.status", prev_sync_results_); +} + void Awb::fetchAsyncResults() { RPI_LOG("Fetch AWB results"); diff --git a/src/ipa/raspberrypi/controller/rpi/awb.hpp b/src/ipa/raspberrypi/controller/rpi/awb.hpp index 9124d042..545d85a8 100644 --- a/src/ipa/raspberrypi/controller/rpi/awb.hpp +++ b/src/ipa/raspberrypi/controller/rpi/awb.hpp @@ -84,6 +84,7 @@ public: void Read(boost::property_tree::ptree const ¶ms) override; void SetMode(std::string const &name) override; void SetManualGains(double manual_r, double manual_b) override; + void SwitchMode(CameraMode const &camera_mode, Metadata *metadata) override; void Prepare(Metadata *image_metadata) override; void Process(StatisticsPtr &stats, Metadata *image_metadata) override; struct RGB { -- cgit v1.2.1