summaryrefslogtreecommitdiff
path: root/src/libcamera/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcamera/include')
-rw-r--r--src/libcamera/include/camera_sensor.h7
-rw-r--r--src/libcamera/include/v4l2_controls.h42
-rw-r--r--src/libcamera/include/v4l2_device.h6
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);