[PATCH] ipa: rpi: agc: Ignore stable region when exposure/gain set manually

Naushir Patuck naush at raspberrypi.com
Mon Sep 9 15:40:10 CEST 2024


Hi David,

Thank you for this fix.


On Mon, 9 Sept 2024 at 14:22, David Plowman
<david.plowman at raspberrypi.com> wrote:
>
> When a user is taking control of exposure and gain, setting them
> manually, we set the AGC "stable region" to zero. This means that any
> user changes, however small, will be applied, and they won't be
> regarded as "too small to bother with".
>
> Signed-off-by: David Plowman <david.plowman at raspberrypi.com>

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

> ---
>  src/ipa/rpi/controller/rpi/agc_channel.cpp | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/src/ipa/rpi/controller/rpi/agc_channel.cpp b/src/ipa/rpi/controller/rpi/agc_channel.cpp
> index cf2565a8..c9df9b5b 100644
> --- a/src/ipa/rpi/controller/rpi/agc_channel.cpp
> +++ b/src/ipa/rpi/controller/rpi/agc_channel.cpp
> @@ -883,11 +883,14 @@ void AgcChannel::filterExposure()
>
>         /*
>          * AGC adapts instantly if both shutter and gain are directly specified
> -        * or we're in the startup phase.
> +        * or we're in the startup phase. Also disable the stable region, because we want
> +        * to reflect any user exposure/gain updates, however small.
>          */
>         if ((status_.fixedShutter && status_.fixedAnalogueGain) ||
> -           frameCount_ <= config_.startupFrames)
> +           frameCount_ <= config_.startupFrames) {
>                 speed = 1.0;
> +               stableRegion = 0.0;
> +       }
>         if (!filtered_.totalExposure) {
>                 filtered_.totalExposure = target_.totalExposure;
>         } else if (filtered_.totalExposure * (1.0 - stableRegion) < target_.totalExposure &&
> --
> 2.34.1
>


More information about the libcamera-devel mailing list