diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-10-14 00:54:12 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-10-15 22:33:32 +0300 |
commit | 1bfed95c1e9a2f97fb850809dcdc42e9515defc7 (patch) | |
tree | 61478c78dbd74f102c016b8d21601933a632404c | |
parent | 207d57c8b4c066a0e70982f28e0084361d7448f2 (diff) |
libcamera: v4l2_controls: Store a ControlRange in V4L2ControlInfoMap
V4L2ControlRange only offers a convenience constructor for a
ControlRange. Store the ControlRange instead of V4L2ControlRange in
V4L2ControlInfoMap to make the map less dependent on V4L2 types.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
-rw-r--r-- | src/libcamera/include/v4l2_controls.h | 38 | ||||
-rw-r--r-- | src/libcamera/pipeline/uvcvideo.cpp | 2 | ||||
-rw-r--r-- | src/libcamera/pipeline/vimc.cpp | 2 | ||||
-rw-r--r-- | src/libcamera/v4l2_controls.cpp | 6 | ||||
-rw-r--r-- | src/libcamera/v4l2_device.cpp | 6 | ||||
-rw-r--r-- | test/v4l2_videodevice/controls.cpp | 6 |
6 files changed, 29 insertions, 31 deletions
diff --git a/src/libcamera/include/v4l2_controls.h b/src/libcamera/include/v4l2_controls.h index 74156982..7d3528b0 100644 --- a/src/libcamera/include/v4l2_controls.h +++ b/src/libcamera/include/v4l2_controls.h @@ -31,27 +31,27 @@ public: V4L2ControlRange(const struct v4l2_query_ext_ctrl &ctrl); }; -class V4L2ControlInfoMap : private std::map<const ControlId *, V4L2ControlRange> +class V4L2ControlInfoMap : private std::map<const ControlId *, ControlRange> { public: - V4L2ControlInfoMap &operator=(std::map<const ControlId *, V4L2ControlRange> &&info); - - using std::map<const ControlId *, V4L2ControlRange>::key_type; - using std::map<const ControlId *, V4L2ControlRange>::mapped_type; - using std::map<const ControlId *, V4L2ControlRange>::value_type; - using std::map<const ControlId *, V4L2ControlRange>::size_type; - using std::map<const ControlId *, V4L2ControlRange>::iterator; - using std::map<const ControlId *, V4L2ControlRange>::const_iterator; - - using std::map<const ControlId *, V4L2ControlRange>::begin; - using std::map<const ControlId *, V4L2ControlRange>::cbegin; - using std::map<const ControlId *, V4L2ControlRange>::end; - using std::map<const ControlId *, V4L2ControlRange>::cend; - using std::map<const ControlId *, V4L2ControlRange>::at; - using std::map<const ControlId *, V4L2ControlRange>::empty; - using std::map<const ControlId *, V4L2ControlRange>::size; - using std::map<const ControlId *, V4L2ControlRange>::count; - using std::map<const ControlId *, V4L2ControlRange>::find; + V4L2ControlInfoMap &operator=(std::map<const ControlId *, ControlRange> &&info); + + using std::map<const ControlId *, ControlRange>::key_type; + using std::map<const ControlId *, ControlRange>::mapped_type; + using std::map<const ControlId *, ControlRange>::value_type; + using std::map<const ControlId *, ControlRange>::size_type; + using std::map<const ControlId *, ControlRange>::iterator; + using std::map<const ControlId *, ControlRange>::const_iterator; + + using std::map<const ControlId *, ControlRange>::begin; + using std::map<const ControlId *, ControlRange>::cbegin; + using std::map<const ControlId *, ControlRange>::end; + using std::map<const ControlId *, ControlRange>::cend; + using std::map<const ControlId *, ControlRange>::at; + using std::map<const ControlId *, ControlRange>::empty; + using std::map<const ControlId *, ControlRange>::size; + using std::map<const ControlId *, ControlRange>::count; + using std::map<const ControlId *, ControlRange>::find; mapped_type &at(unsigned int key); const mapped_type &at(unsigned int key) const; diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp index 7356585b..018c7691 100644 --- a/src/libcamera/pipeline/uvcvideo.cpp +++ b/src/libcamera/pipeline/uvcvideo.cpp @@ -337,7 +337,7 @@ int UVCCameraData::init(MediaEntity *entity) /* Initialise the supported controls. */ const V4L2ControlInfoMap &controls = video_->controls(); for (const auto &ctrl : controls) { - const V4L2ControlRange &range = ctrl.second; + const ControlRange &range = ctrl.second; const ControlId *id; switch (ctrl.first->id()) { diff --git a/src/libcamera/pipeline/vimc.cpp b/src/libcamera/pipeline/vimc.cpp index 87e7e54e..f7f82edc 100644 --- a/src/libcamera/pipeline/vimc.cpp +++ b/src/libcamera/pipeline/vimc.cpp @@ -413,7 +413,7 @@ int VimcCameraData::init(MediaDevice *media) /* Initialise the supported controls. */ const V4L2ControlInfoMap &controls = sensor_->controls(); for (const auto &ctrl : controls) { - const V4L2ControlRange &range = ctrl.second; + const ControlRange &range = ctrl.second; const ControlId *id; switch (ctrl.first->id()) { diff --git a/src/libcamera/v4l2_controls.cpp b/src/libcamera/v4l2_controls.cpp index f2ac60de..63416b9e 100644 --- a/src/libcamera/v4l2_controls.cpp +++ b/src/libcamera/v4l2_controls.cpp @@ -128,7 +128,7 @@ V4L2ControlRange::V4L2ControlRange(const struct v4l2_query_ext_ctrl &ctrl) /** * \class V4L2ControlInfoMap - * \brief A map of controlID to V4L2ControlRange + * \brief A map of controlID to ControlRange for V4L2 controls */ /** @@ -142,9 +142,9 @@ V4L2ControlRange::V4L2ControlRange(const struct v4l2_query_ext_ctrl &ctrl) * * \return The populated V4L2ControlInfoMap */ -V4L2ControlInfoMap &V4L2ControlInfoMap::operator=(std::map<const ControlId *, V4L2ControlRange> &&info) +V4L2ControlInfoMap &V4L2ControlInfoMap::operator=(std::map<const ControlId *, ControlRange> &&info) { - std::map<const ControlId *, V4L2ControlRange>::operator=(std::move(info)); + std::map<const ControlId *, ControlRange>::operator=(std::move(info)); idmap_.clear(); for (const auto &ctrl : *this) diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp index 133f8abc..47999e70 100644 --- a/src/libcamera/v4l2_device.cpp +++ b/src/libcamera/v4l2_device.cpp @@ -342,7 +342,7 @@ int V4L2Device::ioctl(unsigned long request, void *argp) */ void V4L2Device::listControls() { - std::map<const ControlId *, V4L2ControlRange> ctrls; + std::map<const ControlId *, ControlRange> ctrls; struct v4l2_query_ext_ctrl ctrl = {}; /* \todo Add support for menu and compound controls. */ @@ -380,9 +380,7 @@ void V4L2Device::listControls() } controlIds_.emplace_back(utils::make_unique<V4L2ControlId>(ctrl)); - ctrls.emplace(std::piecewise_construct, - std::forward_as_tuple(controlIds_.back().get()), - std::forward_as_tuple(ctrl)); + ctrls.emplace(controlIds_.back().get(), V4L2ControlRange(ctrl)); } controls_ = std::move(ctrls); diff --git a/test/v4l2_videodevice/controls.cpp b/test/v4l2_videodevice/controls.cpp index d4b7588e..182228f3 100644 --- a/test/v4l2_videodevice/controls.cpp +++ b/test/v4l2_videodevice/controls.cpp @@ -41,9 +41,9 @@ protected: return TestFail; } - const V4L2ControlRange &brightness = info.find(V4L2_CID_BRIGHTNESS)->second; - const V4L2ControlRange &contrast = info.find(V4L2_CID_CONTRAST)->second; - const V4L2ControlRange &saturation = info.find(V4L2_CID_SATURATION)->second; + const ControlRange &brightness = info.find(V4L2_CID_BRIGHTNESS)->second; + const ControlRange &contrast = info.find(V4L2_CID_CONTRAST)->second; + const ControlRange &saturation = info.find(V4L2_CID_SATURATION)->second; /* Test getting controls. */ V4L2ControlList ctrls(info); |