diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/ipa/ipa_interface.h | 2 | ||||
-rw-r--r-- | include/libcamera/controls.h | 45 |
2 files changed, 45 insertions, 2 deletions
diff --git a/include/ipa/ipa_interface.h b/include/ipa/ipa_interface.h index dfb1bcbe..8fd658af 100644 --- a/include/ipa/ipa_interface.h +++ b/include/ipa/ipa_interface.h @@ -43,7 +43,7 @@ public: virtual int init() = 0; virtual void configure(const std::map<unsigned int, IPAStream> &streamConfig, - const std::map<unsigned int, V4L2ControlInfoMap> &entityControls) = 0; + const std::map<unsigned int, ControlInfoMap> &entityControls) = 0; virtual void mapBuffers(const std::vector<IPABuffer> &buffers) = 0; virtual void unmapBuffers(const std::vector<unsigned int> &ids) = 0; diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h index 5534a2ed..80414c6f 100644 --- a/include/libcamera/controls.h +++ b/include/libcamera/controls.h @@ -118,7 +118,50 @@ private: }; using ControlIdMap = std::unordered_map<unsigned int, const ControlId *>; -using ControlInfoMap = std::unordered_map<const ControlId *, ControlRange>; + +class ControlInfoMap : private std::unordered_map<const ControlId *, ControlRange> +{ +public: + using Map = std::unordered_map<const ControlId *, ControlRange>; + + ControlInfoMap() = default; + ControlInfoMap(const ControlInfoMap &other) = default; + ControlInfoMap(std::initializer_list<Map::value_type> init); + + ControlInfoMap &operator=(const ControlInfoMap &other) = default; + ControlInfoMap &operator=(std::initializer_list<Map::value_type> init); + ControlInfoMap &operator=(Map &&info); + + using Map::key_type; + using Map::mapped_type; + using Map::value_type; + using Map::size_type; + using Map::iterator; + using Map::const_iterator; + + using Map::begin; + using Map::cbegin; + using Map::end; + using Map::cend; + using Map::at; + using Map::empty; + using Map::size; + using Map::count; + using Map::find; + + mapped_type &at(unsigned int key); + const mapped_type &at(unsigned int key) const; + size_type count(unsigned int key) const; + iterator find(unsigned int key); + const_iterator find(unsigned int key) const; + + const ControlIdMap &idmap() const { return idmap_; } + +private: + void generateIdmap(); + + ControlIdMap idmap_; +}; class ControlList { |