[libcamera-devel] [PATCH v2 02/14] libcamera: v4l2_subdevice: Define format enumeration type

Jacopo Mondi jacopo at jmondi.org
Thu Mar 14 11:37:28 CET 2019


Hi Laurent,

On Wed, Mar 13, 2019 at 07:14:22PM +0200, Laurent Pinchart wrote:
> Hi Jacopo,
>
> Thank you for the patch.
>
> On Tue, Mar 12, 2019 at 01:12:30PM +0100, Jacopo Mondi wrote:
> > Provide a type definition for the map used to enumerate the subdevice
> > image formats and associated sizes.
> >
> > Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
> > ---
> >  src/libcamera/include/v4l2_subdevice.h |  5 +++--
> >  src/libcamera/v4l2_subdevice.cpp       | 14 +++++++++++---
> >  2 files changed, 14 insertions(+), 5 deletions(-)
> >
> > diff --git a/src/libcamera/include/v4l2_subdevice.h b/src/libcamera/include/v4l2_subdevice.h
> > index 700e66bcddac..15add95a825c 100644
> > --- a/src/libcamera/include/v4l2_subdevice.h
> > +++ b/src/libcamera/include/v4l2_subdevice.h
> > @@ -17,6 +17,8 @@
> >
> >  namespace libcamera {
> >
> > +typedef std::map<unsigned int, std::vector<SizeRange>> SubdevFormatEnum;
> > +
> >  struct V4L2SubdeviceFormat {
> >  	uint32_t mbus_code;
> >  	uint32_t width;
> > @@ -42,8 +44,7 @@ public:
> >  	int setCrop(unsigned int pad, Rectangle *rect);
> >  	int setCompose(unsigned int pad, Rectangle *rect);
> >
> > -	const std::map<unsigned int, std::vector<SizeRange>>
> > -						formats(unsigned int pad);
> > +	const SubdevFormatEnum formats(unsigned int pad);
>
> While at it you could drop the const.
>

Not just could, but should. As SubdevFormatEnum is returned by value,
returning it as const prevents the compiler from invoking the move
constructor of the variable the return value of formats() is assigned
to, if I got this right...

I'll change this.

Thanks
  j

> >
> >  	int getFormat(unsigned int pad, V4L2SubdeviceFormat *format);
> >  	int setFormat(unsigned int pad, V4L2SubdeviceFormat *format);
> > diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp
> > index 7c56ba3ba510..153330bccc97 100644
> > --- a/src/libcamera/v4l2_subdevice.cpp
> > +++ b/src/libcamera/v4l2_subdevice.cpp
> > @@ -28,6 +28,15 @@ namespace libcamera {
> >
> >  LOG_DEFINE_CATEGORY(V4L2Subdev)
> >
> > +/**
> > + * \typedef SubdevFormatEnum
> > + * \brief Type definition for the map of image formats and associated sizes
> > + *
> > + * Type definition for the map of media bus codes and associated image
> > + * resolutions used by V4L2Subdevice to report the enumeration of supported
> > + * image formats.
> > + */
> > +
> >  /**
> >   * \struct V4L2SubdeviceFormat
> >   * \brief The V4L2 sub-device image format and sizes
> > @@ -210,10 +219,9 @@ int V4L2Subdevice::setCompose(unsigned int pad, Rectangle *rect)
> >   * \return A map of image formats associated with a list of image sizes, or
> >   * an empty map on error or if the pad does not exist
> >   */
> > -const std::map<unsigned int, std::vector<SizeRange>>
> > -V4L2Subdevice::formats(unsigned int pad)
> > +const SubdevFormatEnum V4L2Subdevice::formats(unsigned int pad)
> >  {
> > -	std::map<unsigned int, std::vector<SizeRange>> formatMap = {};
> > +	SubdevFormatEnum formatMap = {};
> >  	struct v4l2_subdev_mbus_code_enum mbusEnum = {};
> >  	int ret;
> >
>
> --
> Regards,
>
> Laurent Pinchart
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20190314/2bc96e30/attachment.sig>


More information about the libcamera-devel mailing list