13329Syz147069 /* 23329Syz147069 * CDDL HEADER START 33329Syz147069 * 43329Syz147069 * The contents of this file are subject to the terms of the 53329Syz147069 * Common Development and Distribution License (the "License"). 63329Syz147069 * You may not use this file except in compliance with the License. 73329Syz147069 * 83329Syz147069 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 93329Syz147069 * or http://www.opensolaris.org/os/licensing. 103329Syz147069 * See the License for the specific language governing permissions 113329Syz147069 * and limitations under the License. 123329Syz147069 * 133329Syz147069 * When distributing Covered Code, include this CDDL HEADER in each 143329Syz147069 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 153329Syz147069 * If applicable, add the following below this CDDL HEADER, with the 163329Syz147069 * fields enclosed by brackets "[]" replaced with your own identifying 173329Syz147069 * information: Portions Copyright [yyyy] [name of copyright owner] 183329Syz147069 * 193329Syz147069 * CDDL HEADER END 203329Syz147069 */ 213329Syz147069 /* 22*7232Slc152243 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 233329Syz147069 * Use is subject to license terms. 243329Syz147069 */ 253329Syz147069 263329Syz147069 #ifndef _SYS_USB_USBVC_H 273329Syz147069 #define _SYS_USB_USBVC_H 283329Syz147069 293329Syz147069 303329Syz147069 #ifdef __cplusplus 313329Syz147069 extern "C" { 323329Syz147069 #endif 333329Syz147069 343329Syz147069 /* Video interface class code */ 353329Syz147069 #define CC_VIDEO 0x0e 363329Syz147069 373329Syz147069 /* Video interface subclass code */ 383329Syz147069 #define SC_UNDEFINED 0x00 393329Syz147069 #define SC_VIDEOCONTROL 0x01 403329Syz147069 #define SC_VIDEOSTREAMING 0x02 413329Syz147069 #define SC_VIDEO_INTERFACE_COLLECTION 0x03 423329Syz147069 433329Syz147069 #define PC_PROTOCOL_UNDEFINED 0x00 443329Syz147069 453329Syz147069 /* Video class specific interface descriptor types */ 463329Syz147069 #define CS_UNDEFINED 0x20 473329Syz147069 #define CS_DEVICE 0x21 483329Syz147069 #define CS_CONFIGURATION 0x22 493329Syz147069 #define CS_STRING 0x23 503329Syz147069 #define CS_INTERFACE 0x24 513329Syz147069 #define CS_ENDPOINT 0x25 523329Syz147069 533329Syz147069 /* Video class specific, video control interface descriptor subtypes */ 543329Syz147069 #define VC_DESCRIPTOR_UNDEFINED 0x00 553329Syz147069 #define VC_HEADER 0x01 563329Syz147069 #define VC_INPUT_TERMINAL 0x02 573329Syz147069 #define VC_OUTPUT_TERMINAL 0x03 583329Syz147069 #define VC_SELECTOR_UNIT 0x04 593329Syz147069 #define VC_PROCESSING_UNIT 0x05 603329Syz147069 #define VC_EXTENSION_UNIT 0x06 613329Syz147069 623329Syz147069 /* Video class specific, video stream interface descriptor subtypes */ 633329Syz147069 #define VS_UNDEFINED 0x00 643329Syz147069 #define VS_INPUT_HEADER 0x01 653329Syz147069 #define VS_OUTPUT_HEADER 0x02 663329Syz147069 #define VS_STILL_IMAGE_FRAME 0x03 673329Syz147069 #define VS_FORMAT_UNCOMPRESSED 0x04 683329Syz147069 #define VS_FRAME_UNCOMPRESSED 0x05 693329Syz147069 #define VS_FORMAT_MJPEG 0x06 703329Syz147069 #define VS_FRAME_MJPEG 0x07 713329Syz147069 #define VS_FORMAT_MPEG2TS 0x0a 723329Syz147069 #define VS_FORMAT_DV 0x0c 733329Syz147069 #define VS_COLORFORMAT 0x0d 743329Syz147069 #define VS_FORMAT_FRAME_BASED 0x10 753329Syz147069 #define VS_FRAME_FRAME_BASED 0x11 763329Syz147069 #define VS_FORMAT_STREAM_BASED 0x12 773329Syz147069 783329Syz147069 /* Endpoint type */ 793329Syz147069 #define EP_UNDEFINED 0x00 803329Syz147069 #define EP_GENERAL 0x01 813329Syz147069 #define EP_ENDPOINT 0x02 823329Syz147069 #define EP_INTERRUPT 0x03 833329Syz147069 843329Syz147069 /* Request codes, bRequest */ 853329Syz147069 #define RC_UNDEFINED 0x00 863329Syz147069 #define SET_CUR 0x01 873329Syz147069 #define GET_CUR 0x81 883329Syz147069 #define GET_MIN 0x82 893329Syz147069 #define GET_MAX 0x83 903329Syz147069 #define GET_RES 0x84 913329Syz147069 #define GET_LEN 0x85 923329Syz147069 #define GET_INFO 0x86 933329Syz147069 #define GET_DEF 0x87 943329Syz147069 953329Syz147069 /* Control types of Video Control interface */ 963329Syz147069 #define VC_CONTROL_UNDEFINED 0x00 973329Syz147069 #define VC_VIDEO_POWER_MODE_CONTROL 0x01 983329Syz147069 #define VC_REQUEST_ERROR_CODE_CONTROL 0x02 993329Syz147069 1003329Syz147069 /* Terminal controls */ 1013329Syz147069 #define TE_CONTROL_UNDEFINED 0x00 1023329Syz147069 1033329Syz147069 /* Selector Unit controls */ 1043329Syz147069 #define SU_CONTROL_UNDEFINED 0x00 1053329Syz147069 #define SU_INPUT_SELECT_CONTROL 0x01 1063329Syz147069 1073329Syz147069 /* Camera Terminal controls */ 1083329Syz147069 #define CT_CONTROL_UNDEFINED 0x00 1093329Syz147069 #define CT_SCANNING_MODE_CONTROL 0x01 1103329Syz147069 #define CT_AE_MODE_CONTROL 0x02 1113329Syz147069 #define CT_AE_PRIORITY_CONTROL 0x03 1123329Syz147069 #define CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x04 1133329Syz147069 #define CT_EXPOSURE_TIME_RELATIVE_CONTROL 0x05 1143329Syz147069 #define CT_FOCUS_ABSOLUTE_CONTROL 0x06 1153329Syz147069 #define CT_FOCUS_RELATIVE_CONTROL 0x07 1163329Syz147069 #define CT_FOCUS_AUTO_CONTROL 0x08 1173329Syz147069 #define CT_IRIS_ABSOLUTE_CONTROL 0x09 1183329Syz147069 #define CT_IRIS_RELATIVE_CONTROL 0x0a 1193329Syz147069 #define CT_ZOOM_ABSOLUTE_CONTROL 0x0b 1203329Syz147069 #define CT_ZOOM_RELATIVE_CONTROL 0x0c 1213329Syz147069 #define CT_PANTILT_ABSOLUTE_CONTROL 0x0d 1223329Syz147069 #define CT_PANTILT_RELATIVE_CONTROL 0x0e 1233329Syz147069 #define CT_ROLL_ABSOLUTE_CONTROL 0x0f 1243329Syz147069 #define CT_ROLL_RELATIVE_CONTROL 0x10 1253329Syz147069 #define CT_PRIVACY_CONTROL 0x11 1263329Syz147069 1273329Syz147069 /* Processing Unit controls */ 1283329Syz147069 #define PU_CONTROL_UNDEFINED 0x00 1293329Syz147069 #define PU_BACKLIGHT_COMPENSATION_CONTROL 0x01 1303329Syz147069 #define PU_BRIGHTNESS_CONTROL 0x02 1313329Syz147069 #define PU_CONTRAST_CONTROL 0x03 1323329Syz147069 #define PU_GAIN_CONTROL 0x04 1333329Syz147069 #define PU_POWER_LINE_FREQUENCY_CONTROL 0x05 1343329Syz147069 #define PU_HUE_CONTROL 0x06 1353329Syz147069 #define PU_SATURATION_CONTROL 0x07 1363329Syz147069 #define PU_SHARPNESS_CONTROL 0x08 1373329Syz147069 #define PU_GAMMA_CONTROL 0x09 1383329Syz147069 #define PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x0a 1393329Syz147069 #define PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x0b 1403329Syz147069 #define PU_WHITE_BALANCE_COMPONENT_CONTROL 0x0c 1413329Syz147069 #define PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x0d 1423329Syz147069 #define PU_DIGITAL_MULTIPLIER_CONTROL 0x0e 1433329Syz147069 #define PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x0f 1443329Syz147069 #define PU_HUE_AUTO_CONTROL 0x10 1453329Syz147069 #define PU_ANALOG_VIDEO_STANDARD_CONTROL 0x11 1463329Syz147069 #define PU_ANALOG_LOCK_STATUS_CONTROL 0x12 1473329Syz147069 1483329Syz147069 /* VideoStreaming interface controls, wValue */ 1493329Syz147069 #define VS_CONTROL_UNDEFINED 0x00 1503329Syz147069 #define VS_PROBE_CONTROL 0x01 1513329Syz147069 #define VS_COMMIT_CONTROL 0x02 1523329Syz147069 #define VS_STILL_PROBE_CONTROL 0x03 1533329Syz147069 #define VS_STILL_COMMIT_CONTROL 0x04 1543329Syz147069 #define VS_STILL_IMAGE_TRIGGER_CONTROL 0x05 1553329Syz147069 #define VS_STREAM_ERROR_CODE_CONTROL 0x06 1563329Syz147069 #define VS_GENERATE_KEY_FRAME_CONTROL 0x07 1573329Syz147069 #define VS_UPDATE_FRAME_SEGMENT_CONTROL 0x08 1583329Syz147069 #define VS_SYNC_DELAY_CONTROL 0x09 1593329Syz147069 1603329Syz147069 /* bmRequestType */ 1613329Syz147069 #define USBVC_SET_IF 0x21; 1623329Syz147069 #define USBVC_GET_IF 0xA1; 1633329Syz147069 #define USBVC_SET_EP 0x22; 1643329Syz147069 #define USBVC_GET_EP 0xA2; 1653329Syz147069 1663329Syz147069 /* Terminal types */ 1673329Syz147069 #define TT_VENDOR_SPECIFIC 0x0100 1683329Syz147069 #define TT_STREAMING 0x0101 1693329Syz147069 1703329Syz147069 /* Input Terminal types */ 1713329Syz147069 #define ITT_VENDOR_SPECIFIC 0x0200 1723329Syz147069 #define ITT_CAMERA 0x0201 1733329Syz147069 #define ITT_MEDIA_TRANSPORT_INPUT 0x0202 1743329Syz147069 1753329Syz147069 /* Output Terminal types */ 1763329Syz147069 #define OTT_VENDOR_SPECIFIC 0x0300 1773329Syz147069 #define OTT_DISPLAY 0x0301 1783329Syz147069 #define OTT_MEDIA_TRANSPORT_OUTPUT 0x0302 1793329Syz147069 1803329Syz147069 /* External terminal types */ 1813329Syz147069 #define EXTERNAL_VENDOR_SPECIFIC 0x0400 1823329Syz147069 #define COMPOSITE_CONNECTOR 0x0401 1833329Syz147069 #define SVIDEO_CONNECTOR 0x0402 1843329Syz147069 #define COMPONENT_CONNECTOR 0x0403 1853329Syz147069 1863329Syz147069 /* 1873329Syz147069 * usb video class descriptors 1883329Syz147069 */ 1893329Syz147069 1903329Syz147069 /* usb video class, video control interface, header descriptor */ 1913329Syz147069 typedef struct usbvc_vc_header_descr { 1923329Syz147069 uint8_t bLength; 1933329Syz147069 uint8_t bDescriptorType; 1943329Syz147069 uint8_t bDescriptorSubtype; 1953329Syz147069 uint8_t bcdUVC[2]; 1963329Syz147069 uint8_t wTotalLength[2]; 1973329Syz147069 uint8_t dwClockFrequency[4]; 1983329Syz147069 1993329Syz147069 /* Number of stream interfaces belong to this VC interface */ 2003329Syz147069 uint8_t bInCollection; 2013329Syz147069 } usbvc_vc_header_descr_t; 2023329Syz147069 2033329Syz147069 typedef struct usbvc_vc_header { 2043329Syz147069 usbvc_vc_header_descr_t *descr; 2053329Syz147069 2063329Syz147069 /* there might be multiple stream interface numbers */ 2073329Syz147069 uint8_t *baInterfaceNr; 2083329Syz147069 } usbvc_vc_header_t; 2093329Syz147069 2103329Syz147069 /* unit descriptor for all the three kinds of units */ 2113329Syz147069 typedef struct usbvc_unit_descr { 2123329Syz147069 uint8_t bLength; 2133329Syz147069 uint8_t bDescriptorType; 2143329Syz147069 uint8_t bDescriptorSubType; 2153329Syz147069 uint8_t bUnitID; 2163329Syz147069 2173329Syz147069 union { 2183329Syz147069 struct { 2193329Syz147069 uint8_t bSourceID; 2203329Syz147069 uint8_t wMaxMultiplier[2]; 2213329Syz147069 uint8_t bControlSize; 2223329Syz147069 } processing; 2233329Syz147069 2243329Syz147069 struct { 2253329Syz147069 uint8_t bNrInPins; 2263329Syz147069 } selector; 2273329Syz147069 2283329Syz147069 struct { 2293329Syz147069 uint8_t guidExtensionCode[16]; 2303329Syz147069 uint8_t bNumControls; 2313329Syz147069 uint8_t bNrInPins; 2323329Syz147069 } extension; 2333329Syz147069 } unit; 2343329Syz147069 } usbvc_unit_descr_t; 2353329Syz147069 2363329Syz147069 typedef struct usbvc_units { 2373329Syz147069 /* Point to cvs_buf, for most elements of unit descriptor */ 2383329Syz147069 usbvc_unit_descr_t *descr; 2393329Syz147069 2403329Syz147069 uint8_t *bmControls; /* for processing or extention unit */ 2413329Syz147069 uint8_t *baSourceID; /* for selector or extention unit */ 2423329Syz147069 uint8_t iSelector; /* for selector unit */ 2433329Syz147069 uint8_t iProcessing; /* for processing unit */ 2443329Syz147069 uint8_t bmVideoStandards; /* for processing unit */ 2453329Syz147069 uint8_t bControlSize; /* for extention unit */ 2463329Syz147069 uint8_t iExtension; /* for extention unit */ 2473329Syz147069 list_node_t unit_node; 2483329Syz147069 } usbvc_units_t; 2493329Syz147069 2503329Syz147069 /* Terminal descriptor for all the three kinds of video terminals */ 2513329Syz147069 typedef struct usbvc_term_descr { 2523329Syz147069 uint8_t bLength; 2533329Syz147069 uint8_t bDescriptorType; 2543329Syz147069 uint8_t bDescriptorSubType; 2553329Syz147069 uint8_t bTerminalID; 2563329Syz147069 uint16_t wTerminalType; 2573329Syz147069 uint8_t AssocTerminal; 2583329Syz147069 2593329Syz147069 union { 2603329Syz147069 struct { 2613329Syz147069 uint8_t iTerminal; 2623329Syz147069 } input; 2633329Syz147069 2643329Syz147069 struct { 2653329Syz147069 uint8_t bSourceID; 2663329Syz147069 uint8_t iTerminal; 2673329Syz147069 } output; 2683329Syz147069 2693329Syz147069 struct { 2703329Syz147069 uint8_t iTerminal; 2713329Syz147069 uint16_t wObjectiveFocalLengthMin; 2723329Syz147069 uint16_t wObjectiveFocalLengthMax; 2733329Syz147069 uint16_t wOcularFocalLength; 2743329Syz147069 uint8_t bControlSize; 2753329Syz147069 } camera; 2763329Syz147069 }term; 2773329Syz147069 } usbvc_term_descr_t; 2783329Syz147069 2793329Syz147069 typedef struct usbvc_terms { 2803329Syz147069 usbvc_term_descr_t *descr; /* interfaces for this cfg */ 2813329Syz147069 2823329Syz147069 /* for input or output terminals, excluding camera terminals */ 2833329Syz147069 uint8_t *bSpecific; 2843329Syz147069 2853329Syz147069 uint8_t *bmControls; /* for camera terminals only */ 2863329Syz147069 list_node_t term_node; 2873329Syz147069 } usbvc_terms_t; 2883329Syz147069 2893329Syz147069 /* 2903329Syz147069 * Stream interface descriptors 2913329Syz147069 */ 2923329Syz147069 2933329Syz147069 /* input header descriptor */ 2943329Syz147069 typedef struct usbvc_input_header_descr { 2953329Syz147069 uint8_t bLength; 2963329Syz147069 uint8_t bDescriptorType; 2973329Syz147069 uint8_t bDescriptorSubType; 2983329Syz147069 uint8_t bNumFormats; 2993329Syz147069 uint16_t wTotalLength; 3003329Syz147069 uint8_t bEndpointAddress; 3013329Syz147069 uint8_t bmInfo; 3023329Syz147069 uint8_t bTerminalLink; 3033329Syz147069 uint8_t bStillCaptureMethod; 3043329Syz147069 uint8_t bTriggerSupport; 3053329Syz147069 uint8_t bTriggerUsage; 3063329Syz147069 uint8_t bControlSize; 3073329Syz147069 } usbvc_input_header_descr_t; 3083329Syz147069 3093329Syz147069 /* UVC Spec: only one input header in one stream interface */ 3103329Syz147069 typedef struct usbvc_input_header { 3113329Syz147069 usbvc_input_header_descr_t *descr; 3123329Syz147069 uint8_t *bmaControls; 3133329Syz147069 } usbvc_input_header_t; 3143329Syz147069 3153329Syz147069 /* Do not support output video device at present */ 3163329Syz147069 typedef struct usbvc_output_header_descr { 3173329Syz147069 uint8_t bLength; 3183329Syz147069 uint8_t bDescriptorType; 3193329Syz147069 uint8_t bDescriptorSubType; 3203329Syz147069 uint8_t bNumFormats; 3213329Syz147069 uint16_t wTotalLength; 3223329Syz147069 uint8_t bEndpointAddress; 3233329Syz147069 uint8_t bTerminalLink; 3243329Syz147069 uint8_t bControlSize; 3253329Syz147069 } usbvc_output_header_descr_t; 3263329Syz147069 3273329Syz147069 typedef struct usbvc_output_header { 3283329Syz147069 usbvc_output_header_descr_t *descr; 3293329Syz147069 uint8_t *bmaControls; 3303329Syz147069 } usbvc_output_header_t; 3313329Syz147069 3323329Syz147069 /* 3333329Syz147069 * Except bDescriptorSubType value, MJPEG and uncompressed frame descriptor are 3343329Syz147069 * all the same. So share one structure. 3353329Syz147069 */ 3363329Syz147069 typedef struct usbvc_frame_descr { 3373329Syz147069 uint8_t bLength; 3383329Syz147069 uint8_t bDescriptorType; 3393329Syz147069 uint8_t bDescriptorSubType; 3403329Syz147069 uint8_t bFrameIndex; 3413329Syz147069 uint8_t bmCapabilities; 3423329Syz147069 uint8_t wWidth[2]; 3433329Syz147069 uint8_t wHeight[2]; 3443329Syz147069 uint8_t dwMinBitRate[4]; 3453329Syz147069 uint8_t dwMaxBitRate[4]; 3463329Syz147069 uint8_t dwMaxVideoFrameBufferSize[4]; 3473329Syz147069 uint8_t dwDefaultFrameInterval[4]; 3483329Syz147069 uint8_t bFrameIntervalType; 3493329Syz147069 } usbvc_frame_descr_t; 3503329Syz147069 3513329Syz147069 /* 3523329Syz147069 * There may be several frame descriptors immediately follow a format 3533329Syz147069 * descriptor. 3543329Syz147069 */ 3553329Syz147069 typedef struct usbvc_frames { 3563329Syz147069 usbvc_frame_descr_t *descr; 3573329Syz147069 uint32_t dwMinFrameInterval; /* for continuous frame intervals */ 3583329Syz147069 uint32_t dwMaxFrameInterval; /* for continuous frame intervals */ 3593329Syz147069 uint32_t dwFrameIntervalStep; /* for continuous frame intervals */ 360*7232Slc152243 uint8_t *dwFrameInterval; /* for discrete frame intervals */ 3613329Syz147069 } usbvc_frames_t; 3623329Syz147069 3633329Syz147069 /* The first several fixed length fields of still image frame descriptor */ 3643329Syz147069 typedef struct usbvc_still_image_frame_descr { 3653329Syz147069 uint8_t bLength; 3663329Syz147069 uint8_t bDescriptorType; 3673329Syz147069 uint8_t bDescriptorSubType; 3683329Syz147069 uint8_t bEndpointAddress; 3693329Syz147069 uint8_t bNumImageSizePatterns; 3703329Syz147069 } usbvc_still_image_frame_descr_t; 3713329Syz147069 3723329Syz147069 /* 3733329Syz147069 * Width and Hight of the still image. 3743329Syz147069 * There might be multiple such value pairs in one still image frame descr. 3753329Syz147069 */ 3763329Syz147069 typedef struct width_height { 3773329Syz147069 uint16_t wWidth; 3783329Syz147069 uint16_t wHeight; 3793329Syz147069 } width_height_t; 3803329Syz147069 3813329Syz147069 /* 3823329Syz147069 * The whole still image frame descriptor. 3833329Syz147069 * UVC Spec: only one still image descriptor for each format group. 3843329Syz147069 */ 3853329Syz147069 typedef struct usbvc_still_image_frame { 3863329Syz147069 usbvc_still_image_frame_descr_t *descr; 3873329Syz147069 width_height_t *width_height; 3883329Syz147069 uint8_t bNumCompressionPattern; 3893329Syz147069 uint8_t *bCompression; 3903329Syz147069 } usbvc_still_image_frame_t; 3913329Syz147069 3923329Syz147069 /* 3933329Syz147069 * All fields of this descr are fixed length. 3943329Syz147069 * UVC Spec: only one color_matching_descr is allowed for a given format. 3953329Syz147069 */ 3963329Syz147069 typedef struct usbvc_color_matching_descr { 3973329Syz147069 uint8_t bLength; 3983329Syz147069 uint8_t bDescriptorType; 3993329Syz147069 uint8_t bDescriptorSubtype; 4003329Syz147069 uint8_t bColorPrimaries; 4013329Syz147069 uint8_t bTransferCharacteristics; 4023329Syz147069 uint8_t bMatrixCoefficients; 4033329Syz147069 } usbvc_color_matching_descr_t; 4043329Syz147069 4053329Syz147069 /* Mjpeg and uncompressed format descriptor */ 4063329Syz147069 typedef struct usbvc_format_descr { 4073329Syz147069 uint8_t bLength; 4083329Syz147069 uint8_t bDescriptorType; 4093329Syz147069 uint8_t bDescriptorSubType; 4103329Syz147069 uint8_t bFormatIndex; 4113329Syz147069 uint8_t bNumFrameDescriptors; 4123329Syz147069 union { 4133329Syz147069 struct { 4143329Syz147069 uint8_t bmFlags; 4153329Syz147069 uint8_t bDefaultFrameIndex; 4163329Syz147069 uint8_t bAspectRatioX; 4173329Syz147069 uint8_t bAspectRatioY; 4183329Syz147069 uint8_t bmInterlaceFlags; 4193329Syz147069 uint8_t bCopyProtect; 4203329Syz147069 } mjpeg; 4213329Syz147069 4223329Syz147069 struct { 4233329Syz147069 uint8_t guidFormat[16]; 4243329Syz147069 uint8_t bBitsPerPixel; 4253329Syz147069 uint8_t bDefaultFrameIndex; 4263329Syz147069 uint8_t bAspectRatioX; 4273329Syz147069 uint8_t bAspectRatioY; 4283329Syz147069 uint8_t bmInterlaceFlags; 4293329Syz147069 uint8_t bCopyProtect; 4303329Syz147069 } uncompressed; 4313329Syz147069 }fmt; 4323329Syz147069 } usbvc_format_descr_t; 4333329Syz147069 4343329Syz147069 /* 4353329Syz147069 * usb video class requests 4363329Syz147069 */ 4373329Syz147069 typedef struct usbvc_vs_probe_commit { 4383329Syz147069 uint8_t bmHint[2]; 4393329Syz147069 uint8_t bFormatIndex; 4403329Syz147069 uint8_t bFrameIndex; 4413329Syz147069 uint8_t dwFrameInterval[4]; 4423329Syz147069 uint8_t wKeyFrameRate[2]; 4433329Syz147069 uint8_t wPFrameRate[2]; 4443329Syz147069 uint8_t wCompQuality[2]; 4453329Syz147069 uint8_t wCompWindowSize[2]; 4463329Syz147069 uint8_t wDelay[2]; 4473329Syz147069 uint8_t dwMaxVideoFrameSize[4]; 4483329Syz147069 uint8_t dwMaxPayloadTransferSize[4]; 4493329Syz147069 uint8_t wClockFrequency[4]; 4503329Syz147069 uint8_t bmFramingInfo; 4513329Syz147069 uint8_t bPreferedVersion; 4523329Syz147069 uint8_t bMinVersion; 4533329Syz147069 uint8_t bMaxVersion; 4543329Syz147069 } usbvc_vs_probe_commit_t; 4553329Syz147069 4563329Syz147069 /* Table 2-1 of a sub video class spec: "uncompressed payload spec" */ 4573329Syz147069 #define USBVC_FORMAT_GUID_YUY2 {0x59, 0x55, 0x59, 0x32, 0x00, 0x00, 0x10, \ 4583329Syz147069 0x00, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, \ 4593329Syz147069 0x9b, 0x71} 4603329Syz147069 #define USBVC_FORMAT_GUID_NV12 {0x4e, 0x56, 0x31, 0x32, 0x00, 0x00, 0x10, \ 4613329Syz147069 0x00, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, \ 4623329Syz147069 0x9b, 0x71} 4633329Syz147069 4643329Syz147069 /* Stream frame's flag bits */ 4653329Syz147069 #define USBVC_STREAM_EOF (1 << 1) 4663329Syz147069 #define USBVC_STREAM_FID (1 << 0) 4673329Syz147069 4683329Syz147069 #ifdef __cplusplus 4693329Syz147069 } 4703329Syz147069 #endif 4713329Syz147069 4723329Syz147069 #endif /* _SYS_USB_USBVC_H */ 473