[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