diff options
author | Kieran Bingham <kieran.bingham@ideasonboard.com> | 2019-06-20 14:01:38 +0100 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-07-02 16:59:32 +0300 |
commit | b69ea51c7c556f2196bea3a8f6223cf728e80d4a (patch) | |
tree | 95ac2c72685334dd3b8c2349abc7765e53fe86e8 | |
parent | 0adc13ff7626a12b227d30313b64ffb99a977531 (diff) |
libcamera: request: Add a ControlList
Provide a ControlList on request objects to facilitate setting controls.
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r-- | include/libcamera/request.h | 3 | ||||
-rw-r--r-- | src/libcamera/request.cpp | 18 |
2 files changed, 20 insertions, 1 deletions
diff --git a/include/libcamera/request.h b/include/libcamera/request.h index 58de6f00..a93468d7 100644 --- a/include/libcamera/request.h +++ b/include/libcamera/request.h @@ -10,6 +10,7 @@ #include <map> #include <unordered_set> +#include <libcamera/controls.h> #include <libcamera/signal.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 fa3ee46d..f0b59858 100644 --- a/src/libcamera/request.cpp +++ b/src/libcamera/request.cpp @@ -48,11 +48,27 @@ 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 + * + * Requests store a list of controls to be applied to all frames captured for + * the request. They are created with an empty list of controls that can be + * accessed through this method and updated with ControlList::operator[]() or + * ControlList::update(). + * + * Only controls supported by the camera to which this request will be + * submitted shall be included in the controls list. Attempting to add an + * unsupported control causes undefined behaviour. + * + * \return A reference to the ControlList in this request + */ + +/** * \fn Request::buffers() * \brief Retrieve the request's streams to buffers map * |