[libcamera-devel] [PATCH v2] libcamera: v4l2device: Obtain device capabilities

Jacopo Mondi jacopo at jmondi.org
Wed Jan 23 15:29:03 CET 2019


Hi,

On Wed, Jan 23, 2019 at 02:21:33PM +0000, Kieran Bingham wrote:
> Hi Niklas,
>
> On 23/01/2019 14:19, Niklas Söderlund wrote:
> > Hi Kieran,
> >
> > Thanks for your work.
> >
> > On 2019-01-23 13:45:30 +0000, Kieran Bingham wrote:
> >> The capabilities structure from the kernel can return capabilities of the
> >> driver, or potentially more specific device capabilities.
> >>
> >> Handle this with an inline function 'device_caps()' to return the device
> >> specific capabilities when available, or fall back to the driver capabilities
> >> otherwise.
> >>
> >> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> >
> > I like device_caps() better then caps() :-)
>
> Thanks,
>
> I won't push this until I hear that Jacopo is aware of it as it will
> force a rebase for his patches.

As 'device_caps' are a very specific type of capabilities, I like
caps() better than device_caps(). That said, please go ahead and push
and thanks for waiting.

Thanks
  j


>
> --
> Kieran
>
>
> > Reviewed-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> >
> >> ---
> >>  src/libcamera/include/v4l2_device.h | 12 +++++++++---
> >>  src/libcamera/v4l2_device.cpp       |  7 +++++++
> >>  2 files changed, 16 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/src/libcamera/include/v4l2_device.h b/src/libcamera/include/v4l2_device.h
> >> index b92e1f1c96c3..cb3601ca070c 100644
> >> --- a/src/libcamera/include/v4l2_device.h
> >> +++ b/src/libcamera/include/v4l2_device.h
> >> @@ -26,10 +26,16 @@ struct V4L2Capability final : v4l2_capability {
> >>  	{
> >>  		return reinterpret_cast<const char *>(v4l2_capability::bus_info);
> >>  	}
> >> +	unsigned int device_caps() const
> >> +	{
> >> +		return capabilities & V4L2_CAP_DEVICE_CAPS
> >> +				    ? v4l2_capability::device_caps
> >> +				    : v4l2_capability::capabilities;
> >> +	}
> >>
> >> -	bool isCapture() const { return capabilities & V4L2_CAP_VIDEO_CAPTURE; }
> >> -	bool isOutput() const { return capabilities & V4L2_CAP_VIDEO_OUTPUT; }
> >> -	bool hasStreaming() const { return capabilities & V4L2_CAP_STREAMING; }
> >> +	bool isCapture() const { return device_caps() & V4L2_CAP_VIDEO_CAPTURE; }
> >> +	bool isOutput() const { return device_caps() & V4L2_CAP_VIDEO_OUTPUT; }
> >> +	bool hasStreaming() const { return device_caps() & V4L2_CAP_STREAMING; }
> >>  };
> >>
> >>  class MediaEntity;
> >> diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp
> >> index 2b17fa1eb0e8..0ce2b187f2f0 100644
> >> --- a/src/libcamera/v4l2_device.cpp
> >> +++ b/src/libcamera/v4l2_device.cpp
> >> @@ -49,6 +49,13 @@ LOG_DEFINE_CATEGORY(V4L2)
> >>   * \return The string containing the device location
> >>   */
> >>
> >> +/**
> >> + * \fn unsigned int V4L2Capability::device_caps()
> >> + * \brief Retrieve the capabilities of the device
> >> + * \return The device specific capabilities if V4L2_CAP_DEVICE_CAPS is set or
> >> + * 	   driver capabilities otherwise
> >> + */
> >> +
> >>  /**
> >>   * \fn bool V4L2Capability::isCapture()
> >>   * \brief Identify if the device is capable of capturing video
> >> --
> >> 2.19.1
> >>
> >> _______________________________________________
> >> libcamera-devel mailing list
> >> libcamera-devel at lists.libcamera.org
> >> https://lists.libcamera.org/listinfo/libcamera-devel
> >
>
> --
> Regards
> --
> Kieran
-------------- 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/20190123/d97545fc/attachment.sig>


More information about the libcamera-devel mailing list