[PATCH] ipa: rkisp1: awb: Ignore empty AWB statistics

Kieran Bingham kieran.bingham at ideasonboard.com
Tue Apr 29 18:22:49 CEST 2025


Quoting Stefan Klug (2025-04-29 12:59:19)
> When the AWB engine doesn't find a valid pixel because all pixels lie
> outside the configured colour range it returns an AWB measurement value
> of 255, 255, 255. This leaves the regulation in an unrecoverable state
> noticeable by a completely green image. Fix that by skipping the AWB
> calculation in case there were no valid pixels.
> 
> Signed-off-by: Stefan Klug <stefan.klug at ideasonboard.com>.
> ---
>  src/ipa/rkisp1/algorithms/awb.cpp | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/src/ipa/rkisp1/algorithms/awb.cpp b/src/ipa/rkisp1/algorithms/awb.cpp
> index eafe93081bb1..2b8b41ecccbe 100644
> --- a/src/ipa/rkisp1/algorithms/awb.cpp
> +++ b/src/ipa/rkisp1/algorithms/awb.cpp
> @@ -296,6 +296,11 @@ void Awb::process(IPAContext &context,
>         const rkisp1_cif_isp_stat *params = &stats->params;
>         const rkisp1_cif_isp_awb_stat *awb = &params->awb;
>  
> +       if (awb->awb_mean[0].cnt == 0) {
> +               LOG(RkISP1Awb, Warning) << "AWB statistics are empty";
> +               return;

So I think this is definitely a valid thing to do - but I can conjour up
conditions where 'every frame' is invalid - and that then becomes very
noisy on this log.

I suspect just making it a Debug level log instead might be better.

Anyway, I'll leave that to you - I think catching this is a good thing -
we shouldn't try to calculate any means from no data ...


Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

> +       }
> +
>         RGB<double> rgbMeans = calculateRgbMeans(frameContext, awb);
>  
>         /*
> -- 
> 2.43.0
>


More information about the libcamera-devel mailing list