This patch adds support for the Zoom (Absolute), Digital Modifier and
PanTilt (Absolute) controls as defined in paragraphs 4.2.2.1.11,
4.2.2.3.14 and 4.2.2.1.13 of USB_Video_Class_1.1.pdf
The controls have been tested on a 05a9:2640 OmniVision Technologies,
Inc. webcam (used in Dell Laptops).
--
Antoine Cellerier
dionoea
Index: uvc_ctrl.c
===================================================================
--- uvc_ctrl.c (revision 166)
+++ uvc_ctrl.c (working copy)
@@ -172,6 +172,30 @@
.flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_RANGE
| UVC_CONTROL_RESTORE,
},
+ {
+ .entity = UVC_GUID_UVC_CAMERA,
+ .selector = CT_ZOOM_ABSOLUTE_CONTROL,
+ .index = 9,
+ .size = 2,
+ .flags = UVC_CONTROL_GET_CUR | UVC_CONTROL_GET_RANGE
+ | UVC_CONTROL_RESTORE | UVC_CONTROL_SET_CUR,
+ },
+ {
+ .entity = UVC_GUID_UVC_PROCESSING,
+ .selector = PU_DIGITAL_MULTIPLIER_CONTROL,
+ .index = 14,
+ .size = 2,
+ .flags = UVC_CONTROL_GET_CUR | UVC_CONTROL_GET_RANGE
+ | UVC_CONTROL_RESTORE | UVC_CONTROL_SET_CUR,
+ },
+ {
+ .entity = UVC_GUID_UVC_CAMERA,
+ .selector = CT_PANTILT_ABSOLUTE_CONTROL,
+ .index = 11,
+ .size = 8,
+ .flags = UVC_CONTROL_GET_CUR | UVC_CONTROL_GET_RANGE
+ | UVC_CONTROL_RESTORE | UVC_CONTROL_SET_CUR,
+ }
};
static struct uvc_menu_info power_line_frequency_controls[] = {
@@ -362,6 +386,46 @@
.v4l2_type = V4L2_CTRL_TYPE_BOOLEAN,
.data_type = UVC_CTRL_DATA_TYPE_BOOLEAN,
},
+ {
+ .id = V4L2_CID_ZOOM_ABSOLUTE,
+ .name = "Zoom (absolute)",
+ .entity = UVC_GUID_UVC_CAMERA,
+ .selector = CT_ZOOM_ABSOLUTE_CONTROL,
+ .size = 16,
+ .offset = 0,
+ .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
+ .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
+ },
+ {
+ .id = V4L2_CID_DIGITAL_MULTIPLIER,
+ .name = "Digital Zoom Multiplier",
+ .entity = UVC_GUID_UVC_PROCESSING,
+ .selector = PU_DIGITAL_MULTIPLIER_CONTROL,
+ .size = 16,
+ .offset = 0,
+ .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
+ .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
+ },
+ {
+ .id = V4L2_CID_PAN_ABSOLUTE,
+ .name = "Pan (absolute)",
+ .entity = UVC_GUID_UVC_CAMERA,
+ .selector = CT_PANTILT_ABSOLUTE_CONTROL,
+ .size = 32,
+ .offset = 0,
+ .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
+ .data_type = UVC_CTRL_DATA_TYPE_SIGNED,
+ },
+ {
+ .id = V4L2_CID_TILT_ABSOLUTE,
+ .name = "Tilt (absolute)",
+ .entity = UVC_GUID_UVC_CAMERA,
+ .selector = CT_PANTILT_ABSOLUTE_CONTROL,
+ .size = 32,
+ .offset = 32,
+ .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
+ .data_type = UVC_CTRL_DATA_TYPE_SIGNED,
+ }
};
/* ------------------------------------------------------------------------
Index: uvcvideo.h
===================================================================
--- uvcvideo.h (revision 166)
+++ uvcvideo.h (working copy)
@@ -31,8 +31,14 @@
#define V4L2_CID_WHITE_BALANCE_TEMPERATURE_AUTO (V4L2_CID_PRIVATE_BASE+12)
#define V4L2_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_PRIVATE_BASE+13)
-#define V4L2_CID_PRIVATE_LAST V4L2_CID_EXPOSURE_AUTO_PRIORITY
+#define V4L2_CID_ZOOM_ABSOLUTE (V4L2_CID_PRIVATE_BASE+15)
+#define V4L2_CID_DIGITAL_MULTIPLIER (V4L2_CID_PRIVATE_BASE+16)
+#define V4L2_CID_PAN_ABSOLUTE (V4L2_CID_PRIVATE_BASE+17)
+#define V4L2_CID_TILT_ABSOLUTE (V4L2_CID_PRIVATE_BASE+18)
+
+#define V4L2_CID_PRIVATE_LAST V4L2_CID_TILT_ABSOLUTE
+
/*
* Dynamic controls
*/
_______________________________________________
Linux-uvc-devel mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/linux-uvc-devel