libcamera: ipu3: Do not over-write metadata

When a Request is completed upon receiving the IPA produced metadata,
the metadata associated with the Request were over-written, deleting
the information set, in example, at ImgU output buffer completion.

If any additional Request metadata should be registered by inspecting
the IPA produced metadata it has to be done without deleting the already
registered entry.

Fix this by replacing the metadata over-write with a todo entry.

This change fixes CTS which was broken due to missing metadata in
the completed requests.

Fixes: 9708f49fec ("libcamera: ipu3: Share parameter and statistic buffers with IPA")
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Jacopo Mondi
2021-02-19 12:16:11 +01:00
parent 79991a9903
commit 13a7ed7b1f

View File

@@ -1076,8 +1076,11 @@ void IPU3CameraData::queueFrameAction(unsigned int id,
if (!info)
break;
/*
* \todo Parse the value of the controls returned by the IPA
* in action.controls to register additional metadata.
*/
Request *request = info->request;
request->metadata() = action.controls;
info->metadataProcessed = true;
if (frameInfos_.tryComplete(info))
pipe_->completeRequest(request);