xref: /aosp_15_r20/bionic/libc/kernel/uapi/linux/usb/video.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /*
2*8d67ca89SAndroid Build Coastguard Worker  * This file is auto-generated. Modifications will be lost.
3*8d67ca89SAndroid Build Coastguard Worker  *
4*8d67ca89SAndroid Build Coastguard Worker  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5*8d67ca89SAndroid Build Coastguard Worker  * for more information.
6*8d67ca89SAndroid Build Coastguard Worker  */
7*8d67ca89SAndroid Build Coastguard Worker #ifndef __LINUX_USB_VIDEO_H
8*8d67ca89SAndroid Build Coastguard Worker #define __LINUX_USB_VIDEO_H
9*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h>
10*8d67ca89SAndroid Build Coastguard Worker #define UVC_SC_UNDEFINED 0x00
11*8d67ca89SAndroid Build Coastguard Worker #define UVC_SC_VIDEOCONTROL 0x01
12*8d67ca89SAndroid Build Coastguard Worker #define UVC_SC_VIDEOSTREAMING 0x02
13*8d67ca89SAndroid Build Coastguard Worker #define UVC_SC_VIDEO_INTERFACE_COLLECTION 0x03
14*8d67ca89SAndroid Build Coastguard Worker #define UVC_PC_PROTOCOL_UNDEFINED 0x00
15*8d67ca89SAndroid Build Coastguard Worker #define UVC_PC_PROTOCOL_15 0x01
16*8d67ca89SAndroid Build Coastguard Worker #define UVC_VC_DESCRIPTOR_UNDEFINED 0x00
17*8d67ca89SAndroid Build Coastguard Worker #define UVC_VC_HEADER 0x01
18*8d67ca89SAndroid Build Coastguard Worker #define UVC_VC_INPUT_TERMINAL 0x02
19*8d67ca89SAndroid Build Coastguard Worker #define UVC_VC_OUTPUT_TERMINAL 0x03
20*8d67ca89SAndroid Build Coastguard Worker #define UVC_VC_SELECTOR_UNIT 0x04
21*8d67ca89SAndroid Build Coastguard Worker #define UVC_VC_PROCESSING_UNIT 0x05
22*8d67ca89SAndroid Build Coastguard Worker #define UVC_VC_EXTENSION_UNIT 0x06
23*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_UNDEFINED 0x00
24*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_INPUT_HEADER 0x01
25*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_OUTPUT_HEADER 0x02
26*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_STILL_IMAGE_FRAME 0x03
27*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_FORMAT_UNCOMPRESSED 0x04
28*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_FRAME_UNCOMPRESSED 0x05
29*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_FORMAT_MJPEG 0x06
30*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_FRAME_MJPEG 0x07
31*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_FORMAT_MPEG2TS 0x0a
32*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_FORMAT_DV 0x0c
33*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_COLORFORMAT 0x0d
34*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_FORMAT_FRAME_BASED 0x10
35*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_FRAME_FRAME_BASED 0x11
36*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_FORMAT_STREAM_BASED 0x12
37*8d67ca89SAndroid Build Coastguard Worker #define UVC_EP_UNDEFINED 0x00
38*8d67ca89SAndroid Build Coastguard Worker #define UVC_EP_GENERAL 0x01
39*8d67ca89SAndroid Build Coastguard Worker #define UVC_EP_ENDPOINT 0x02
40*8d67ca89SAndroid Build Coastguard Worker #define UVC_EP_INTERRUPT 0x03
41*8d67ca89SAndroid Build Coastguard Worker #define UVC_RC_UNDEFINED 0x00
42*8d67ca89SAndroid Build Coastguard Worker #define UVC_SET_CUR 0x01
43*8d67ca89SAndroid Build Coastguard Worker #define UVC_GET_CUR 0x81
44*8d67ca89SAndroid Build Coastguard Worker #define UVC_GET_MIN 0x82
45*8d67ca89SAndroid Build Coastguard Worker #define UVC_GET_MAX 0x83
46*8d67ca89SAndroid Build Coastguard Worker #define UVC_GET_RES 0x84
47*8d67ca89SAndroid Build Coastguard Worker #define UVC_GET_LEN 0x85
48*8d67ca89SAndroid Build Coastguard Worker #define UVC_GET_INFO 0x86
49*8d67ca89SAndroid Build Coastguard Worker #define UVC_GET_DEF 0x87
50*8d67ca89SAndroid Build Coastguard Worker #define UVC_VC_CONTROL_UNDEFINED 0x00
51*8d67ca89SAndroid Build Coastguard Worker #define UVC_VC_VIDEO_POWER_MODE_CONTROL 0x01
52*8d67ca89SAndroid Build Coastguard Worker #define UVC_VC_REQUEST_ERROR_CODE_CONTROL 0x02
53*8d67ca89SAndroid Build Coastguard Worker #define UVC_TE_CONTROL_UNDEFINED 0x00
54*8d67ca89SAndroid Build Coastguard Worker #define UVC_SU_CONTROL_UNDEFINED 0x00
55*8d67ca89SAndroid Build Coastguard Worker #define UVC_SU_INPUT_SELECT_CONTROL 0x01
56*8d67ca89SAndroid Build Coastguard Worker #define UVC_CT_CONTROL_UNDEFINED 0x00
57*8d67ca89SAndroid Build Coastguard Worker #define UVC_CT_SCANNING_MODE_CONTROL 0x01
58*8d67ca89SAndroid Build Coastguard Worker #define UVC_CT_AE_MODE_CONTROL 0x02
59*8d67ca89SAndroid Build Coastguard Worker #define UVC_CT_AE_PRIORITY_CONTROL 0x03
60*8d67ca89SAndroid Build Coastguard Worker #define UVC_CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x04
61*8d67ca89SAndroid Build Coastguard Worker #define UVC_CT_EXPOSURE_TIME_RELATIVE_CONTROL 0x05
62*8d67ca89SAndroid Build Coastguard Worker #define UVC_CT_FOCUS_ABSOLUTE_CONTROL 0x06
63*8d67ca89SAndroid Build Coastguard Worker #define UVC_CT_FOCUS_RELATIVE_CONTROL 0x07
64*8d67ca89SAndroid Build Coastguard Worker #define UVC_CT_FOCUS_AUTO_CONTROL 0x08
65*8d67ca89SAndroid Build Coastguard Worker #define UVC_CT_IRIS_ABSOLUTE_CONTROL 0x09
66*8d67ca89SAndroid Build Coastguard Worker #define UVC_CT_IRIS_RELATIVE_CONTROL 0x0a
67*8d67ca89SAndroid Build Coastguard Worker #define UVC_CT_ZOOM_ABSOLUTE_CONTROL 0x0b
68*8d67ca89SAndroid Build Coastguard Worker #define UVC_CT_ZOOM_RELATIVE_CONTROL 0x0c
69*8d67ca89SAndroid Build Coastguard Worker #define UVC_CT_PANTILT_ABSOLUTE_CONTROL 0x0d
70*8d67ca89SAndroid Build Coastguard Worker #define UVC_CT_PANTILT_RELATIVE_CONTROL 0x0e
71*8d67ca89SAndroid Build Coastguard Worker #define UVC_CT_ROLL_ABSOLUTE_CONTROL 0x0f
72*8d67ca89SAndroid Build Coastguard Worker #define UVC_CT_ROLL_RELATIVE_CONTROL 0x10
73*8d67ca89SAndroid Build Coastguard Worker #define UVC_CT_PRIVACY_CONTROL 0x11
74*8d67ca89SAndroid Build Coastguard Worker #define UVC_PU_CONTROL_UNDEFINED 0x00
75*8d67ca89SAndroid Build Coastguard Worker #define UVC_PU_BACKLIGHT_COMPENSATION_CONTROL 0x01
76*8d67ca89SAndroid Build Coastguard Worker #define UVC_PU_BRIGHTNESS_CONTROL 0x02
77*8d67ca89SAndroid Build Coastguard Worker #define UVC_PU_CONTRAST_CONTROL 0x03
78*8d67ca89SAndroid Build Coastguard Worker #define UVC_PU_GAIN_CONTROL 0x04
79*8d67ca89SAndroid Build Coastguard Worker #define UVC_PU_POWER_LINE_FREQUENCY_CONTROL 0x05
80*8d67ca89SAndroid Build Coastguard Worker #define UVC_PU_HUE_CONTROL 0x06
81*8d67ca89SAndroid Build Coastguard Worker #define UVC_PU_SATURATION_CONTROL 0x07
82*8d67ca89SAndroid Build Coastguard Worker #define UVC_PU_SHARPNESS_CONTROL 0x08
83*8d67ca89SAndroid Build Coastguard Worker #define UVC_PU_GAMMA_CONTROL 0x09
84*8d67ca89SAndroid Build Coastguard Worker #define UVC_PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x0a
85*8d67ca89SAndroid Build Coastguard Worker #define UVC_PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x0b
86*8d67ca89SAndroid Build Coastguard Worker #define UVC_PU_WHITE_BALANCE_COMPONENT_CONTROL 0x0c
87*8d67ca89SAndroid Build Coastguard Worker #define UVC_PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x0d
88*8d67ca89SAndroid Build Coastguard Worker #define UVC_PU_DIGITAL_MULTIPLIER_CONTROL 0x0e
89*8d67ca89SAndroid Build Coastguard Worker #define UVC_PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x0f
90*8d67ca89SAndroid Build Coastguard Worker #define UVC_PU_HUE_AUTO_CONTROL 0x10
91*8d67ca89SAndroid Build Coastguard Worker #define UVC_PU_ANALOG_VIDEO_STANDARD_CONTROL 0x11
92*8d67ca89SAndroid Build Coastguard Worker #define UVC_PU_ANALOG_LOCK_STATUS_CONTROL 0x12
93*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_CONTROL_UNDEFINED 0x00
94*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_PROBE_CONTROL 0x01
95*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_COMMIT_CONTROL 0x02
96*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_STILL_PROBE_CONTROL 0x03
97*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_STILL_COMMIT_CONTROL 0x04
98*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_STILL_IMAGE_TRIGGER_CONTROL 0x05
99*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_STREAM_ERROR_CODE_CONTROL 0x06
100*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_GENERATE_KEY_FRAME_CONTROL 0x07
101*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_UPDATE_FRAME_SEGMENT_CONTROL 0x08
102*8d67ca89SAndroid Build Coastguard Worker #define UVC_VS_SYNC_DELAY_CONTROL 0x09
103*8d67ca89SAndroid Build Coastguard Worker #define UVC_TT_VENDOR_SPECIFIC 0x0100
104*8d67ca89SAndroid Build Coastguard Worker #define UVC_TT_STREAMING 0x0101
105*8d67ca89SAndroid Build Coastguard Worker #define UVC_ITT_VENDOR_SPECIFIC 0x0200
106*8d67ca89SAndroid Build Coastguard Worker #define UVC_ITT_CAMERA 0x0201
107*8d67ca89SAndroid Build Coastguard Worker #define UVC_ITT_MEDIA_TRANSPORT_INPUT 0x0202
108*8d67ca89SAndroid Build Coastguard Worker #define UVC_OTT_VENDOR_SPECIFIC 0x0300
109*8d67ca89SAndroid Build Coastguard Worker #define UVC_OTT_DISPLAY 0x0301
110*8d67ca89SAndroid Build Coastguard Worker #define UVC_OTT_MEDIA_TRANSPORT_OUTPUT 0x0302
111*8d67ca89SAndroid Build Coastguard Worker #define UVC_EXTERNAL_VENDOR_SPECIFIC 0x0400
112*8d67ca89SAndroid Build Coastguard Worker #define UVC_COMPOSITE_CONNECTOR 0x0401
113*8d67ca89SAndroid Build Coastguard Worker #define UVC_SVIDEO_CONNECTOR 0x0402
114*8d67ca89SAndroid Build Coastguard Worker #define UVC_COMPONENT_CONNECTOR 0x0403
115*8d67ca89SAndroid Build Coastguard Worker #define UVC_STATUS_TYPE_CONTROL 1
116*8d67ca89SAndroid Build Coastguard Worker #define UVC_STATUS_TYPE_STREAMING 2
117*8d67ca89SAndroid Build Coastguard Worker #define UVC_STREAM_EOH (1 << 7)
118*8d67ca89SAndroid Build Coastguard Worker #define UVC_STREAM_ERR (1 << 6)
119*8d67ca89SAndroid Build Coastguard Worker #define UVC_STREAM_STI (1 << 5)
120*8d67ca89SAndroid Build Coastguard Worker #define UVC_STREAM_RES (1 << 4)
121*8d67ca89SAndroid Build Coastguard Worker #define UVC_STREAM_SCR (1 << 3)
122*8d67ca89SAndroid Build Coastguard Worker #define UVC_STREAM_PTS (1 << 2)
123*8d67ca89SAndroid Build Coastguard Worker #define UVC_STREAM_EOF (1 << 1)
124*8d67ca89SAndroid Build Coastguard Worker #define UVC_STREAM_FID (1 << 0)
125*8d67ca89SAndroid Build Coastguard Worker #define UVC_CONTROL_CAP_GET (1 << 0)
126*8d67ca89SAndroid Build Coastguard Worker #define UVC_CONTROL_CAP_SET (1 << 1)
127*8d67ca89SAndroid Build Coastguard Worker #define UVC_CONTROL_CAP_DISABLED (1 << 2)
128*8d67ca89SAndroid Build Coastguard Worker #define UVC_CONTROL_CAP_AUTOUPDATE (1 << 3)
129*8d67ca89SAndroid Build Coastguard Worker #define UVC_CONTROL_CAP_ASYNCHRONOUS (1 << 4)
130*8d67ca89SAndroid Build Coastguard Worker enum uvc_color_primaries_values {
131*8d67ca89SAndroid Build Coastguard Worker   UVC_COLOR_PRIMARIES_UNSPECIFIED,
132*8d67ca89SAndroid Build Coastguard Worker   UVC_COLOR_PRIMARIES_BT_709_SRGB,
133*8d67ca89SAndroid Build Coastguard Worker   UVC_COLOR_PRIMARIES_BT_470_2_M,
134*8d67ca89SAndroid Build Coastguard Worker   UVC_COLOR_PRIMARIES_BT_470_2_B_G,
135*8d67ca89SAndroid Build Coastguard Worker   UVC_COLOR_PRIMARIES_SMPTE_170M,
136*8d67ca89SAndroid Build Coastguard Worker   UVC_COLOR_PRIMARIES_SMPTE_240M,
137*8d67ca89SAndroid Build Coastguard Worker };
138*8d67ca89SAndroid Build Coastguard Worker enum uvc_transfer_characteristics_values {
139*8d67ca89SAndroid Build Coastguard Worker   UVC_TRANSFER_CHARACTERISTICS_UNSPECIFIED,
140*8d67ca89SAndroid Build Coastguard Worker   UVC_TRANSFER_CHARACTERISTICS_BT_709,
141*8d67ca89SAndroid Build Coastguard Worker   UVC_TRANSFER_CHARACTERISTICS_BT_470_2_M,
142*8d67ca89SAndroid Build Coastguard Worker   UVC_TRANSFER_CHARACTERISTICS_BT_470_2_B_G,
143*8d67ca89SAndroid Build Coastguard Worker   UVC_TRANSFER_CHARACTERISTICS_SMPTE_170M,
144*8d67ca89SAndroid Build Coastguard Worker   UVC_TRANSFER_CHARACTERISTICS_SMPTE_240M,
145*8d67ca89SAndroid Build Coastguard Worker   UVC_TRANSFER_CHARACTERISTICS_LINEAR,
146*8d67ca89SAndroid Build Coastguard Worker   UVC_TRANSFER_CHARACTERISTICS_SRGB,
147*8d67ca89SAndroid Build Coastguard Worker };
148*8d67ca89SAndroid Build Coastguard Worker enum uvc_matrix_coefficients {
149*8d67ca89SAndroid Build Coastguard Worker   UVC_MATRIX_COEFFICIENTS_UNSPECIFIED,
150*8d67ca89SAndroid Build Coastguard Worker   UVC_MATRIX_COEFFICIENTS_BT_709,
151*8d67ca89SAndroid Build Coastguard Worker   UVC_MATRIX_COEFFICIENTS_FCC,
152*8d67ca89SAndroid Build Coastguard Worker   UVC_MATRIX_COEFFICIENTS_BT_470_2_B_G,
153*8d67ca89SAndroid Build Coastguard Worker   UVC_MATRIX_COEFFICIENTS_SMPTE_170M,
154*8d67ca89SAndroid Build Coastguard Worker   UVC_MATRIX_COEFFICIENTS_SMPTE_240M,
155*8d67ca89SAndroid Build Coastguard Worker };
156*8d67ca89SAndroid Build Coastguard Worker struct uvc_descriptor_header {
157*8d67ca89SAndroid Build Coastguard Worker   __u8 bLength;
158*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorType;
159*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorSubType;
160*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed));
161*8d67ca89SAndroid Build Coastguard Worker struct uvc_header_descriptor {
162*8d67ca89SAndroid Build Coastguard Worker   __u8 bLength;
163*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorType;
164*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorSubType;
165*8d67ca89SAndroid Build Coastguard Worker   __le16 bcdUVC;
166*8d67ca89SAndroid Build Coastguard Worker   __le16 wTotalLength;
167*8d67ca89SAndroid Build Coastguard Worker   __le32 dwClockFrequency;
168*8d67ca89SAndroid Build Coastguard Worker   __u8 bInCollection;
169*8d67ca89SAndroid Build Coastguard Worker   __u8 baInterfaceNr[];
170*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__));
171*8d67ca89SAndroid Build Coastguard Worker #define UVC_DT_HEADER_SIZE(n) (12 + (n))
172*8d67ca89SAndroid Build Coastguard Worker #define UVC_HEADER_DESCRIPTOR(n) uvc_header_descriptor_ ##n
173*8d67ca89SAndroid Build Coastguard Worker #define DECLARE_UVC_HEADER_DESCRIPTOR(n) struct UVC_HEADER_DESCRIPTOR(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __le16 bcdUVC; __le16 wTotalLength; __le32 dwClockFrequency; __u8 bInCollection; __u8 baInterfaceNr[n]; \
174*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed))
175*8d67ca89SAndroid Build Coastguard Worker struct uvc_input_terminal_descriptor {
176*8d67ca89SAndroid Build Coastguard Worker   __u8 bLength;
177*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorType;
178*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorSubType;
179*8d67ca89SAndroid Build Coastguard Worker   __u8 bTerminalID;
180*8d67ca89SAndroid Build Coastguard Worker   __le16 wTerminalType;
181*8d67ca89SAndroid Build Coastguard Worker   __u8 bAssocTerminal;
182*8d67ca89SAndroid Build Coastguard Worker   __u8 iTerminal;
183*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__));
184*8d67ca89SAndroid Build Coastguard Worker #define UVC_DT_INPUT_TERMINAL_SIZE 8
185*8d67ca89SAndroid Build Coastguard Worker struct uvc_output_terminal_descriptor {
186*8d67ca89SAndroid Build Coastguard Worker   __u8 bLength;
187*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorType;
188*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorSubType;
189*8d67ca89SAndroid Build Coastguard Worker   __u8 bTerminalID;
190*8d67ca89SAndroid Build Coastguard Worker   __le16 wTerminalType;
191*8d67ca89SAndroid Build Coastguard Worker   __u8 bAssocTerminal;
192*8d67ca89SAndroid Build Coastguard Worker   __u8 bSourceID;
193*8d67ca89SAndroid Build Coastguard Worker   __u8 iTerminal;
194*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__));
195*8d67ca89SAndroid Build Coastguard Worker #define UVC_DT_OUTPUT_TERMINAL_SIZE 9
196*8d67ca89SAndroid Build Coastguard Worker struct uvc_camera_terminal_descriptor {
197*8d67ca89SAndroid Build Coastguard Worker   __u8 bLength;
198*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorType;
199*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorSubType;
200*8d67ca89SAndroid Build Coastguard Worker   __u8 bTerminalID;
201*8d67ca89SAndroid Build Coastguard Worker   __le16 wTerminalType;
202*8d67ca89SAndroid Build Coastguard Worker   __u8 bAssocTerminal;
203*8d67ca89SAndroid Build Coastguard Worker   __u8 iTerminal;
204*8d67ca89SAndroid Build Coastguard Worker   __le16 wObjectiveFocalLengthMin;
205*8d67ca89SAndroid Build Coastguard Worker   __le16 wObjectiveFocalLengthMax;
206*8d67ca89SAndroid Build Coastguard Worker   __le16 wOcularFocalLength;
207*8d67ca89SAndroid Build Coastguard Worker   __u8 bControlSize;
208*8d67ca89SAndroid Build Coastguard Worker   __u8 bmControls[3];
209*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__));
210*8d67ca89SAndroid Build Coastguard Worker #define UVC_DT_CAMERA_TERMINAL_SIZE(n) (15 + (n))
211*8d67ca89SAndroid Build Coastguard Worker struct uvc_selector_unit_descriptor {
212*8d67ca89SAndroid Build Coastguard Worker   __u8 bLength;
213*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorType;
214*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorSubType;
215*8d67ca89SAndroid Build Coastguard Worker   __u8 bUnitID;
216*8d67ca89SAndroid Build Coastguard Worker   __u8 bNrInPins;
217*8d67ca89SAndroid Build Coastguard Worker   __u8 baSourceID[0];
218*8d67ca89SAndroid Build Coastguard Worker   __u8 iSelector;
219*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__));
220*8d67ca89SAndroid Build Coastguard Worker #define UVC_DT_SELECTOR_UNIT_SIZE(n) (6 + (n))
221*8d67ca89SAndroid Build Coastguard Worker #define UVC_SELECTOR_UNIT_DESCRIPTOR(n) uvc_selector_unit_descriptor_ ##n
222*8d67ca89SAndroid Build Coastguard Worker #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; \
223*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed))
224*8d67ca89SAndroid Build Coastguard Worker struct uvc_processing_unit_descriptor {
225*8d67ca89SAndroid Build Coastguard Worker   __u8 bLength;
226*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorType;
227*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorSubType;
228*8d67ca89SAndroid Build Coastguard Worker   __u8 bUnitID;
229*8d67ca89SAndroid Build Coastguard Worker   __u8 bSourceID;
230*8d67ca89SAndroid Build Coastguard Worker   __le16 wMaxMultiplier;
231*8d67ca89SAndroid Build Coastguard Worker   __u8 bControlSize;
232*8d67ca89SAndroid Build Coastguard Worker   __u8 bmControls[2];
233*8d67ca89SAndroid Build Coastguard Worker   __u8 iProcessing;
234*8d67ca89SAndroid Build Coastguard Worker   __u8 bmVideoStandards;
235*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__));
236*8d67ca89SAndroid Build Coastguard Worker #define UVC_DT_PROCESSING_UNIT_SIZE(n) (10 + (n))
237*8d67ca89SAndroid Build Coastguard Worker struct uvc_extension_unit_descriptor {
238*8d67ca89SAndroid Build Coastguard Worker   __u8 bLength;
239*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorType;
240*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorSubType;
241*8d67ca89SAndroid Build Coastguard Worker   __u8 bUnitID;
242*8d67ca89SAndroid Build Coastguard Worker   __u8 guidExtensionCode[16];
243*8d67ca89SAndroid Build Coastguard Worker   __u8 bNumControls;
244*8d67ca89SAndroid Build Coastguard Worker   __u8 bNrInPins;
245*8d67ca89SAndroid Build Coastguard Worker   __u8 baSourceID[0];
246*8d67ca89SAndroid Build Coastguard Worker   __u8 bControlSize;
247*8d67ca89SAndroid Build Coastguard Worker   __u8 bmControls[0];
248*8d67ca89SAndroid Build Coastguard Worker   __u8 iExtension;
249*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__));
250*8d67ca89SAndroid Build Coastguard Worker #define UVC_DT_EXTENSION_UNIT_SIZE(p,n) (24 + (p) + (n))
251*8d67ca89SAndroid Build Coastguard Worker #define UVC_EXTENSION_UNIT_DESCRIPTOR(p,n) uvc_extension_unit_descriptor_ ##p_ ##n
252*8d67ca89SAndroid Build Coastguard Worker #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; \
253*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed))
254*8d67ca89SAndroid Build Coastguard Worker struct uvc_control_endpoint_descriptor {
255*8d67ca89SAndroid Build Coastguard Worker   __u8 bLength;
256*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorType;
257*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorSubType;
258*8d67ca89SAndroid Build Coastguard Worker   __le16 wMaxTransferSize;
259*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__));
260*8d67ca89SAndroid Build Coastguard Worker #define UVC_DT_CONTROL_ENDPOINT_SIZE 5
261*8d67ca89SAndroid Build Coastguard Worker struct uvc_input_header_descriptor {
262*8d67ca89SAndroid Build Coastguard Worker   __u8 bLength;
263*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorType;
264*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorSubType;
265*8d67ca89SAndroid Build Coastguard Worker   __u8 bNumFormats;
266*8d67ca89SAndroid Build Coastguard Worker   __le16 wTotalLength;
267*8d67ca89SAndroid Build Coastguard Worker   __u8 bEndpointAddress;
268*8d67ca89SAndroid Build Coastguard Worker   __u8 bmInfo;
269*8d67ca89SAndroid Build Coastguard Worker   __u8 bTerminalLink;
270*8d67ca89SAndroid Build Coastguard Worker   __u8 bStillCaptureMethod;
271*8d67ca89SAndroid Build Coastguard Worker   __u8 bTriggerSupport;
272*8d67ca89SAndroid Build Coastguard Worker   __u8 bTriggerUsage;
273*8d67ca89SAndroid Build Coastguard Worker   __u8 bControlSize;
274*8d67ca89SAndroid Build Coastguard Worker   __u8 bmaControls[];
275*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__));
276*8d67ca89SAndroid Build Coastguard Worker #define UVC_DT_INPUT_HEADER_SIZE(n,p) (13 + (n * p))
277*8d67ca89SAndroid Build Coastguard Worker #define UVC_INPUT_HEADER_DESCRIPTOR(n,p) uvc_input_header_descriptor_ ##n_ ##p
278*8d67ca89SAndroid Build Coastguard Worker #define DECLARE_UVC_INPUT_HEADER_DESCRIPTOR(n,p) struct UVC_INPUT_HEADER_DESCRIPTOR(n, p) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bNumFormats; __le16 wTotalLength; __u8 bEndpointAddress; __u8 bmInfo; __u8 bTerminalLink; __u8 bStillCaptureMethod; __u8 bTriggerSupport; __u8 bTriggerUsage; __u8 bControlSize; __u8 bmaControls[p][n]; \
279*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed))
280*8d67ca89SAndroid Build Coastguard Worker struct uvc_output_header_descriptor {
281*8d67ca89SAndroid Build Coastguard Worker   __u8 bLength;
282*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorType;
283*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorSubType;
284*8d67ca89SAndroid Build Coastguard Worker   __u8 bNumFormats;
285*8d67ca89SAndroid Build Coastguard Worker   __le16 wTotalLength;
286*8d67ca89SAndroid Build Coastguard Worker   __u8 bEndpointAddress;
287*8d67ca89SAndroid Build Coastguard Worker   __u8 bTerminalLink;
288*8d67ca89SAndroid Build Coastguard Worker   __u8 bControlSize;
289*8d67ca89SAndroid Build Coastguard Worker   __u8 bmaControls[];
290*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__));
291*8d67ca89SAndroid Build Coastguard Worker #define UVC_DT_OUTPUT_HEADER_SIZE(n,p) (9 + (n * p))
292*8d67ca89SAndroid Build Coastguard Worker #define UVC_OUTPUT_HEADER_DESCRIPTOR(n,p) uvc_output_header_descriptor_ ##n_ ##p
293*8d67ca89SAndroid Build Coastguard Worker #define DECLARE_UVC_OUTPUT_HEADER_DESCRIPTOR(n,p) struct UVC_OUTPUT_HEADER_DESCRIPTOR(n, p) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bNumFormats; __le16 wTotalLength; __u8 bEndpointAddress; __u8 bTerminalLink; __u8 bControlSize; __u8 bmaControls[p][n]; \
294*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed))
295*8d67ca89SAndroid Build Coastguard Worker struct uvc_color_matching_descriptor {
296*8d67ca89SAndroid Build Coastguard Worker   __u8 bLength;
297*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorType;
298*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorSubType;
299*8d67ca89SAndroid Build Coastguard Worker   __u8 bColorPrimaries;
300*8d67ca89SAndroid Build Coastguard Worker   __u8 bTransferCharacteristics;
301*8d67ca89SAndroid Build Coastguard Worker   __u8 bMatrixCoefficients;
302*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__));
303*8d67ca89SAndroid Build Coastguard Worker #define UVC_DT_COLOR_MATCHING_SIZE 6
304*8d67ca89SAndroid Build Coastguard Worker struct uvc_streaming_control {
305*8d67ca89SAndroid Build Coastguard Worker   __u16 bmHint;
306*8d67ca89SAndroid Build Coastguard Worker   __u8 bFormatIndex;
307*8d67ca89SAndroid Build Coastguard Worker   __u8 bFrameIndex;
308*8d67ca89SAndroid Build Coastguard Worker   __u32 dwFrameInterval;
309*8d67ca89SAndroid Build Coastguard Worker   __u16 wKeyFrameRate;
310*8d67ca89SAndroid Build Coastguard Worker   __u16 wPFrameRate;
311*8d67ca89SAndroid Build Coastguard Worker   __u16 wCompQuality;
312*8d67ca89SAndroid Build Coastguard Worker   __u16 wCompWindowSize;
313*8d67ca89SAndroid Build Coastguard Worker   __u16 wDelay;
314*8d67ca89SAndroid Build Coastguard Worker   __u32 dwMaxVideoFrameSize;
315*8d67ca89SAndroid Build Coastguard Worker   __u32 dwMaxPayloadTransferSize;
316*8d67ca89SAndroid Build Coastguard Worker   __u32 dwClockFrequency;
317*8d67ca89SAndroid Build Coastguard Worker   __u8 bmFramingInfo;
318*8d67ca89SAndroid Build Coastguard Worker   __u8 bPreferedVersion;
319*8d67ca89SAndroid Build Coastguard Worker   __u8 bMinVersion;
320*8d67ca89SAndroid Build Coastguard Worker   __u8 bMaxVersion;
321*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__));
322*8d67ca89SAndroid Build Coastguard Worker struct uvc_format_uncompressed {
323*8d67ca89SAndroid Build Coastguard Worker   __u8 bLength;
324*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorType;
325*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorSubType;
326*8d67ca89SAndroid Build Coastguard Worker   __u8 bFormatIndex;
327*8d67ca89SAndroid Build Coastguard Worker   __u8 bNumFrameDescriptors;
328*8d67ca89SAndroid Build Coastguard Worker   __u8 guidFormat[16];
329*8d67ca89SAndroid Build Coastguard Worker   __u8 bBitsPerPixel;
330*8d67ca89SAndroid Build Coastguard Worker   __u8 bDefaultFrameIndex;
331*8d67ca89SAndroid Build Coastguard Worker   __u8 bAspectRatioX;
332*8d67ca89SAndroid Build Coastguard Worker   __u8 bAspectRatioY;
333*8d67ca89SAndroid Build Coastguard Worker   __u8 bmInterlaceFlags;
334*8d67ca89SAndroid Build Coastguard Worker   __u8 bCopyProtect;
335*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__));
336*8d67ca89SAndroid Build Coastguard Worker #define UVC_DT_FORMAT_UNCOMPRESSED_SIZE 27
337*8d67ca89SAndroid Build Coastguard Worker struct uvc_frame_uncompressed {
338*8d67ca89SAndroid Build Coastguard Worker   __u8 bLength;
339*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorType;
340*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorSubType;
341*8d67ca89SAndroid Build Coastguard Worker   __u8 bFrameIndex;
342*8d67ca89SAndroid Build Coastguard Worker   __u8 bmCapabilities;
343*8d67ca89SAndroid Build Coastguard Worker   __le16 wWidth;
344*8d67ca89SAndroid Build Coastguard Worker   __le16 wHeight;
345*8d67ca89SAndroid Build Coastguard Worker   __le32 dwMinBitRate;
346*8d67ca89SAndroid Build Coastguard Worker   __le32 dwMaxBitRate;
347*8d67ca89SAndroid Build Coastguard Worker   __le32 dwMaxVideoFrameBufferSize;
348*8d67ca89SAndroid Build Coastguard Worker   __le32 dwDefaultFrameInterval;
349*8d67ca89SAndroid Build Coastguard Worker   __u8 bFrameIntervalType;
350*8d67ca89SAndroid Build Coastguard Worker   __le32 dwFrameInterval[];
351*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__));
352*8d67ca89SAndroid Build Coastguard Worker #define UVC_DT_FRAME_UNCOMPRESSED_SIZE(n) (26 + 4 * (n))
353*8d67ca89SAndroid Build Coastguard Worker #define UVC_FRAME_UNCOMPRESSED(n) uvc_frame_uncompressed_ ##n
354*8d67ca89SAndroid Build Coastguard Worker #define DECLARE_UVC_FRAME_UNCOMPRESSED(n) struct UVC_FRAME_UNCOMPRESSED(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bFrameIndex; __u8 bmCapabilities; __le16 wWidth; __le16 wHeight; __le32 dwMinBitRate; __le32 dwMaxBitRate; __le32 dwMaxVideoFrameBufferSize; __le32 dwDefaultFrameInterval; __u8 bFrameIntervalType; __le32 dwFrameInterval[n]; \
355*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed))
356*8d67ca89SAndroid Build Coastguard Worker struct uvc_format_mjpeg {
357*8d67ca89SAndroid Build Coastguard Worker   __u8 bLength;
358*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorType;
359*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorSubType;
360*8d67ca89SAndroid Build Coastguard Worker   __u8 bFormatIndex;
361*8d67ca89SAndroid Build Coastguard Worker   __u8 bNumFrameDescriptors;
362*8d67ca89SAndroid Build Coastguard Worker   __u8 bmFlags;
363*8d67ca89SAndroid Build Coastguard Worker   __u8 bDefaultFrameIndex;
364*8d67ca89SAndroid Build Coastguard Worker   __u8 bAspectRatioX;
365*8d67ca89SAndroid Build Coastguard Worker   __u8 bAspectRatioY;
366*8d67ca89SAndroid Build Coastguard Worker   __u8 bmInterlaceFlags;
367*8d67ca89SAndroid Build Coastguard Worker   __u8 bCopyProtect;
368*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__));
369*8d67ca89SAndroid Build Coastguard Worker #define UVC_DT_FORMAT_MJPEG_SIZE 11
370*8d67ca89SAndroid Build Coastguard Worker struct uvc_frame_mjpeg {
371*8d67ca89SAndroid Build Coastguard Worker   __u8 bLength;
372*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorType;
373*8d67ca89SAndroid Build Coastguard Worker   __u8 bDescriptorSubType;
374*8d67ca89SAndroid Build Coastguard Worker   __u8 bFrameIndex;
375*8d67ca89SAndroid Build Coastguard Worker   __u8 bmCapabilities;
376*8d67ca89SAndroid Build Coastguard Worker   __le16 wWidth;
377*8d67ca89SAndroid Build Coastguard Worker   __le16 wHeight;
378*8d67ca89SAndroid Build Coastguard Worker   __le32 dwMinBitRate;
379*8d67ca89SAndroid Build Coastguard Worker   __le32 dwMaxBitRate;
380*8d67ca89SAndroid Build Coastguard Worker   __le32 dwMaxVideoFrameBufferSize;
381*8d67ca89SAndroid Build Coastguard Worker   __le32 dwDefaultFrameInterval;
382*8d67ca89SAndroid Build Coastguard Worker   __u8 bFrameIntervalType;
383*8d67ca89SAndroid Build Coastguard Worker   __le32 dwFrameInterval[];
384*8d67ca89SAndroid Build Coastguard Worker } __attribute__((__packed__));
385*8d67ca89SAndroid Build Coastguard Worker #define UVC_DT_FRAME_MJPEG_SIZE(n) (26 + 4 * (n))
386*8d67ca89SAndroid Build Coastguard Worker #define UVC_FRAME_MJPEG(n) uvc_frame_mjpeg_ ##n
387*8d67ca89SAndroid Build Coastguard Worker #define DECLARE_UVC_FRAME_MJPEG(n) struct UVC_FRAME_MJPEG(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bFrameIndex; __u8 bmCapabilities; __le16 wWidth; __le16 wHeight; __le32 dwMinBitRate; __le32 dwMaxBitRate; __le32 dwMaxVideoFrameBufferSize; __le32 dwDefaultFrameInterval; __u8 bFrameIntervalType; __le32 dwFrameInterval[n]; \
388*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed))
389*8d67ca89SAndroid Build Coastguard Worker #endif
390