[libcamera-devel] [PATCH 09/13] libcamera: raspberrypi: Do not over-write metadata

Jacopo Mondi jacopo at jmondi.org
Mon Apr 19 15:14:29 CEST 2021


This commit applies to the RaspberryPi pipeline handler the same change
applied to IPU3 in commit 13a7ed7b1f1f ("libcamera: ipu3: Do not
over-write metadata").

When a Request is completed upon receiving the IPA produced metadata,
the metadata associated with the Request are over-written, deleting
the information set at output buffer completion, such as the
SensorTimestamp.

Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
 src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
index f22e286ed87a..d1902bfc3393 100644
--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
+++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
@@ -1312,9 +1312,15 @@ void RPiCameraData::statsMetadataComplete(uint32_t bufferId, const ControlList &
 
 	handleStreamBuffer(buffer, &isp_[Isp::Stats]);
 
-	/* Fill the Request metadata buffer with what the IPA has provided */
+	/*
+	 * Add to the Request metadata buffer what the IPA has provided.
+	 *
+	 * Do not overwrite controls set by the pipeline handler, in example
+	 * SensorTimestamp.
+	 */
 	Request *request = requestQueue_.front();
-	request->metadata() = controls;
+	for (const auto &ctrl : controls)
+		request->metadata().set(ctrl.first, ctrl.second);
 
 	/*
 	 * Also update the ScalerCrop in the metadata with what we actually
-- 
2.31.1



More information about the libcamera-devel mailing list