From 57999e38834bd1e90499591b76212c996dc87fc1 Mon Sep 17 00:00:00 2001 From: Paul Kocialkowski Date: Mon, 6 Aug 2018 16:38:48 +0200 Subject: [PATCH] v4l2: Add support for querying capabilities This adds a helper function to query v4l2 capabilities, returning either the device caps when available or the general device caps otherwise. Signed-off-by: Paul Kocialkowski --- src/v4l2.c | 21 +++++++++++++++++++++ src/v4l2.h | 1 + 2 files changed, 22 insertions(+) diff --git a/src/v4l2.c b/src/v4l2.c index 0e6f239..2560680 100644 --- a/src/v4l2.c +++ b/src/v4l2.c @@ -32,6 +32,27 @@ #include "utils.h" #include "v4l2.h" +int v4l2_query_capabilities(int video_fd, unsigned int *capabilities) +{ + struct v4l2_capability capability; + int rc; + + memset(&capability, 0, sizeof(capability)); + + rc = ioctl(video_fd, VIDIOC_QUERYCAP, &capability); + if (rc < 0) + return -1; + + if (capabilities != NULL) { + if ((capability.capabilities & V4L2_CAP_DEVICE_CAPS) != 0) + *capabilities = capability.device_caps; + else + *capabilities = capability.capabilities; + } + + return 0; +} + bool v4l2_find_format(int video_fd, unsigned int type, unsigned int pixelformat) { struct v4l2_fmtdesc fmtdesc; diff --git a/src/v4l2.h b/src/v4l2.h index 52b9604..d56e6d2 100644 --- a/src/v4l2.h +++ b/src/v4l2.h @@ -29,6 +29,7 @@ #define SOURCE_SIZE_MAX (1024 * 1024) +int v4l2_query_capabilities(int video_fd, unsigned int *capabilities); bool v4l2_find_format(int video_fd, unsigned int type, unsigned int pixelformat); int v4l2_set_format(int video_fd, unsigned int type, unsigned int pixelformat,