[libcamera-devel] [PATCH] ipa: ipu3: agc: Clamp shutter speed
Umang Jain
umang.jain at ideasonboard.com
Tue Oct 26 10:58:04 CEST 2021
Hi JM,
On 10/26/21 2:24 PM, Jean-Michel Hautbois wrote:
>
>
> 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 ?
Sorry, I mean the latter. All the regressions I saw with AGC fix
series(merged), were fixed by this patch.
>
>>
>> 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