[libcamera-devel] [PATCH] ipa: ipu3: agc: Clamp shutter speed

Kieran Bingham kieran.bingham at ideasonboard.com
Tue Oct 26 12:46:44 CEST 2021


Quoting Laurent Pinchart (2021-10-26 10:21:57)
> Hi Jean-Michel,
> 
> Thank you for the patch.
> 
> On Tue, Oct 26, 2021 at 10:21:42AM +0200, Jean-Michel Hautbois wrote:
> > In case the maximum exposure received from the sensor is very high, we
> > can have a very high shutter speed with a small analogue gain, and it
> > may result in very slow framerate. We are not really supporting it for
> > the moment, so clamp the shutter speed to an arbitrary value of 60ms.
> > 
> > Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
> > ---
> >  src/ipa/ipu3/algorithms/agc.cpp | 6 +++++-
> >  1 file changed, 5 insertions(+), 1 deletion(-)
> > 
> > diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp
> > index 6c151232..5927b5d3 100644
> > --- a/src/ipa/ipu3/algorithms/agc.cpp
> > +++ b/src/ipa/ipu3/algorithms/agc.cpp
> > @@ -34,6 +34,9 @@ static constexpr uint32_t kFrameSkipCount = 6;
> >  static constexpr double kMinAnalogueGain = 1.0;
> >  static constexpr double kMaxAnalogueGain = 8.0;
> >  
> > +/* Maximum shutter speed allowed */
> 
> /* \todo Honour the FrameDurationLimits control instead of hardcoding a limit */
> 
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

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

> 
> > +static constexpr utils::Duration kMaxShutterSpeed = 60ms;
> > +
> >  /* Histogram constants */
> >  static constexpr uint32_t knumHistogramBins = 256;
> >  static constexpr double kEvGainTarget = 0.5;
> > @@ -54,7 +57,8 @@ int Agc::configure(IPAContext &context, const IPAConfigInfo &configInfo)
> >  
> >       /* \todo replace the exposure in lines storage with time based ones. */
> >       minExposureLines_ = context.configuration.agc.minShutterSpeed / lineDuration_;
> > -     maxExposureLines_ = context.configuration.agc.maxShutterSpeed / lineDuration_;
> > +     maxExposureLines_ = std::min(context.configuration.agc.maxShutterSpeed / lineDuration_,
> > +                                  kMaxShutterSpeed / lineDuration_);
> >  
> >       minAnalogueGain_ = std::max(context.configuration.agc.minAnalogueGain, kMinAnalogueGain);
> >       maxAnalogueGain_ = std::min(context.configuration.agc.maxAnalogueGain, kMaxAnalogueGain);
> 
> -- 
> Regards,
> 
> Laurent Pinchart


More information about the libcamera-devel mailing list