ipa: rkisp1: agc: Don't update histogram parameters unnecessarily

The ISP histogram parameters depends on the AE metering mode, but not on
the other AE algorithm controls. The exposure mode, constraints mode and
frame duration limits influence the behaviour of the algorithm, but not
the histogram computation parameters. Update the histogram parameters
only when AE metering mode changes.

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

View file

@ -261,26 +261,21 @@ void Agc::queueRequest(IPAContext &context,
frameContext.agc.meteringMode = agc.meteringMode;
const auto &exposureMode = controls.get(controls::AeExposureMode);
if (exposureMode) {
frameContext.agc.update = agc.exposureMode != *exposureMode;
if (exposureMode)
agc.exposureMode =
static_cast<controls::AeExposureModeEnum>(*exposureMode);
}
frameContext.agc.exposureMode = agc.exposureMode;
const auto &constraintMode = controls.get(controls::AeConstraintMode);
if (constraintMode) {
frameContext.agc.update = agc.constraintMode != *constraintMode;
if (constraintMode)
agc.constraintMode =
static_cast<controls::AeConstraintModeEnum>(*constraintMode);
}
frameContext.agc.constraintMode = agc.constraintMode;
const auto &frameDurationLimits = controls.get(controls::FrameDurationLimits);
if (frameDurationLimits) {
utils::Duration maxShutterSpeed =
std::chrono::milliseconds((*frameDurationLimits).back());
frameContext.agc.update = agc.maxShutterSpeed != maxShutterSpeed;
agc.maxShutterSpeed = maxShutterSpeed;
}
frameContext.agc.maxShutterSpeed = agc.maxShutterSpeed;