[libcamera-devel] [PATCH v3 07/14] libcamera: request: Add a ControlList
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Mon Jul 1 01:38:10 CEST 2019
From: Kieran Bingham <kieran.bingham at ideasonboard.com>
Provide a ControlList on request objects to facilitate setting controls.
Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
---
include/libcamera/request.h | 3 +++
src/libcamera/request.cpp | 15 ++++++++++++++-
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/include/libcamera/request.h b/include/libcamera/request.h
index 58de6f00a554..8075270a9a12 100644
--- a/include/libcamera/request.h
+++ b/include/libcamera/request.h
@@ -11,6 +11,7 @@
#include <unordered_set>
#include <libcamera/signal.h>
+#include <libcamera/controls.h>
namespace libcamera {
@@ -32,6 +33,7 @@ public:
Request(const Request &) = delete;
Request &operator=(const Request &) = delete;
+ ControlList &controls() { return controls_; }
const std::map<Stream *, Buffer *> &buffers() const { return bufferMap_; }
int setBuffers(const std::map<Stream *, Buffer *> &streamMap);
Buffer *findBuffer(Stream *stream) const;
@@ -50,6 +52,7 @@ private:
bool completeBuffer(Buffer *buffer);
Camera *camera_;
+ ControlList controls_;
std::map<Stream *, Buffer *> bufferMap_;
std::unordered_set<Buffer *> pending_;
diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp
index fa3ee46da440..7d91e7f900fe 100644
--- a/src/libcamera/request.cpp
+++ b/src/libcamera/request.cpp
@@ -48,10 +48,20 @@ LOG_DEFINE_CATEGORY(Request)
* \param[in] camera The camera that creates the request
*/
Request::Request(Camera *camera)
- : camera_(camera), status_(RequestPending)
+ : camera_(camera), controls_(camera), status_(RequestPending)
{
}
+/**
+ * \fn Request::controls()
+ * \brief Retrieve the request's ControlList
+ *
+ * Return a reference to the ControlList that stores all the controls relevant
+ * to this request.
+ *
+ * \return A reference to the ControlList in this request
+ */
+
/**
* \fn Request::buffers()
* \brief Retrieve the request's streams to buffers map
@@ -158,6 +168,9 @@ void Request::complete(Status status)
{
ASSERT(!hasPendingBuffers());
status_ = status;
+
+ /* Controls are 'per-frame' and not re-usable */
+ controls_.clear();
}
/**
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list