[libcamera-devel] [PATCH 2/2] ipa: rpi: awb: Add an initialValues method

Naushir Patuck naush at raspberrypi.com
Thu Dec 7 11:45:13 CET 2023


Hi David,

Thank you for this work.

On Wed, 6 Dec 2023 at 10:38, David Plowman via libcamera-devel
<libcamera-devel at lists.libcamera.org> wrote:
>
> This allows the IPA to get reasonable default colour gains before AWB
> has run. This is particularly important on the PiSP platform where
> these numbers are helpful in programming the Front End statistics
> block in advance.
>
> Signed-off-by: David Plowman <david.plowman at raspberrypi.com>

Reviewed-by: Naushir Patuck <naush at raspberrypi.com>

> ---
>  src/ipa/rpi/controller/awb_algorithm.h | 1 +
>  src/ipa/rpi/controller/rpi/awb.cpp     | 6 ++++++
>  src/ipa/rpi/controller/rpi/awb.h       | 1 +
>  3 files changed, 8 insertions(+)
>
> diff --git a/src/ipa/rpi/controller/awb_algorithm.h b/src/ipa/rpi/controller/awb_algorithm.h
> index 8462c4db..6009bdac 100644
> --- a/src/ipa/rpi/controller/awb_algorithm.h
> +++ b/src/ipa/rpi/controller/awb_algorithm.h
> @@ -16,6 +16,7 @@ public:
>         AwbAlgorithm(Controller *controller) : Algorithm(controller) {}
>         /* An AWB algorithm must provide the following: */
>         virtual unsigned int getConvergenceFrames() const = 0;
> +       virtual void initialValues(double &gainR, double &gainB) = 0;
>         virtual void setMode(std::string const &modeName) = 0;
>         virtual void setManualGains(double manualR, double manualB) = 0;
>         virtual void enableAuto() = 0;
> diff --git a/src/ipa/rpi/controller/rpi/awb.cpp b/src/ipa/rpi/controller/rpi/awb.cpp
> index 5ae0c2fa..dde5785a 100644
> --- a/src/ipa/rpi/controller/rpi/awb.cpp
> +++ b/src/ipa/rpi/controller/rpi/awb.cpp
> @@ -220,6 +220,12 @@ void Awb::initialise()
>         asyncResults_ = syncResults_;
>  }
>
> +void Awb::initialValues(double &gainR, double &gainB)
> +{
> +       gainR = syncResults_.gainR;
> +       gainB = syncResults_.gainB;
> +}
> +
>  void Awb::disableAuto()
>  {
>         /* Freeze the most recent values, and treat them as manual gains */
> diff --git a/src/ipa/rpi/controller/rpi/awb.h b/src/ipa/rpi/controller/rpi/awb.h
> index e7d49cd8..cde6a62f 100644
> --- a/src/ipa/rpi/controller/rpi/awb.h
> +++ b/src/ipa/rpi/controller/rpi/awb.h
> @@ -95,6 +95,7 @@ public:
>         void initialise() override;
>         int read(const libcamera::YamlObject &params) override;
>         unsigned int getConvergenceFrames() const override;
> +       void initialValues(double &gainR, double &gainB) override;
>         void setMode(std::string const &name) override;
>         void setManualGains(double manualR, double manualB) override;
>         void enableAuto() override;
> --
> 2.39.2
>


More information about the libcamera-devel mailing list