summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-06-30 20:48:05 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-07-02 16:59:29 +0300
commit0adc13ff7626a12b227d30313b64ffb99a977531 (patch)
treec56dcedaba9c61c66e8711bf51ff007d1aff54e2 /include
parentb9bf9514eb7b08220763d7d72c3b1b83bdfe6ab0 (diff)
libcamera: controls: Extend ControlList to access controls by ID
The ControlList class implements a map from control specifier to control ID. To avoid constant lookups of ControlInfo when using the class in the libcamera core or in pipeline handlers, the map uses ControlInfo pointers instead of ControlId values. This is however not very convenient for applications or pipeline handlers, as they would be forced to first look up the ControlInfo pointers for the controls they want to access. Facilitate ease of use of ControlLists by implementing an internal lookup of the ControlInfo from the controls provided by the Camera. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Diffstat (limited to 'include')
-rw-r--r--include/libcamera/controls.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h
index 18293c94..fbb3a622 100644
--- a/include/libcamera/controls.h
+++ b/include/libcamera/controls.h
@@ -117,11 +117,13 @@ public:
const_iterator begin() const { return controls_.begin(); }
const_iterator end() const { return controls_.end(); }
+ bool contains(ControlId id) const;
bool contains(const ControlInfo *info) const;
bool empty() const { return controls_.empty(); }
std::size_t size() const { return controls_.size(); }
void clear() { controls_.clear(); }
+ ControlValue &operator[](ControlId id);
ControlValue &operator[](const ControlInfo *info) { return controls_[info]; }
void update(const ControlList &list);