ipa: rkisp1: agc: Correctly clamp maximum shutter speed

The sensor's maximum shutter speed is clamped by the maximum frame
duration specified in requests. If the requested maximum frame duration
is lower than the sensor's minimum shutter speed, the Agc::process()
function will pass a minimum value higher than the maximum to the
setLimits() function, resulting in an assertion failure. Fix it by
clamping the value to both the lower and the upper bounds.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Laurent Pinchart 2024-06-16 00:34:16 +03:00
parent 14056bceb5
commit 4ce519cdc5

View file

@ -420,8 +420,10 @@ void Agc::process(IPAContext &context, [[maybe_unused]] const uint32_t frame,
[](uint32_t x) { return x >> 4; });
expMeans_ = { params->ae.exp_mean, context.hw->numAeCells };
utils::Duration maxShutterSpeed = std::min(context.configuration.sensor.maxShutterSpeed,
frameContext.agc.maxFrameDuration);
utils::Duration maxShutterSpeed =
std::clamp(frameContext.agc.maxFrameDuration,
context.configuration.sensor.minShutterSpeed,
context.configuration.sensor.maxShutterSpeed);
setLimits(context.configuration.sensor.minShutterSpeed,
maxShutterSpeed,
context.configuration.sensor.minAnalogueGain,