[RFC,v1,11/23] libcamera: request: Store `MetadataList`
diff mbox series

Message ID 20250606164156.1442682-12-barnabas.pocze@ideasonboard.com
State New
Headers show
Series
  • libcamera: Add `MetadataList`
Related show

Commit Message

Barnabás Pőcze June 6, 2025, 4:41 p.m. UTC
Add a `MetadataList` to the `Request` object to store the metadata items
returned by the camera. The metadata list is initialized using the camera's
`MetadataListPlan` object, which is supposed to be filled by the pipeline
handlers.

Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
---
 include/libcamera/request.h | 5 +++++
 src/libcamera/request.cpp   | 2 ++
 2 files changed, 7 insertions(+)

Patch
diff mbox series

diff --git a/include/libcamera/request.h b/include/libcamera/request.h
index e214a9d13..171a40903 100644
--- a/include/libcamera/request.h
+++ b/include/libcamera/request.h
@@ -18,6 +18,7 @@ 
 
 #include <libcamera/controls.h>
 #include <libcamera/fence.h>
+#include <libcamera/metadata_list.h>
 
 namespace libcamera {
 
@@ -51,6 +52,9 @@  public:
 
 	ControlList &controls() { return *controls_; }
 	ControlList &metadata() { return *metadata_; }
+#ifndef __DOXYGEN__
+	[[nodiscard]] auto &metadata2() { return metadata2_; }
+#endif
 	const BufferMap &buffers() const { return bufferMap_; }
 	int addBuffer(const Stream *stream, FrameBuffer *buffer,
 		      std::unique_ptr<Fence> fence = nullptr);
@@ -69,6 +73,7 @@  private:
 
 	ControlList *controls_;
 	ControlList *metadata_;
+	MetadataList metadata2_;
 	BufferMap bufferMap_;
 
 	const uint64_t cookie_;
diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp
index 7f1e11e8f..17ca67d08 100644
--- a/src/libcamera/request.cpp
+++ b/src/libcamera/request.cpp
@@ -354,6 +354,7 @@  void Request::Private::timeout()
  */
 Request::Request(Camera *camera, uint64_t cookie)
 	: Extensible(std::make_unique<Private>(camera)),
+	  metadata2_(camera->_d()->metadataPlan_),
 	  cookie_(cookie), status_(RequestPending)
 {
 	controls_ = new ControlList(controls::controls,
@@ -407,6 +408,7 @@  void Request::reuse(ReuseFlag flags)
 
 	controls_->clear();
 	metadata_->clear();
+	metadata2_.clear();
 }
 
 /**