video.h revision 106b3a8a7dc03c19a45e322de425ac56aafac358
1/****************************************************************************
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_PC_PROTOCOL_15 0x01
30#define UVC_VC_DESCRIPTOR_UNDEFINED 0x00
31#define UVC_VC_HEADER 0x01
32#define UVC_VC_INPUT_TERMINAL 0x02
33/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
34#define UVC_VC_OUTPUT_TERMINAL 0x03
35#define UVC_VC_SELECTOR_UNIT 0x04
36#define UVC_VC_PROCESSING_UNIT 0x05
37#define UVC_VC_EXTENSION_UNIT 0x06
38/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
39#define UVC_VS_UNDEFINED 0x00
40#define UVC_VS_INPUT_HEADER 0x01
41#define UVC_VS_OUTPUT_HEADER 0x02
42#define UVC_VS_STILL_IMAGE_FRAME 0x03
43/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
44#define UVC_VS_FORMAT_UNCOMPRESSED 0x04
45#define UVC_VS_FRAME_UNCOMPRESSED 0x05
46#define UVC_VS_FORMAT_MJPEG 0x06
47#define UVC_VS_FRAME_MJPEG 0x07
48/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
49#define UVC_VS_FORMAT_MPEG2TS 0x0a
50#define UVC_VS_FORMAT_DV 0x0c
51#define UVC_VS_COLORFORMAT 0x0d
52#define UVC_VS_FORMAT_FRAME_BASED 0x10
53/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
54#define UVC_VS_FRAME_FRAME_BASED 0x11
55#define UVC_VS_FORMAT_STREAM_BASED 0x12
56#define UVC_EP_UNDEFINED 0x00
57#define UVC_EP_GENERAL 0x01
58/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
59#define UVC_EP_ENDPOINT 0x02
60#define UVC_EP_INTERRUPT 0x03
61#define UVC_RC_UNDEFINED 0x00
62#define UVC_SET_CUR 0x01
63/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
64#define UVC_GET_CUR 0x81
65#define UVC_GET_MIN 0x82
66#define UVC_GET_MAX 0x83
67#define UVC_GET_RES 0x84
68/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
69#define UVC_GET_LEN 0x85
70#define UVC_GET_INFO 0x86
71#define UVC_GET_DEF 0x87
72#define UVC_VC_CONTROL_UNDEFINED 0x00
73/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
74#define UVC_VC_VIDEO_POWER_MODE_CONTROL 0x01
75#define UVC_VC_REQUEST_ERROR_CODE_CONTROL 0x02
76#define UVC_TE_CONTROL_UNDEFINED 0x00
77#define UVC_SU_CONTROL_UNDEFINED 0x00
78/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
79#define UVC_SU_INPUT_SELECT_CONTROL 0x01
80#define UVC_CT_CONTROL_UNDEFINED 0x00
81#define UVC_CT_SCANNING_MODE_CONTROL 0x01
82#define UVC_CT_AE_MODE_CONTROL 0x02
83/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
84#define UVC_CT_AE_PRIORITY_CONTROL 0x03
85#define UVC_CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x04
86#define UVC_CT_EXPOSURE_TIME_RELATIVE_CONTROL 0x05
87#define UVC_CT_FOCUS_ABSOLUTE_CONTROL 0x06
88/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
89#define UVC_CT_FOCUS_RELATIVE_CONTROL 0x07
90#define UVC_CT_FOCUS_AUTO_CONTROL 0x08
91#define UVC_CT_IRIS_ABSOLUTE_CONTROL 0x09
92#define UVC_CT_IRIS_RELATIVE_CONTROL 0x0a
93/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
94#define UVC_CT_ZOOM_ABSOLUTE_CONTROL 0x0b
95#define UVC_CT_ZOOM_RELATIVE_CONTROL 0x0c
96#define UVC_CT_PANTILT_ABSOLUTE_CONTROL 0x0d
97#define UVC_CT_PANTILT_RELATIVE_CONTROL 0x0e
98/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
99#define UVC_CT_ROLL_ABSOLUTE_CONTROL 0x0f
100#define UVC_CT_ROLL_RELATIVE_CONTROL 0x10
101#define UVC_CT_PRIVACY_CONTROL 0x11
102#define UVC_PU_CONTROL_UNDEFINED 0x00
103/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
104#define UVC_PU_BACKLIGHT_COMPENSATION_CONTROL 0x01
105#define UVC_PU_BRIGHTNESS_CONTROL 0x02
106#define UVC_PU_CONTRAST_CONTROL 0x03
107#define UVC_PU_GAIN_CONTROL 0x04
108/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
109#define UVC_PU_POWER_LINE_FREQUENCY_CONTROL 0x05
110#define UVC_PU_HUE_CONTROL 0x06
111#define UVC_PU_SATURATION_CONTROL 0x07
112#define UVC_PU_SHARPNESS_CONTROL 0x08
113/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
114#define UVC_PU_GAMMA_CONTROL 0x09
115#define UVC_PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x0a
116#define UVC_PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x0b
117#define UVC_PU_WHITE_BALANCE_COMPONENT_CONTROL 0x0c
118/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
119#define UVC_PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x0d
120#define UVC_PU_DIGITAL_MULTIPLIER_CONTROL 0x0e
121#define UVC_PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x0f
122#define UVC_PU_HUE_AUTO_CONTROL 0x10
123/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
124#define UVC_PU_ANALOG_VIDEO_STANDARD_CONTROL 0x11
125#define UVC_PU_ANALOG_LOCK_STATUS_CONTROL 0x12
126#define UVC_VS_CONTROL_UNDEFINED 0x00
127#define UVC_VS_PROBE_CONTROL 0x01
128/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
129#define UVC_VS_COMMIT_CONTROL 0x02
130#define UVC_VS_STILL_PROBE_CONTROL 0x03
131#define UVC_VS_STILL_COMMIT_CONTROL 0x04
132#define UVC_VS_STILL_IMAGE_TRIGGER_CONTROL 0x05
133/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
134#define UVC_VS_STREAM_ERROR_CODE_CONTROL 0x06
135#define UVC_VS_GENERATE_KEY_FRAME_CONTROL 0x07
136#define UVC_VS_UPDATE_FRAME_SEGMENT_CONTROL 0x08
137#define UVC_VS_SYNC_DELAY_CONTROL 0x09
138/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
139#define UVC_TT_VENDOR_SPECIFIC 0x0100
140#define UVC_TT_STREAMING 0x0101
141#define UVC_ITT_VENDOR_SPECIFIC 0x0200
142#define UVC_ITT_CAMERA 0x0201
143/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
144#define UVC_ITT_MEDIA_TRANSPORT_INPUT 0x0202
145#define UVC_OTT_VENDOR_SPECIFIC 0x0300
146#define UVC_OTT_DISPLAY 0x0301
147#define UVC_OTT_MEDIA_TRANSPORT_OUTPUT 0x0302
148/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
149#define UVC_EXTERNAL_VENDOR_SPECIFIC 0x0400
150#define UVC_COMPOSITE_CONNECTOR 0x0401
151#define UVC_SVIDEO_CONNECTOR 0x0402
152#define UVC_COMPONENT_CONNECTOR 0x0403
153/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
154#define UVC_STATUS_TYPE_CONTROL 1
155#define UVC_STATUS_TYPE_STREAMING 2
156#define UVC_STREAM_EOH (1 << 7)
157#define UVC_STREAM_ERR (1 << 6)
158/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
159#define UVC_STREAM_STI (1 << 5)
160#define UVC_STREAM_RES (1 << 4)
161#define UVC_STREAM_SCR (1 << 3)
162#define UVC_STREAM_PTS (1 << 2)
163/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
164#define UVC_STREAM_EOF (1 << 1)
165#define UVC_STREAM_FID (1 << 0)
166#define UVC_CONTROL_CAP_GET (1 << 0)
167#define UVC_CONTROL_CAP_SET (1 << 1)
168/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
169#define UVC_CONTROL_CAP_DISABLED (1 << 2)
170#define UVC_CONTROL_CAP_AUTOUPDATE (1 << 3)
171#define UVC_CONTROL_CAP_ASYNCHRONOUS (1 << 4)
172struct uvc_descriptor_header {
173/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
174  __u8 bLength;
175  __u8 bDescriptorType;
176  __u8 bDescriptorSubType;
177} __attribute__((packed));
178/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
179struct uvc_header_descriptor {
180  __u8 bLength;
181  __u8 bDescriptorType;
182  __u8 bDescriptorSubType;
183/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
184  __u16 bcdUVC;
185  __u16 wTotalLength;
186  __u32 dwClockFrequency;
187  __u8 bInCollection;
188/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
189  __u8 baInterfaceNr[];
190} __attribute__((__packed__));
191#define UVC_DT_HEADER_SIZE(n) (12 + (n))
192#define UVC_HEADER_DESCRIPTOR(n) uvc_header_descriptor_ ##n
193/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
194#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]; \
195} __attribute__((packed))
196struct uvc_input_terminal_descriptor {
197  __u8 bLength;
198  __u8 bDescriptorType;
199/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
200  __u8 bDescriptorSubType;
201  __u8 bTerminalID;
202  __u16 wTerminalType;
203  __u8 bAssocTerminal;
204/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
205  __u8 iTerminal;
206} __attribute__((__packed__));
207#define UVC_DT_INPUT_TERMINAL_SIZE 8
208struct uvc_output_terminal_descriptor {
209/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
210  __u8 bLength;
211  __u8 bDescriptorType;
212  __u8 bDescriptorSubType;
213  __u8 bTerminalID;
214/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
215  __u16 wTerminalType;
216  __u8 bAssocTerminal;
217  __u8 bSourceID;
218  __u8 iTerminal;
219/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
220} __attribute__((__packed__));
221#define UVC_DT_OUTPUT_TERMINAL_SIZE 9
222struct uvc_camera_terminal_descriptor {
223  __u8 bLength;
224/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
225  __u8 bDescriptorType;
226  __u8 bDescriptorSubType;
227  __u8 bTerminalID;
228  __u16 wTerminalType;
229/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
230  __u8 bAssocTerminal;
231  __u8 iTerminal;
232  __u16 wObjectiveFocalLengthMin;
233  __u16 wObjectiveFocalLengthMax;
234/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
235  __u16 wOcularFocalLength;
236  __u8 bControlSize;
237  __u8 bmControls[3];
238} __attribute__((__packed__));
239/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
240#define UVC_DT_CAMERA_TERMINAL_SIZE(n) (15 + (n))
241struct uvc_selector_unit_descriptor {
242  __u8 bLength;
243  __u8 bDescriptorType;
244/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
245  __u8 bDescriptorSubType;
246  __u8 bUnitID;
247  __u8 bNrInPins;
248  __u8 baSourceID[0];
249/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
250  __u8 iSelector;
251} __attribute__((__packed__));
252#define UVC_DT_SELECTOR_UNIT_SIZE(n) (6 + (n))
253#define UVC_SELECTOR_UNIT_DESCRIPTOR(n) uvc_selector_unit_descriptor_ ##n
254/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
255#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; \
256} __attribute__((packed))
257struct uvc_processing_unit_descriptor {
258  __u8 bLength;
259  __u8 bDescriptorType;
260/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
261  __u8 bDescriptorSubType;
262  __u8 bUnitID;
263  __u8 bSourceID;
264  __u16 wMaxMultiplier;
265/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
266  __u8 bControlSize;
267  __u8 bmControls[2];
268  __u8 iProcessing;
269} __attribute__((__packed__));
270/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
271#define UVC_DT_PROCESSING_UNIT_SIZE(n) (9 + (n))
272struct uvc_extension_unit_descriptor {
273  __u8 bLength;
274  __u8 bDescriptorType;
275/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
276  __u8 bDescriptorSubType;
277  __u8 bUnitID;
278  __u8 guidExtensionCode[16];
279  __u8 bNumControls;
280/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
281  __u8 bNrInPins;
282  __u8 baSourceID[0];
283  __u8 bControlSize;
284  __u8 bmControls[0];
285/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
286  __u8 iExtension;
287} __attribute__((__packed__));
288#define UVC_DT_EXTENSION_UNIT_SIZE(p,n) (24 + (p) + (n))
289#define UVC_EXTENSION_UNIT_DESCRIPTOR(p,n) uvc_extension_unit_descriptor_ ##p_ ##n
290/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
291#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; \
292} __attribute__((packed))
293struct uvc_control_endpoint_descriptor {
294  __u8 bLength;
295  __u8 bDescriptorType;
296/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
297  __u8 bDescriptorSubType;
298  __u16 wMaxTransferSize;
299} __attribute__((__packed__));
300#define UVC_DT_CONTROL_ENDPOINT_SIZE 5
301/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
302struct uvc_input_header_descriptor {
303  __u8 bLength;
304  __u8 bDescriptorType;
305  __u8 bDescriptorSubType;
306/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
307  __u8 bNumFormats;
308  __u16 wTotalLength;
309  __u8 bEndpointAddress;
310  __u8 bmInfo;
311/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
312  __u8 bTerminalLink;
313  __u8 bStillCaptureMethod;
314  __u8 bTriggerSupport;
315  __u8 bTriggerUsage;
316/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
317  __u8 bControlSize;
318  __u8 bmaControls[];
319} __attribute__((__packed__));
320#define UVC_DT_INPUT_HEADER_SIZE(n,p) (13 + (n * p))
321/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
322#define UVC_INPUT_HEADER_DESCRIPTOR(n,p) uvc_input_header_descriptor_ ##n_ ##p
323#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]; \
324} __attribute__((packed))
325struct uvc_output_header_descriptor {
326  __u8 bLength;
327/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
328  __u8 bDescriptorType;
329  __u8 bDescriptorSubType;
330  __u8 bNumFormats;
331  __u16 wTotalLength;
332/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
333  __u8 bEndpointAddress;
334  __u8 bTerminalLink;
335  __u8 bControlSize;
336  __u8 bmaControls[];
337/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
338} __attribute__((__packed__));
339#define UVC_DT_OUTPUT_HEADER_SIZE(n,p) (9 + (n * p))
340#define UVC_OUTPUT_HEADER_DESCRIPTOR(n,p) uvc_output_header_descriptor_ ##n_ ##p
341#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]; \
342} __attribute__((packed))
343/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
344struct uvc_color_matching_descriptor {
345  __u8 bLength;
346  __u8 bDescriptorType;
347  __u8 bDescriptorSubType;
348/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
349  __u8 bColorPrimaries;
350  __u8 bTransferCharacteristics;
351  __u8 bMatrixCoefficients;
352} __attribute__((__packed__));
353/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
354#define UVC_DT_COLOR_MATCHING_SIZE 6
355struct uvc_streaming_control {
356  __u16 bmHint;
357  __u8 bFormatIndex;
358/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
359  __u8 bFrameIndex;
360  __u32 dwFrameInterval;
361  __u16 wKeyFrameRate;
362  __u16 wPFrameRate;
363/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
364  __u16 wCompQuality;
365  __u16 wCompWindowSize;
366  __u16 wDelay;
367  __u32 dwMaxVideoFrameSize;
368/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
369  __u32 dwMaxPayloadTransferSize;
370  __u32 dwClockFrequency;
371  __u8 bmFramingInfo;
372  __u8 bPreferedVersion;
373/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
374  __u8 bMinVersion;
375  __u8 bMaxVersion;
376} __attribute__((__packed__));
377struct uvc_format_uncompressed {
378/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
379  __u8 bLength;
380  __u8 bDescriptorType;
381  __u8 bDescriptorSubType;
382  __u8 bFormatIndex;
383/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
384  __u8 bNumFrameDescriptors;
385  __u8 guidFormat[16];
386  __u8 bBitsPerPixel;
387  __u8 bDefaultFrameIndex;
388/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
389  __u8 bAspectRatioX;
390  __u8 bAspectRatioY;
391  __u8 bmInterfaceFlags;
392  __u8 bCopyProtect;
393/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
394} __attribute__((__packed__));
395#define UVC_DT_FORMAT_UNCOMPRESSED_SIZE 27
396struct uvc_frame_uncompressed {
397  __u8 bLength;
398/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
399  __u8 bDescriptorType;
400  __u8 bDescriptorSubType;
401  __u8 bFrameIndex;
402  __u8 bmCapabilities;
403/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
404  __u16 wWidth;
405  __u16 wHeight;
406  __u32 dwMinBitRate;
407  __u32 dwMaxBitRate;
408/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
409  __u32 dwMaxVideoFrameBufferSize;
410  __u32 dwDefaultFrameInterval;
411  __u8 bFrameIntervalType;
412  __u32 dwFrameInterval[];
413/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
414} __attribute__((__packed__));
415#define UVC_DT_FRAME_UNCOMPRESSED_SIZE(n) (26 + 4 * (n))
416#define UVC_FRAME_UNCOMPRESSED(n) uvc_frame_uncompressed_ ##n
417#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]; \
418} __attribute__((packed))
419/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
420struct uvc_format_mjpeg {
421  __u8 bLength;
422  __u8 bDescriptorType;
423  __u8 bDescriptorSubType;
424/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
425  __u8 bFormatIndex;
426  __u8 bNumFrameDescriptors;
427  __u8 bmFlags;
428  __u8 bDefaultFrameIndex;
429/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
430  __u8 bAspectRatioX;
431  __u8 bAspectRatioY;
432  __u8 bmInterfaceFlags;
433  __u8 bCopyProtect;
434/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
435} __attribute__((__packed__));
436#define UVC_DT_FORMAT_MJPEG_SIZE 11
437struct uvc_frame_mjpeg {
438  __u8 bLength;
439/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
440  __u8 bDescriptorType;
441  __u8 bDescriptorSubType;
442  __u8 bFrameIndex;
443  __u8 bmCapabilities;
444/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
445  __u16 wWidth;
446  __u16 wHeight;
447  __u32 dwMinBitRate;
448  __u32 dwMaxBitRate;
449/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
450  __u32 dwMaxVideoFrameBufferSize;
451  __u32 dwDefaultFrameInterval;
452  __u8 bFrameIntervalType;
453  __u32 dwFrameInterval[];
454/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
455} __attribute__((__packed__));
456#define UVC_DT_FRAME_MJPEG_SIZE(n) (26 + 4 * (n))
457#define UVC_FRAME_MJPEG(n) uvc_frame_mjpeg_ ##n
458#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]; \
459} __attribute__((packed))
460/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
461#endif
462