libcamera: software_isp: Clear IPA context on configure and stop

Like the hardware pipelines do. Not clearing frameContexts otherwise can
trigger asserts like "Frame context for ... has been overwritten by ..."
when switching between cameras using the swISP, e.g. on phones.

Clearing the configuration and active state will become more important
with upcoming changes such as getting the black level from the camera
helper.

Fixes: 04d171e6b2 ("libcamera: software_isp: Call Algorithm::queueRequest")
Signed-off-by: Robert Mader <robert.mader@collabora.com>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
Reviewed-by: Milan Zamazal <mzamazal@redhat.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Robert Mader 2024-10-13 19:57:19 +02:00 committed by Kieran Bingham
parent ae51d30468
commit 41e3d61c74

View file

@ -184,6 +184,11 @@ int IPASoftSimple::configure(const IPAConfigInfo &configInfo)
const ControlInfo &exposureInfo = sensorInfoMap_.find(V4L2_CID_EXPOSURE)->second;
const ControlInfo &gainInfo = sensorInfoMap_.find(V4L2_CID_ANALOGUE_GAIN)->second;
/* Clear the IPA context before the streaming session. */
context_.configuration = {};
context_.activeState = {};
context_.frameContexts.clear();
context_.configuration.agc.exposureMin = exposureInfo.min().get<int32_t>();
context_.configuration.agc.exposureMax = exposureInfo.max().get<int32_t>();
if (!context_.configuration.agc.exposureMin) {
@ -245,6 +250,7 @@ int IPASoftSimple::start()
void IPASoftSimple::stop()
{
context_.frameContexts.clear();
}
void IPASoftSimple::queueRequest(const uint32_t frame, const ControlList &controls)