[libcamera-devel] [PATCH v1 6/6] libcamera: pipeline: ipu3: Pass request metadata to IPA

Umang Jain umang.jain at ideasonboard.com
Fri May 14 09:58:08 CEST 2021


From: Kieran Bingham <kieran.bingham at ideasonboard.com>

Pass the request metadata control list to the IPA when setting
passing the statistics buffers, or after the raw buffer completion.

This allows us to pass in the timestamp and other data from the request
which will be used by the IPA.

Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
---
 src/libcamera/pipeline/ipu3/ipu3.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index 5b15ca90..38f66919 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -1285,6 +1285,7 @@ void IPU3CameraData::cio2BufferReady(FrameBuffer *buffer)
 	ev.op = ipa::ipu3::EventFillParams;
 	ev.frame = info->id;
 	ev.bufferId = info->paramBuffer->cookie();
+	ev.controls = request->metadata();
 	ipa_->processEvent(ev);
 }
 
@@ -1314,6 +1315,8 @@ void IPU3CameraData::statBufferReady(FrameBuffer *buffer)
 	if (!info)
 		return;
 
+	Request *request = info->request;
+
 	if (buffer->metadata().status == FrameMetadata::FrameCancelled) {
 		info->metadataProcessed = true;
 
@@ -1321,7 +1324,6 @@ void IPU3CameraData::statBufferReady(FrameBuffer *buffer)
 		* tryComplete() will delete info if it completes the IPU3Frame.
 		* In that event, we must have obtained the Request before hand.
 		*/
-		Request *request = info->request;
 
 		if (frameInfos_.tryComplete(info))
 			pipe_->completeRequest(request);
@@ -1333,6 +1335,7 @@ void IPU3CameraData::statBufferReady(FrameBuffer *buffer)
 	ev.op = ipa::ipu3::EventStatReady;
 	ev.frame = info->id;
 	ev.bufferId = info->statBuffer->cookie();
+	ev.controls = request->metadata();
 	ipa_->processEvent(ev);
 }
 
-- 
2.26.2



More information about the libcamera-devel mailing list