[libcamera-devel] [PATCH v2 6/7] libcamera: v4l2_device: Enable enumeration of U8 controls

Laurent Pinchart laurent.pinchart at ideasonboard.com
Sat Mar 21 01:36:39 CET 2020


From: Jacopo Mondi <jacopo at jmondi.org>

Enable the enumeration of V4L2 array controls with V4L2_CTRL_TYPE_U8
type.

Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
 src/libcamera/v4l2_device.cpp | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp
index 3c91eb3f9f97..03e305165096 100644
--- a/src/libcamera/v4l2_device.cpp
+++ b/src/libcamera/v4l2_device.cpp
@@ -386,7 +386,8 @@ void V4L2Device::listControls()
 
 	/* \todo Add support for menu and compound controls. */
 	while (1) {
-		ctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
+		ctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL |
+			   V4L2_CTRL_FLAG_NEXT_COMPOUND;
 		if (ioctl(VIDIOC_QUERY_EXT_CTRL, &ctrl))
 			break;
 
@@ -394,13 +395,6 @@ void V4L2Device::listControls()
 		    ctrl.flags & V4L2_CTRL_FLAG_DISABLED)
 			continue;
 
-		if (ctrl.elems != 1 || ctrl.nr_of_dims) {
-			LOG(V4L2, Debug)
-				<< "Array control " << utils::hex(ctrl.id)
-				<< " not supported";
-			continue;
-		}
-
 		switch (ctrl.type) {
 		case V4L2_CTRL_TYPE_INTEGER:
 		case V4L2_CTRL_TYPE_BOOLEAN:
@@ -409,8 +403,9 @@ void V4L2Device::listControls()
 		case V4L2_CTRL_TYPE_INTEGER64:
 		case V4L2_CTRL_TYPE_BITMASK:
 		case V4L2_CTRL_TYPE_INTEGER_MENU:
+		case V4L2_CTRL_TYPE_U8:
 			break;
-		/* \todo Support compound controls. */
+		/* \todo Support other control types. */
 		default:
 			LOG(V4L2, Debug)
 				<< "Control " << utils::hex(ctrl.id)
-- 
Regards,

Laurent Pinchart



More information about the libcamera-devel mailing list