summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiklas Söderlund <niklas.soderlund@ragnatech.se>2019-10-08 02:45:29 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-10-10 21:39:53 +0300
commitf3022d91dca4a32e8faa3759e4b113a928602ba2 (patch)
treed84f74f4a442daa5221f2e73740e15d48809026b
parentabee318ce8e74fd06f2861b514d568ec3a3348c0 (diff)
libcamera: request: Add metadata information
A new ControlList container is needed to hold metadata coming out of the IPA. The list of supported controls in this list is expected to grow, so for now do not add a validator for the list. Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--include/libcamera/request.h2
-rw-r--r--src/libcamera/request.cpp14
2 files changed, 16 insertions, 0 deletions
diff --git a/include/libcamera/request.h b/include/libcamera/request.h
index e3db5243..2d5a5964 100644
--- a/include/libcamera/request.h
+++ b/include/libcamera/request.h
@@ -37,6 +37,7 @@ public:
~Request();
ControlList &controls() { return *controls_; }
+ ControlList &metadata() { return *metadata_; }
const std::map<Stream *, Buffer *> &buffers() const { return bufferMap_; }
int addBuffer(std::unique_ptr<Buffer> buffer);
Buffer *findBuffer(Stream *stream) const;
@@ -58,6 +59,7 @@ private:
Camera *camera_;
CameraControlValidator *validator_;
ControlList *controls_;
+ ControlList *metadata_;
std::map<Stream *, Buffer *> bufferMap_;
std::unordered_set<Buffer *> pending_;
diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp
index 19f6d0b9..23d3ab6f 100644
--- a/src/libcamera/request.cpp
+++ b/src/libcamera/request.cpp
@@ -65,6 +65,11 @@ Request::Request(Camera *camera, uint64_t cookie)
*/
validator_ = new CameraControlValidator(camera);
controls_ = new ControlList(validator_);
+
+ /**
+ * \todo: Add a validator for metadata controls.
+ */
+ metadata_ = new ControlList(nullptr);
}
Request::~Request()
@@ -74,6 +79,7 @@ Request::~Request()
delete buffer;
}
+ delete metadata_;
delete controls_;
delete validator_;
}
@@ -162,6 +168,14 @@ Buffer *Request::findBuffer(Stream *stream) const
}
/**
+ * \fn Request::metadata()
+ * \brief Retrieve the request's metadata
+ * \todo Offer a read-only API towards applications while keeping a read/write
+ * API internally.
+ * \return The metadata associated with the request
+ */
+
+/**
* \fn Request::cookie()
* \brief Retrieve the cookie set when the request was created
* \return The request cookie