diff options
Diffstat (limited to 'src/libcamera/include')
-rw-r--r-- | src/libcamera/include/camera_sensor.h | 7 | ||||
-rw-r--r-- | src/libcamera/include/v4l2_controls.h | 42 | ||||
-rw-r--r-- | src/libcamera/include/v4l2_device.h | 6 |
3 files changed, 14 insertions, 41 deletions
diff --git a/src/libcamera/include/camera_sensor.h b/src/libcamera/include/camera_sensor.h index fe033fb3..f426e29b 100644 --- a/src/libcamera/include/camera_sensor.h +++ b/src/libcamera/include/camera_sensor.h @@ -13,11 +13,12 @@ #include <libcamera/geometry.h> #include "log.h" -#include "v4l2_controls.h" namespace libcamera { +class ControlList; class MediaEntity; +class V4L2ControlInfoMap; class V4L2Subdevice; struct V4L2SubdeviceFormat; @@ -43,8 +44,8 @@ public: int setFormat(V4L2SubdeviceFormat *format); const V4L2ControlInfoMap &controls() const; - int getControls(V4L2ControlList *ctrls); - int setControls(V4L2ControlList *ctrls); + int getControls(ControlList *ctrls); + int setControls(ControlList *ctrls); protected: std::string logPrefix() const; diff --git a/src/libcamera/include/v4l2_controls.h b/src/libcamera/include/v4l2_controls.h index 8990e755..89cc7448 100644 --- a/src/libcamera/include/v4l2_controls.h +++ b/src/libcamera/include/v4l2_controls.h @@ -13,7 +13,6 @@ #include <string> #include <vector> -#include <linux/v4l2-controls.h> #include <linux/videodev2.h> #include <libcamera/controls.h> @@ -57,47 +56,20 @@ public: using std::map<unsigned int, V4L2ControlInfo>::size; using std::map<unsigned int, V4L2ControlInfo>::count; using std::map<unsigned int, V4L2ControlInfo>::find; -}; -class V4L2Control -{ -public: - V4L2Control(unsigned int id, const ControlValue &value = ControlValue()) - : id_(id), value_(value) - { - } - - unsigned int id() const { return id_; } - const ControlValue &value() const { return value_; } - ControlValue &value() { return value_; } + const ControlIdMap &idmap() const { return idmap_; } private: - unsigned int id_; - ControlValue value_; + ControlIdMap idmap_; }; -class V4L2ControlList +class V4L2ControlList : public ControlList { public: - using iterator = std::vector<V4L2Control>::iterator; - using const_iterator = std::vector<V4L2Control>::const_iterator; - - iterator begin() { return controls_.begin(); } - const_iterator begin() const { return controls_.begin(); } - iterator end() { return controls_.end(); } - const_iterator end() const { return controls_.end(); } - - bool empty() const { return controls_.empty(); } - std::size_t size() const { return controls_.size(); } - - void clear() { controls_.clear(); } - void add(unsigned int id, int64_t value = 0); - - V4L2Control *getByIndex(unsigned int index); - V4L2Control *operator[](unsigned int id); - -private: - std::vector<V4L2Control> controls_; + V4L2ControlList(const V4L2ControlInfoMap &info) + : ControlList(info.idmap()) + { + } }; } /* namespace libcamera */ diff --git a/src/libcamera/include/v4l2_device.h b/src/libcamera/include/v4l2_device.h index 75a52c33..daa762d5 100644 --- a/src/libcamera/include/v4l2_device.h +++ b/src/libcamera/include/v4l2_device.h @@ -25,8 +25,8 @@ public: const V4L2ControlInfoMap &controls() const { return controls_; } - int getControls(V4L2ControlList *ctrls); - int setControls(V4L2ControlList *ctrls); + int getControls(ControlList *ctrls); + int setControls(ControlList *ctrls); const std::string &deviceNode() const { return deviceNode_; } @@ -43,7 +43,7 @@ protected: private: void listControls(); - void updateControls(V4L2ControlList *ctrls, + void updateControls(ControlList *ctrls, const V4L2ControlInfo **controlInfo, const struct v4l2_ext_control *v4l2Ctrls, unsigned int count); |