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