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

Jean-Michel Hautbois jeanmichel.hautbois at ideasonboard.com
Tue Oct 26 10:54:16 CEST 2021



On 26/10/2021 10:52, Umang Jain wrote:
> Hi JM,
> 
> On 10/26/21 1:51 PM, 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>
> 
> 
> Tested on nautilus and most of the CTS regressions were fixed (which 
> were https://i.imgur.com/vv9Sjyh.png)

Is "most" meaning "all the ones introduced by this new series" or is 
there still new ones ?

> 
> Tested-by: Umang Jain <umang.jain at ideasonboard.com>
> 
> I'll be trying to run low-light situations too, will keep you updated on 
> the results.
> 
>> ---
>>   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 */
>> +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);


More information about the libcamera-devel mailing list