[libcamera-devel] [PATCH v4 06/14] ipa: ipu3: agc: Refactor ev gain calculation and testing

Paul Elder paul.elder at ideasonboard.com
Sat Nov 13 00:06:45 CET 2021


Hi Jean-Michel,

On Thu, Nov 11, 2021 at 03:09:20PM +0100, Jean-Michel Hautbois wrote:
> When we compute the new gain, we use the iqMean_ and estimate an
> exposure value gain to apply. Return early when the gain is less than
> 1%.
> 
> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>

> ---
>  src/ipa/ipu3/algorithms/agc.cpp | 14 ++++++--------
>  1 file changed, 6 insertions(+), 8 deletions(-)
> 
> diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp
> index 74bce7bb..61ca8b3f 100644
> --- a/src/ipa/ipu3/algorithms/agc.cpp
> +++ b/src/ipa/ipu3/algorithms/agc.cpp
> @@ -188,14 +188,6 @@ void Agc::filterExposure()
>   */
>  void Agc::computeExposure(IPAFrameContext &frameContext)
>  {
> -
> -	/* Are we correctly exposed ? */
> -	if (std::abs(iqMean_ - kEvGainTarget * knumHistogramBins) <= 1) {
> -		LOG(IPU3Agc, Debug) << "We are well exposed (iqMean = "
> -				    << iqMean_ << ")";
> -		return;
> -	}
> -
>  	/* Get the effective exposure and gain applied on the sensor. */
>  	uint32_t exposure = frameContext.sensor.exposure;
>  	double analogueGain = frameContext.sensor.gain;
> @@ -203,6 +195,12 @@ void Agc::computeExposure(IPAFrameContext &frameContext)
>  	/* Estimate the gain needed to have the proportion wanted */
>  	double evGain = kEvGainTarget * knumHistogramBins / iqMean_;
>  
> +	if (std::abs(evGain - 1.0) < 0.01) {
> +		LOG(IPU3Agc, Debug) << "We are well exposed (iqMean = "
> +				    << iqMean_ << ")";
> +		return;
> +	}
> +
>  	/* extracted from Rpi::Agc::computeTargetExposure */
>  	/* Calculate the shutter time in seconds */
>  	utils::Duration currentShutter = exposure * lineDuration_;
> -- 
> 2.32.0
> 


More information about the libcamera-devel mailing list