[libcamera-devel] [PATCH v3 08/14] ipa: ipu3: agc: Use filtered exposure values
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Fri Oct 22 06:10:46 CEST 2021
Hi Jean-Michel,
Thank you for the patch.
On Thu, Oct 21, 2021 at 06:43:55PM +0200, Jean-Michel Hautbois wrote:
> We are filtering the exposure value to limit the gain to apply, but we
> are not using the result.
>
> Fix it.
>
> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> src/ipa/ipu3/algorithms/agc.cpp | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp
> index 984aed53..f5bb3328 100644
> --- a/src/ipa/ipu3/algorithms/agc.cpp
> +++ b/src/ipa/ipu3/algorithms/agc.cpp
> @@ -158,17 +158,17 @@ void Agc::lockExposureGain(uint32_t &exposure, double &gain)
>
> utils::Duration newExposure = 0.0s;
> if (currentShutter < maxShutterSpeed) {
> - exposure = std::clamp<uint32_t>(exposure * currentExposure_ / currentExposureNoDg_,
> + exposure = std::clamp<uint32_t>(exposure * filteredExposure_ / currentExposureNoDg_,
> minExposureLines_,
> maxExposureLines_);
> - newExposure = currentExposure_ / exposure;
> - gain = std::clamp(gain * currentExposure_ / newExposure,
> + newExposure = filteredExposure_ / exposure;
> + gain = std::clamp(gain * filteredExposure_ / newExposure,
> kMinGain, kMaxGain);
> } else {
> - gain = std::clamp(gain * currentExposure_ / currentExposureNoDg_,
> + gain = std::clamp(gain * filteredExposure_ / currentExposureNoDg_,
> kMinGain, kMaxGain);
> - newExposure = currentExposure_ / gain;
> - exposure = std::clamp<uint32_t>(exposure * currentExposure_ / newExposure,
> + newExposure = filteredExposure_ / gain;
> + exposure = std::clamp<uint32_t>(exposure * filteredExposure_ / newExposure,
> minExposureLines_,
> maxExposureLines_);
> }
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list