[PATCH v1 3/5] ipa: rkisp1: awb: Unconditionally fill metadata
Kieran Bingham
kieran.bingham at ideasonboard.com
Mon Jul 15 01:51:18 CEST 2024
Quoting Stefan Klug (2024-07-12 15:32:04)
> When the colour temperature estimation gets skipped, the metadata isn't
> populated. Fix that by filling the metadata early in the function.
>
> Signed-off-by: Stefan Klug <stefan.klug at ideasonboard.com>
> ---
> src/ipa/rkisp1/algorithms/awb.cpp | 17 ++++++++++-------
> 1 file changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/src/ipa/rkisp1/algorithms/awb.cpp b/src/ipa/rkisp1/algorithms/awb.cpp
> index 18f750207793..4ccafd48dedd 100644
> --- a/src/ipa/rkisp1/algorithms/awb.cpp
> +++ b/src/ipa/rkisp1/algorithms/awb.cpp
> @@ -222,6 +222,12 @@ void Awb::process(IPAContext &context,
> double redMean;
> double blueMean;
>
> + metadata.set(controls::AwbEnable, frameContext.awb.autoEnabled);
> + metadata.set(controls::ColourGains, {
> + static_cast<float>(frameContext.awb.gains.red),
> + static_cast<float>(frameContext.awb.gains.blue)
> + });
> +
> if (rgbMode_) {
> greenMean = awb->awb_mean[0].mean_y_or_g;
> redMean = awb->awb_mean[0].mean_cr_or_r;
> @@ -277,11 +283,15 @@ void Awb::process(IPAContext &context,
> */
> if (redMean < kMeanMinThreshold && greenMean < kMeanMinThreshold &&
> blueMean < kMeanMinThreshold) {
> + metadata.set(controls::ColourTemperature, activeState.awb.temperatureK);
Maybe the braces aren't so redundant after all. Perhaps the metadata
could have been updated in the previous patch as it was so closely
related - but I won't object to this.
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> return;
> }
>
> activeState.awb.temperatureK = estimateCCT(redMean, greenMean, blueMean);
>
> + /* Metadata shall contain the up to date measurement */
> + metadata.set(controls::ColourTemperature, activeState.awb.temperatureK);
> +
> /*
> * Estimate the red and blue gains to apply in a grey world. The green
> * gain is hardcoded to 1.0. Avoid divisions by zero by clamping the
> @@ -308,13 +318,6 @@ void Awb::process(IPAContext &context,
> activeState.awb.gains.automatic.blue = blueGain;
> activeState.awb.gains.automatic.green = 1.0;
>
> - metadata.set(controls::AwbEnable, frameContext.awb.autoEnabled);
> - metadata.set(controls::ColourGains, {
> - static_cast<float>(frameContext.awb.gains.red),
> - static_cast<float>(frameContext.awb.gains.blue)
> - });
> - metadata.set(controls::ColourTemperature, activeState.awb.temperatureK);
> -
> LOG(RkISP1Awb, Debug) << std::showpoint
> << "Means [" << redMean << ", " << greenMean << ", " << blueMean
> << "], gains [" << activeState.awb.gains.automatic.red << ", "
> --
> 2.43.0
>
More information about the libcamera-devel
mailing list