[libcamera-devel] [PATCH] ipa: rpi: agc: Fix bug where AeLocked was never getting set

Kieran Bingham kieran.bingham at ideasonboard.com
Mon Nov 13 10:38:25 CET 2023


Quoting David Plowman via libcamera-devel (2023-11-10 10:45:20)
> The recent change where time-filtering is done before sorting out the
> digital gain means that the target exposure without digital gain is no
> longer set, breaking the 'AeLocked' calculation.
> 
> We can use the regular (full) target exposure instead.
> 
> Signed-off-by: David Plowman <david.plowman at raspberrypi.com>
> Fixes: 84b6327789fc ("ipa: rpi: agc: Filter exposures before dealing with digital gain")
> ---
>  src/ipa/rpi/controller/rpi/agc_channel.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/ipa/rpi/controller/rpi/agc_channel.cpp b/src/ipa/rpi/controller/rpi/agc_channel.cpp
> index 8d374b53..8116c6c1 100644
> --- a/src/ipa/rpi/controller/rpi/agc_channel.cpp
> +++ b/src/ipa/rpi/controller/rpi/agc_channel.cpp
> @@ -977,7 +977,7 @@ void AgcChannel::divideUpExposure()
>  void AgcChannel::writeAndFinish(Metadata *imageMetadata, bool desaturate)
>  {
>         status_.totalExposureValue = filtered_.totalExposure;
> -       status_.targetExposureValue = desaturate ? 0s : target_.totalExposureNoDG;
> +       status_.targetExposureValue = desaturate ? 0s : target_.totalExposure;

It's hard for me to follow this back at the moment, but
target_.totalExposureNoDG is used during process() before we get to
writeAndFinish().

Are there other places that need updating too? or are those ok as this
is more of an ordering thing?

Anyway, this fixes a reported bug so:

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

>         status_.shutterTime = filtered_.shutter;
>         status_.analogueGain = filtered_.analogueGain;
>         /*
> -- 
> 2.39.2
>


More information about the libcamera-devel mailing list