blob: ab10ed8ef9570b3258c9157c251f3619cc6e8675 [file] [log] [blame]
Ben Cheng655a7c02013-10-16 16:09:24 -07001/****************************************************************************
2 ****************************************************************************
3 ***
4 *** This header was automatically generated from a Linux kernel header
5 *** of the same name, to make information necessary for userspace to
6 *** call into the kernel available to libc. It contains only constants,
7 *** structures, and macros generated from the original header, and thus,
8 *** contains no copyrightable information.
9 ***
10 *** To edit the content of this header, modify the corresponding
11 *** source file (e.g. under external/kernel-headers/original/) then
12 *** run bionic/libc/kernel/tools/update_all.py
13 ***
14 *** Any manual change here will be lost the next time this script will
15 *** be run. You've been warned!
16 ***
17 ****************************************************************************
18 ****************************************************************************/
19#ifndef __LINUX_USB_VIDEO_H
20#define __LINUX_USB_VIDEO_H
21#include <linux/types.h>
22#define UVC_SC_UNDEFINED 0x00
23/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
24#define UVC_SC_VIDEOCONTROL 0x01
25#define UVC_SC_VIDEOSTREAMING 0x02
26#define UVC_SC_VIDEO_INTERFACE_COLLECTION 0x03
27#define UVC_PC_PROTOCOL_UNDEFINED 0x00
28/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
29#define UVC_VC_DESCRIPTOR_UNDEFINED 0x00
30#define UVC_VC_HEADER 0x01
31#define UVC_VC_INPUT_TERMINAL 0x02
32#define UVC_VC_OUTPUT_TERMINAL 0x03
33/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
34#define UVC_VC_SELECTOR_UNIT 0x04
35#define UVC_VC_PROCESSING_UNIT 0x05
36#define UVC_VC_EXTENSION_UNIT 0x06
37#define UVC_VS_UNDEFINED 0x00
38/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
39#define UVC_VS_INPUT_HEADER 0x01
40#define UVC_VS_OUTPUT_HEADER 0x02
41#define UVC_VS_STILL_IMAGE_FRAME 0x03
42#define UVC_VS_FORMAT_UNCOMPRESSED 0x04
43/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
44#define UVC_VS_FRAME_UNCOMPRESSED 0x05
45#define UVC_VS_FORMAT_MJPEG 0x06
46#define UVC_VS_FRAME_MJPEG 0x07
47#define UVC_VS_FORMAT_MPEG2TS 0x0a
48/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
49#define UVC_VS_FORMAT_DV 0x0c
50#define UVC_VS_COLORFORMAT 0x0d
51#define UVC_VS_FORMAT_FRAME_BASED 0x10
52#define UVC_VS_FRAME_FRAME_BASED 0x11
53/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
54#define UVC_VS_FORMAT_STREAM_BASED 0x12
55#define UVC_EP_UNDEFINED 0x00
56#define UVC_EP_GENERAL 0x01
57#define UVC_EP_ENDPOINT 0x02
58/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
59#define UVC_EP_INTERRUPT 0x03
60#define UVC_RC_UNDEFINED 0x00
61#define UVC_SET_CUR 0x01
62#define UVC_GET_CUR 0x81
63/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
64#define UVC_GET_MIN 0x82
65#define UVC_GET_MAX 0x83
66#define UVC_GET_RES 0x84
67#define UVC_GET_LEN 0x85
68/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
69#define UVC_GET_INFO 0x86
70#define UVC_GET_DEF 0x87
71#define UVC_VC_CONTROL_UNDEFINED 0x00
72#define UVC_VC_VIDEO_POWER_MODE_CONTROL 0x01
73/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
74#define UVC_VC_REQUEST_ERROR_CODE_CONTROL 0x02
75#define UVC_TE_CONTROL_UNDEFINED 0x00
76#define UVC_SU_CONTROL_UNDEFINED 0x00
77#define UVC_SU_INPUT_SELECT_CONTROL 0x01
78/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
79#define UVC_CT_CONTROL_UNDEFINED 0x00
80#define UVC_CT_SCANNING_MODE_CONTROL 0x01
81#define UVC_CT_AE_MODE_CONTROL 0x02
82#define UVC_CT_AE_PRIORITY_CONTROL 0x03
83/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
84#define UVC_CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x04
85#define UVC_CT_EXPOSURE_TIME_RELATIVE_CONTROL 0x05
86#define UVC_CT_FOCUS_ABSOLUTE_CONTROL 0x06
87#define UVC_CT_FOCUS_RELATIVE_CONTROL 0x07
88/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
89#define UVC_CT_FOCUS_AUTO_CONTROL 0x08
90#define UVC_CT_IRIS_ABSOLUTE_CONTROL 0x09
91#define UVC_CT_IRIS_RELATIVE_CONTROL 0x0a
92#define UVC_CT_ZOOM_ABSOLUTE_CONTROL 0x0b
93/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
94#define UVC_CT_ZOOM_RELATIVE_CONTROL 0x0c
95#define UVC_CT_PANTILT_ABSOLUTE_CONTROL 0x0d
96#define UVC_CT_PANTILT_RELATIVE_CONTROL 0x0e
97#define UVC_CT_ROLL_ABSOLUTE_CONTROL 0x0f
98/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
99#define UVC_CT_ROLL_RELATIVE_CONTROL 0x10
100#define UVC_CT_PRIVACY_CONTROL 0x11
101#define UVC_PU_CONTROL_UNDEFINED 0x00
102#define UVC_PU_BACKLIGHT_COMPENSATION_CONTROL 0x01
103/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
104#define UVC_PU_BRIGHTNESS_CONTROL 0x02
105#define UVC_PU_CONTRAST_CONTROL 0x03
106#define UVC_PU_GAIN_CONTROL 0x04
107#define UVC_PU_POWER_LINE_FREQUENCY_CONTROL 0x05
108/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
109#define UVC_PU_HUE_CONTROL 0x06
110#define UVC_PU_SATURATION_CONTROL 0x07
111#define UVC_PU_SHARPNESS_CONTROL 0x08
112#define UVC_PU_GAMMA_CONTROL 0x09
113/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
114#define UVC_PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x0a
115#define UVC_PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x0b
116#define UVC_PU_WHITE_BALANCE_COMPONENT_CONTROL 0x0c
117#define UVC_PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x0d
118/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
119#define UVC_PU_DIGITAL_MULTIPLIER_CONTROL 0x0e
120#define UVC_PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x0f
121#define UVC_PU_HUE_AUTO_CONTROL 0x10
122#define UVC_PU_ANALOG_VIDEO_STANDARD_CONTROL 0x11
123/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
124#define UVC_PU_ANALOG_LOCK_STATUS_CONTROL 0x12
125#define UVC_VS_CONTROL_UNDEFINED 0x00
126#define UVC_VS_PROBE_CONTROL 0x01
127#define UVC_VS_COMMIT_CONTROL 0x02
128/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
129#define UVC_VS_STILL_PROBE_CONTROL 0x03
130#define UVC_VS_STILL_COMMIT_CONTROL 0x04
131#define UVC_VS_STILL_IMAGE_TRIGGER_CONTROL 0x05
132#define UVC_VS_STREAM_ERROR_CODE_CONTROL 0x06
133/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
134#define UVC_VS_GENERATE_KEY_FRAME_CONTROL 0x07
135#define UVC_VS_UPDATE_FRAME_SEGMENT_CONTROL 0x08
136#define UVC_VS_SYNC_DELAY_CONTROL 0x09
137#define UVC_TT_VENDOR_SPECIFIC 0x0100
138/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
139#define UVC_TT_STREAMING 0x0101
140#define UVC_ITT_VENDOR_SPECIFIC 0x0200
141#define UVC_ITT_CAMERA 0x0201
142#define UVC_ITT_MEDIA_TRANSPORT_INPUT 0x0202
143/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
144#define UVC_OTT_VENDOR_SPECIFIC 0x0300
145#define UVC_OTT_DISPLAY 0x0301
146#define UVC_OTT_MEDIA_TRANSPORT_OUTPUT 0x0302
147#define UVC_EXTERNAL_VENDOR_SPECIFIC 0x0400
148/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
149#define UVC_COMPOSITE_CONNECTOR 0x0401
150#define UVC_SVIDEO_CONNECTOR 0x0402
151#define UVC_COMPONENT_CONNECTOR 0x0403
152#define UVC_STATUS_TYPE_CONTROL 1
153/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
154#define UVC_STATUS_TYPE_STREAMING 2
155#define UVC_STREAM_EOH (1 << 7)
156#define UVC_STREAM_ERR (1 << 6)
157#define UVC_STREAM_STI (1 << 5)
158/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
159#define UVC_STREAM_RES (1 << 4)
160#define UVC_STREAM_SCR (1 << 3)
161#define UVC_STREAM_PTS (1 << 2)
162#define UVC_STREAM_EOF (1 << 1)
163/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
164#define UVC_STREAM_FID (1 << 0)
165#define UVC_CONTROL_CAP_GET (1 << 0)
166#define UVC_CONTROL_CAP_SET (1 << 1)
167#define UVC_CONTROL_CAP_DISABLED (1 << 2)
168/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
169#define UVC_CONTROL_CAP_AUTOUPDATE (1 << 3)
170#define UVC_CONTROL_CAP_ASYNCHRONOUS (1 << 4)
171struct uvc_descriptor_header {
Tao Baod7db5942015-01-28 10:07:51 -0800172 __u8 bLength;
Ben Cheng655a7c02013-10-16 16:09:24 -0700173/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800174 __u8 bDescriptorType;
175 __u8 bDescriptorSubType;
Ben Cheng655a7c02013-10-16 16:09:24 -0700176} __attribute__((packed));
177struct uvc_header_descriptor {
178/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800179 __u8 bLength;
180 __u8 bDescriptorType;
181 __u8 bDescriptorSubType;
182 __u16 bcdUVC;
Ben Cheng655a7c02013-10-16 16:09:24 -0700183/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800184 __u16 wTotalLength;
185 __u32 dwClockFrequency;
186 __u8 bInCollection;
187 __u8 baInterfaceNr[];
Ben Cheng655a7c02013-10-16 16:09:24 -0700188/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
189} __attribute__((__packed__));
Tao Baod7db5942015-01-28 10:07:51 -0800190#define UVC_DT_HEADER_SIZE(n) (12 + (n))
191#define UVC_HEADER_DESCRIPTOR(n) uvc_header_descriptor_ ##n
192#define DECLARE_UVC_HEADER_DESCRIPTOR(n) struct UVC_HEADER_DESCRIPTOR(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u16 bcdUVC; __u16 wTotalLength; __u32 dwClockFrequency; __u8 bInCollection; __u8 baInterfaceNr[n]; \
193} __attribute__((packed))
Ben Cheng655a7c02013-10-16 16:09:24 -0700194/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
195struct uvc_input_terminal_descriptor {
Tao Baod7db5942015-01-28 10:07:51 -0800196 __u8 bLength;
197 __u8 bDescriptorType;
198 __u8 bDescriptorSubType;
Ben Cheng655a7c02013-10-16 16:09:24 -0700199/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800200 __u8 bTerminalID;
201 __u16 wTerminalType;
202 __u8 bAssocTerminal;
203 __u8 iTerminal;
Ben Cheng655a7c02013-10-16 16:09:24 -0700204/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
205} __attribute__((__packed__));
206#define UVC_DT_INPUT_TERMINAL_SIZE 8
207struct uvc_output_terminal_descriptor {
Tao Baod7db5942015-01-28 10:07:51 -0800208 __u8 bLength;
Ben Cheng655a7c02013-10-16 16:09:24 -0700209/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800210 __u8 bDescriptorType;
211 __u8 bDescriptorSubType;
212 __u8 bTerminalID;
213 __u16 wTerminalType;
Ben Cheng655a7c02013-10-16 16:09:24 -0700214/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800215 __u8 bAssocTerminal;
216 __u8 bSourceID;
217 __u8 iTerminal;
Ben Cheng655a7c02013-10-16 16:09:24 -0700218} __attribute__((__packed__));
219/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
220#define UVC_DT_OUTPUT_TERMINAL_SIZE 9
221struct uvc_camera_terminal_descriptor {
Tao Baod7db5942015-01-28 10:07:51 -0800222 __u8 bLength;
223 __u8 bDescriptorType;
Ben Cheng655a7c02013-10-16 16:09:24 -0700224/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800225 __u8 bDescriptorSubType;
226 __u8 bTerminalID;
227 __u16 wTerminalType;
228 __u8 bAssocTerminal;
Ben Cheng655a7c02013-10-16 16:09:24 -0700229/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800230 __u8 iTerminal;
231 __u16 wObjectiveFocalLengthMin;
232 __u16 wObjectiveFocalLengthMax;
233 __u16 wOcularFocalLength;
Ben Cheng655a7c02013-10-16 16:09:24 -0700234/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800235 __u8 bControlSize;
236 __u8 bmControls[3];
Ben Cheng655a7c02013-10-16 16:09:24 -0700237} __attribute__((__packed__));
Tao Baod7db5942015-01-28 10:07:51 -0800238#define UVC_DT_CAMERA_TERMINAL_SIZE(n) (15 + (n))
Ben Cheng655a7c02013-10-16 16:09:24 -0700239/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
240struct uvc_selector_unit_descriptor {
Tao Baod7db5942015-01-28 10:07:51 -0800241 __u8 bLength;
242 __u8 bDescriptorType;
243 __u8 bDescriptorSubType;
Ben Cheng655a7c02013-10-16 16:09:24 -0700244/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800245 __u8 bUnitID;
246 __u8 bNrInPins;
247 __u8 baSourceID[0];
248 __u8 iSelector;
Ben Cheng655a7c02013-10-16 16:09:24 -0700249/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
250} __attribute__((__packed__));
Tao Baod7db5942015-01-28 10:07:51 -0800251#define UVC_DT_SELECTOR_UNIT_SIZE(n) (6 + (n))
252#define UVC_SELECTOR_UNIT_DESCRIPTOR(n) uvc_selector_unit_descriptor_ ##n
253#define DECLARE_UVC_SELECTOR_UNIT_DESCRIPTOR(n) struct UVC_SELECTOR_UNIT_DESCRIPTOR(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bUnitID; __u8 bNrInPins; __u8 baSourceID[n]; __u8 iSelector; \
254} __attribute__((packed))
Ben Cheng655a7c02013-10-16 16:09:24 -0700255/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
256struct uvc_processing_unit_descriptor {
Tao Baod7db5942015-01-28 10:07:51 -0800257 __u8 bLength;
258 __u8 bDescriptorType;
259 __u8 bDescriptorSubType;
Ben Cheng655a7c02013-10-16 16:09:24 -0700260/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800261 __u8 bUnitID;
262 __u8 bSourceID;
263 __u16 wMaxMultiplier;
264 __u8 bControlSize;
Ben Cheng655a7c02013-10-16 16:09:24 -0700265/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800266 __u8 bmControls[2];
267 __u8 iProcessing;
Ben Cheng655a7c02013-10-16 16:09:24 -0700268} __attribute__((__packed__));
Tao Baod7db5942015-01-28 10:07:51 -0800269#define UVC_DT_PROCESSING_UNIT_SIZE(n) (9 + (n))
Ben Cheng655a7c02013-10-16 16:09:24 -0700270/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
271struct uvc_extension_unit_descriptor {
Tao Baod7db5942015-01-28 10:07:51 -0800272 __u8 bLength;
273 __u8 bDescriptorType;
274 __u8 bDescriptorSubType;
Ben Cheng655a7c02013-10-16 16:09:24 -0700275/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800276 __u8 bUnitID;
277 __u8 guidExtensionCode[16];
278 __u8 bNumControls;
279 __u8 bNrInPins;
Ben Cheng655a7c02013-10-16 16:09:24 -0700280/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800281 __u8 baSourceID[0];
282 __u8 bControlSize;
283 __u8 bmControls[0];
284 __u8 iExtension;
Ben Cheng655a7c02013-10-16 16:09:24 -0700285/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
286} __attribute__((__packed__));
Tao Baod7db5942015-01-28 10:07:51 -0800287#define UVC_DT_EXTENSION_UNIT_SIZE(p,n) (24 + (p) + (n))
288#define UVC_EXTENSION_UNIT_DESCRIPTOR(p,n) uvc_extension_unit_descriptor_ ##p_ ##n
289#define DECLARE_UVC_EXTENSION_UNIT_DESCRIPTOR(p,n) struct UVC_EXTENSION_UNIT_DESCRIPTOR(p, n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bUnitID; __u8 guidExtensionCode[16]; __u8 bNumControls; __u8 bNrInPins; __u8 baSourceID[p]; __u8 bControlSize; __u8 bmControls[n]; __u8 iExtension; \
290} __attribute__((packed))
Ben Cheng655a7c02013-10-16 16:09:24 -0700291/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
292struct uvc_control_endpoint_descriptor {
Tao Baod7db5942015-01-28 10:07:51 -0800293 __u8 bLength;
294 __u8 bDescriptorType;
295 __u8 bDescriptorSubType;
Ben Cheng655a7c02013-10-16 16:09:24 -0700296/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800297 __u16 wMaxTransferSize;
Ben Cheng655a7c02013-10-16 16:09:24 -0700298} __attribute__((__packed__));
299#define UVC_DT_CONTROL_ENDPOINT_SIZE 5
300struct uvc_input_header_descriptor {
301/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800302 __u8 bLength;
303 __u8 bDescriptorType;
304 __u8 bDescriptorSubType;
305 __u8 bNumFormats;
Ben Cheng655a7c02013-10-16 16:09:24 -0700306/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800307 __u16 wTotalLength;
308 __u8 bEndpointAddress;
309 __u8 bmInfo;
310 __u8 bTerminalLink;
Ben Cheng655a7c02013-10-16 16:09:24 -0700311/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800312 __u8 bStillCaptureMethod;
313 __u8 bTriggerSupport;
314 __u8 bTriggerUsage;
315 __u8 bControlSize;
Ben Cheng655a7c02013-10-16 16:09:24 -0700316/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800317 __u8 bmaControls[];
Ben Cheng655a7c02013-10-16 16:09:24 -0700318} __attribute__((__packed__));
Tao Baod7db5942015-01-28 10:07:51 -0800319#define UVC_DT_INPUT_HEADER_SIZE(n,p) (13 + (n * p))
320#define UVC_INPUT_HEADER_DESCRIPTOR(n,p) uvc_input_header_descriptor_ ##n_ ##p
Ben Cheng655a7c02013-10-16 16:09:24 -0700321/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800322#define DECLARE_UVC_INPUT_HEADER_DESCRIPTOR(n,p) struct UVC_INPUT_HEADER_DESCRIPTOR(n, p) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bNumFormats; __u16 wTotalLength; __u8 bEndpointAddress; __u8 bmInfo; __u8 bTerminalLink; __u8 bStillCaptureMethod; __u8 bTriggerSupport; __u8 bTriggerUsage; __u8 bControlSize; __u8 bmaControls[p][n]; \
323} __attribute__((packed))
Ben Cheng655a7c02013-10-16 16:09:24 -0700324struct uvc_output_header_descriptor {
Tao Baod7db5942015-01-28 10:07:51 -0800325 __u8 bLength;
326 __u8 bDescriptorType;
Ben Cheng655a7c02013-10-16 16:09:24 -0700327/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800328 __u8 bDescriptorSubType;
329 __u8 bNumFormats;
330 __u16 wTotalLength;
331 __u8 bEndpointAddress;
Ben Cheng655a7c02013-10-16 16:09:24 -0700332/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800333 __u8 bTerminalLink;
334 __u8 bControlSize;
335 __u8 bmaControls[];
Ben Cheng655a7c02013-10-16 16:09:24 -0700336} __attribute__((__packed__));
337/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800338#define UVC_DT_OUTPUT_HEADER_SIZE(n,p) (9 + (n * p))
339#define UVC_OUTPUT_HEADER_DESCRIPTOR(n,p) uvc_output_header_descriptor_ ##n_ ##p
340#define DECLARE_UVC_OUTPUT_HEADER_DESCRIPTOR(n,p) struct UVC_OUTPUT_HEADER_DESCRIPTOR(n, p) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bNumFormats; __u16 wTotalLength; __u8 bEndpointAddress; __u8 bTerminalLink; __u8 bControlSize; __u8 bmaControls[p][n]; \
341} __attribute__((packed))
Ben Cheng655a7c02013-10-16 16:09:24 -0700342struct uvc_color_matching_descriptor {
343/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800344 __u8 bLength;
345 __u8 bDescriptorType;
346 __u8 bDescriptorSubType;
347 __u8 bColorPrimaries;
Ben Cheng655a7c02013-10-16 16:09:24 -0700348/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800349 __u8 bTransferCharacteristics;
350 __u8 bMatrixCoefficients;
Ben Cheng655a7c02013-10-16 16:09:24 -0700351} __attribute__((__packed__));
352#define UVC_DT_COLOR_MATCHING_SIZE 6
353/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
354struct uvc_streaming_control {
Tao Baod7db5942015-01-28 10:07:51 -0800355 __u16 bmHint;
356 __u8 bFormatIndex;
357 __u8 bFrameIndex;
Ben Cheng655a7c02013-10-16 16:09:24 -0700358/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800359 __u32 dwFrameInterval;
360 __u16 wKeyFrameRate;
361 __u16 wPFrameRate;
362 __u16 wCompQuality;
Ben Cheng655a7c02013-10-16 16:09:24 -0700363/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800364 __u16 wCompWindowSize;
365 __u16 wDelay;
366 __u32 dwMaxVideoFrameSize;
367 __u32 dwMaxPayloadTransferSize;
Ben Cheng655a7c02013-10-16 16:09:24 -0700368/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800369 __u32 dwClockFrequency;
370 __u8 bmFramingInfo;
371 __u8 bPreferedVersion;
372 __u8 bMinVersion;
Ben Cheng655a7c02013-10-16 16:09:24 -0700373/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800374 __u8 bMaxVersion;
Ben Cheng655a7c02013-10-16 16:09:24 -0700375} __attribute__((__packed__));
376struct uvc_format_uncompressed {
Tao Baod7db5942015-01-28 10:07:51 -0800377 __u8 bLength;
Ben Cheng655a7c02013-10-16 16:09:24 -0700378/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800379 __u8 bDescriptorType;
380 __u8 bDescriptorSubType;
381 __u8 bFormatIndex;
382 __u8 bNumFrameDescriptors;
Ben Cheng655a7c02013-10-16 16:09:24 -0700383/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800384 __u8 guidFormat[16];
385 __u8 bBitsPerPixel;
386 __u8 bDefaultFrameIndex;
387 __u8 bAspectRatioX;
Ben Cheng655a7c02013-10-16 16:09:24 -0700388/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800389 __u8 bAspectRatioY;
390 __u8 bmInterfaceFlags;
391 __u8 bCopyProtect;
Ben Cheng655a7c02013-10-16 16:09:24 -0700392} __attribute__((__packed__));
393/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
394#define UVC_DT_FORMAT_UNCOMPRESSED_SIZE 27
395struct uvc_frame_uncompressed {
Tao Baod7db5942015-01-28 10:07:51 -0800396 __u8 bLength;
397 __u8 bDescriptorType;
Ben Cheng655a7c02013-10-16 16:09:24 -0700398/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800399 __u8 bDescriptorSubType;
400 __u8 bFrameIndex;
401 __u8 bmCapabilities;
402 __u16 wWidth;
Ben Cheng655a7c02013-10-16 16:09:24 -0700403/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800404 __u16 wHeight;
405 __u32 dwMinBitRate;
406 __u32 dwMaxBitRate;
407 __u32 dwMaxVideoFrameBufferSize;
Ben Cheng655a7c02013-10-16 16:09:24 -0700408/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800409 __u32 dwDefaultFrameInterval;
410 __u8 bFrameIntervalType;
411 __u32 dwFrameInterval[];
Ben Cheng655a7c02013-10-16 16:09:24 -0700412} __attribute__((__packed__));
413/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800414#define UVC_DT_FRAME_UNCOMPRESSED_SIZE(n) (26 + 4 * (n))
415#define UVC_FRAME_UNCOMPRESSED(n) uvc_frame_uncompressed_ ##n
416#define DECLARE_UVC_FRAME_UNCOMPRESSED(n) struct UVC_FRAME_UNCOMPRESSED(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bFrameIndex; __u8 bmCapabilities; __u16 wWidth; __u16 wHeight; __u32 dwMinBitRate; __u32 dwMaxBitRate; __u32 dwMaxVideoFrameBufferSize; __u32 dwDefaultFrameInterval; __u8 bFrameIntervalType; __u32 dwFrameInterval[n]; \
417} __attribute__((packed))
Ben Cheng655a7c02013-10-16 16:09:24 -0700418struct uvc_format_mjpeg {
419/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800420 __u8 bLength;
421 __u8 bDescriptorType;
422 __u8 bDescriptorSubType;
423 __u8 bFormatIndex;
Ben Cheng655a7c02013-10-16 16:09:24 -0700424/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800425 __u8 bNumFrameDescriptors;
426 __u8 bmFlags;
427 __u8 bDefaultFrameIndex;
428 __u8 bAspectRatioX;
Ben Cheng655a7c02013-10-16 16:09:24 -0700429/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800430 __u8 bAspectRatioY;
431 __u8 bmInterfaceFlags;
432 __u8 bCopyProtect;
Ben Cheng655a7c02013-10-16 16:09:24 -0700433} __attribute__((__packed__));
434/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
435#define UVC_DT_FORMAT_MJPEG_SIZE 11
436struct uvc_frame_mjpeg {
Tao Baod7db5942015-01-28 10:07:51 -0800437 __u8 bLength;
438 __u8 bDescriptorType;
Ben Cheng655a7c02013-10-16 16:09:24 -0700439/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800440 __u8 bDescriptorSubType;
441 __u8 bFrameIndex;
442 __u8 bmCapabilities;
443 __u16 wWidth;
Ben Cheng655a7c02013-10-16 16:09:24 -0700444/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800445 __u16 wHeight;
446 __u32 dwMinBitRate;
447 __u32 dwMaxBitRate;
448 __u32 dwMaxVideoFrameBufferSize;
Ben Cheng655a7c02013-10-16 16:09:24 -0700449/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800450 __u32 dwDefaultFrameInterval;
451 __u8 bFrameIntervalType;
452 __u32 dwFrameInterval[];
Ben Cheng655a7c02013-10-16 16:09:24 -0700453} __attribute__((__packed__));
454/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800455#define UVC_DT_FRAME_MJPEG_SIZE(n) (26 + 4 * (n))
456#define UVC_FRAME_MJPEG(n) uvc_frame_mjpeg_ ##n
457#define DECLARE_UVC_FRAME_MJPEG(n) struct UVC_FRAME_MJPEG(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bFrameIndex; __u8 bmCapabilities; __u16 wWidth; __u16 wHeight; __u32 dwMinBitRate; __u32 dwMaxBitRate; __u32 dwMaxVideoFrameBufferSize; __u32 dwDefaultFrameInterval; __u8 bFrameIntervalType; __u32 dwFrameInterval[n]; \
458} __attribute__((packed))
Ben Cheng655a7c02013-10-16 16:09:24 -0700459#endif
460/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */