[libcamera-devel] [PATCH v2 4/7] libcamera: v4l2_controls: Construct from a list of ids

Laurent Pinchart laurent.pinchart at ideasonboard.com
Tue Sep 3 22:17:17 CEST 2019


Hi Jacopo,

Thank you for the patch.

On Tue, Aug 27, 2019 at 11:50:04AM +0200, Jacopo Mondi wrote:
> Add a constructor for the V4L2ControlList class that accepts a list of
> V4L2 control IDs (V4L2_CID_*). The constructor returns a V4L2ControlList
> instance to be used for reading controls only.

I tend to understand "for reading controls only" as meaning for reading
controls and nothing else than controls. Is it just me ? Should this be
expressed as "to be used only for reading controls" ?

> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
> ---
>  src/libcamera/include/v4l2_controls.h |  3 +++
>  src/libcamera/v4l2_controls.cpp       | 17 +++++++++++++++++
>  2 files changed, 20 insertions(+)
> 
> diff --git a/src/libcamera/include/v4l2_controls.h b/src/libcamera/include/v4l2_controls.h
> index 10b726504951..86c84e06d741 100644
> --- a/src/libcamera/include/v4l2_controls.h
> +++ b/src/libcamera/include/v4l2_controls.h
> @@ -65,6 +65,9 @@ public:
>  	using iterator = std::vector<V4L2Control>::iterator;
>  	using const_iterator = std::vector<V4L2Control>::const_iterator;
>  
> +	V4L2ControlList() {}
> +	V4L2ControlList(std::vector<unsigned int> ids);

How about using an initializer_list<unsigned int> instead of a vector ?

> +
>  	iterator begin() { return controls_.begin(); }
>  	const_iterator begin() const { return controls_.begin(); }
>  	iterator end() { return controls_.end(); }
> diff --git a/src/libcamera/v4l2_controls.cpp b/src/libcamera/v4l2_controls.cpp
> index 84258d9954d0..eeb325cbfff9 100644
> --- a/src/libcamera/v4l2_controls.cpp
> +++ b/src/libcamera/v4l2_controls.cpp
> @@ -202,6 +202,23 @@ V4L2ControlInfo::V4L2ControlInfo(const struct v4l2_query_ext_ctrl &ctrl)
>   * and prepare to be re-used for a new control write/read sequence.
>   */
>  
> +/**
> + * \brief Construct a V4L2ControlList from a list of V4L2 controls identifiers
> + * \param ids A list of V4L2 control identifiers (V4L2_CID_*)
> + *
> + * Construct a V4L2ControlList from a list of control identifiers without any
> + * value associated. This constructor is particularly useful to create a

s/value/values/

> + * V4L2ControlList that is used to read the values of all controls in the
> + * \a ids list. The created V4L2ControlList should not be used to write control

s/should/shall/

> + * values unless it is cleared first and then controls with an associated value
> + * are manually added to it.
> + */
> +V4L2ControlList::V4L2ControlList(std::vector<unsigned int> ids)
> +{
> +	for (auto id : ids)

Let's not abuse auto, this is clearly a case where you can write the
full type instead.

> +		add(id);
> +}
> +
>  /**
>   * \typedef V4L2ControlList::iterator
>   * \brief Iterator on the V4L2 controls contained in the instance

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list