[libcamera-devel] [PATCH 08/22] ipa: ipu3: agc: Update previous exposure value
Kieran Bingham
kieran.bingham at ideasonboard.com
Mon Nov 8 16:17:12 CET 2021
Quoting Jean-Michel Hautbois (2021-11-08 13:13:36)
> Previous exposure value is calculated based on the estimated shutter
Previously ?
if so
Previously, the exposure value was calculated based...
> time and gain applied. Now that we have the real values for the current
> frame, use those before estimating the next one.
>
> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
> ---
> src/ipa/ipu3/algorithms/agc.cpp | 19 +++----------------
> 1 file changed, 3 insertions(+), 16 deletions(-)
>
> diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp
> index e4048d40..475e715f 100644
> --- a/src/ipa/ipu3/algorithms/agc.cpp
> +++ b/src/ipa/ipu3/algorithms/agc.cpp
> @@ -193,15 +193,12 @@ void Agc::computeExposure(uint32_t &exposure, double &analogueGain, double curre
> /* Estimate the gain needed to have the proportion wanted */
> double evGain = kEvGainTarget * knumHistogramBins / iqMean_;
>
> - if (std::abs(evGain - 1.0) < 0.01) {
Hrm ... we'd not long ago added this, but I guess it's fine as the
development path.
> - 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_;
New line here please, my eyes really struggle to separate or group content when
it's condensed as
/* line comment like the code */
code as long as the comment;
/* line comment also here */
more code batched together;
The code blurs into the comments too easily, and it all looks like one
block.
> + /* Update the exposure value for the next computation. */
> + prevExposureValue_ = currentShutter * analogueGain;
> +
Is there a reason this moves earlier in the function? Does it get used
before the end? If so - it's not the 'previousExposureValue' is it?
Perhaps I haven't understood the meaning of the specific variables. It's
just hard to see how we are in a current frame, calculating the
'previous' exposure... just before we use it.
> LOG(IPU3Agc, Debug) << "Actual total exposure " << currentShutter * analogueGain
> << " Shutter speed " << currentShutter
> << " Gain " << analogueGain
> @@ -250,16 +247,6 @@ void Agc::computeExposure(uint32_t &exposure, double &analogueGain, double curre
>
> exposure = shutterTime / lineDuration_;
> analogueGain = stepGain;
> -
> - /*
> - * Update the exposure value for the next process call.
> - *
> - * \todo Obtain the values of the exposure time and analog gain
> - * that were actually used by the sensor, either from embedded
> - * data when available, or from the delayed controls
> - * infrastructure in case a slow down caused a mismatch.
> - */
> - prevExposureValue_ = shutterTime * analogueGain;
> }
>
> /**
> --
> 2.32.0
>
More information about the libcamera-devel
mailing list