summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/ipa/ipa_interface.h2
-rw-r--r--include/libcamera/controls.h45
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
{