summaryrefslogtreecommitdiff
path: root/usb/usbview/usbviddesc.h
diff options
context:
space:
mode:
authorDave Wilson <[email protected]>2015-03-17 19:50:07 -0700
committerDave Wilson <[email protected]>2015-03-17 19:50:07 -0700
commit97cf5197cf5b882b2c689d8dc2b555f2edf8f418 (patch)
tree46f3701832d70b420eb0fc0eb93261f9da45db3f /usb/usbview/usbviddesc.h
parentef1905bf1e8825bb31120dfb27e0daf3154d859a (diff)
Initial publish
Diffstat (limited to 'usb/usbview/usbviddesc.h')
-rw-r--r--usb/usbview/usbviddesc.h743
1 files changed, 743 insertions, 0 deletions
diff --git a/usb/usbview/usbviddesc.h b/usb/usbview/usbviddesc.h
new file mode 100644
index 00000000..a0853ea0
--- /dev/null
+++ b/usb/usbview/usbviddesc.h
@@ -0,0 +1,743 @@
+/*++
+
+Copyright (c) 2002-2003 Microsoft Corporation
+
+Module Name:
+
+ USBVIDDESC.H
+
+Abstract:
+
+ This is a header file for USB Video Class Specific descriptors which are not yet in
+ a standard system header file.
+
+Environment:
+
+ user mode
+
+Revision History:
+
+ 11-20-2002 : created
+ 03-28-2003 : major updates to support latest UVC specs
+
+--*/
+
+#pragma pack(push, 1)
+
+/*****************************************************************************
+ D E F I N E S
+*****************************************************************************/
+
+//global version for USB Video Class spec version
+#define BCDVDC 0x0083
+
+//
+// USB Device Class Definition for Video Devices v8.c
+// Appendix A. Video Device Class Codes
+//
+
+// A.1 Video Interface Class Code
+//TBD Normally would be in USB100.h but not official yet
+#define USB_DEVICE_CLASS_VIDEO 0x0E
+#define USB_DEVICE_CLASS_VIDEO_PRERELEASE 0xFF
+//CC_VIDEO in spec. The rest of the codes will be USB_VIDEO plus text from spec codes
+
+// A.2 Video Interface Subclass Codes
+//
+#define USB_VIDEO_SC_UNDEFINED 0x00
+#define USB_VIDEO_SC_VIDEOCONTROL 0x01
+#define USB_VIDEO_SC_VIDEOSTREAMING 0x02
+#define USB_VIDEO_SC_VIDEO_INTERFACE_COLLECTION 0x03
+
+// A.3 Video Interface Protocol Codes
+//
+#define USB_VIDEO_PC_PROTOCOL_UNDEFINED 0x00
+
+// A.4 Video Class-Specific Descriptor Types
+//
+#define USB_VIDEO_CS_UNDEFINED 0x20
+#define USB_VIDEO_CS_DEVICE 0x21
+#define USB_VIDEO_CS_CONFIGURATION 0x22
+#define USB_VIDEO_CS_STRING 0x23
+#define USB_VIDEO_CS_INTERFACE 0x24
+#define USB_VIDEO_CS_ENDPOINT 0x25
+
+// A.5 Video Class-Specific VC (Video Control) Interface Descriptor Subtypes
+//
+#define USB_VIDEO_VC_DESCRIPTOR_UNDEFINED 0x00
+#define USB_VIDEO_VC_HEADER 0x01
+#define USB_VIDEO_VC_INPUT_TERMINAL 0x02
+#define USB_VIDEO_VC_OUTPUT_TERMINAL 0x03
+#define USB_VIDEO_VC_SELECTOR_UNIT 0x04
+#define USB_VIDEO_VC_PROCESSING_UNIT 0x05
+#define USB_VIDEO_VC_EXTENSION_UNIT 0x06
+
+// A.6 Video Class-Specific VS (Video Streaming) Interface Descriptor Subtypes
+//
+#define USB_VIDEO_VS_UNDEFINED 0x00
+#define USB_VIDEO_VS_INPUT_HEADER 0x01
+#define USB_VIDEO_VS_OUTPUT_HEADER 0x02
+#define USB_VIDEO_VS_STILL_IMAGE_FRAME 0x03
+#define USB_VIDEO_VS_FORMAT_UNCOMPRESSED 0x04
+#define USB_VIDEO_VS_FRAME_UNCOMPRESSED 0x05
+#define USB_VIDEO_VS_FORMAT_MJPEG 0x06
+#define USB_VIDEO_VS_FRAME_MJPEG 0x07
+#define USB_VIDEO_VS_FORMAT_MPEG1 0x08
+#define USB_VIDEO_VS_FORMAT_MPEG2PS 0x09
+#define USB_VIDEO_VS_FORMAT_MPEG2TS 0x0A
+#define USB_VIDEO_VS_FORMAT_MPEG4SL 0x0B
+#define USB_VIDEO_VS_FORMAT_DV 0x0C
+#define USB_VIDEO_VS_COLORFORMAT 0x0D
+#define USB_VIDEO_VS_FORMAT_VENDOR 0x0E
+#define USB_VIDEO_VS_FRAME_VENDOR 0x0F
+
+// A.7 Video Class-Specific Endpoint Descriptor Subtypes
+//
+#define USB_VIDEO_EP_UNDEFINED 0x00
+#define USB_VIDEO_EP_GENERAL 0x01
+#define USB_VIDEO_EP_ENDPOINT 0x02
+#define USB_VIDEO_EP_INTERRUPT 0x03
+
+//
+// Below definitions only necessary if testing requests
+//
+// A.8 Video Class-Specific Request Codes
+//
+#define USB_VIDEO_RC_UNDEFINED 0x00
+#define USB_VIDEO_SET_CUR 0x01
+#define USB_VIDEO_GET_CUR 0x81
+#define USB_VIDEO_GET_MIN 0x82
+#define USB_VIDEO_GET_MAX 0x83
+#define USB_VIDEO_GET_RES 0x84
+#define USB_VIDEO_GET_LEN 0x85
+#define USB_VIDEO_GET_INFO 0x86
+#define USB_VIDEO_GET_DEF 0x87
+
+// A.9 Control Selector Codes
+// A.9.1 VideoControl Interface Control Selectors
+#define USB_VIDEO_VC_UNDEFINED_CONTROL 0x00
+#define USB_VIDEO_VC_VIDEO_POWER_MODE_CONTROL 0x01
+#define USB_VIDEO_VC_REQUEST_ERROR_CODE_CONTROL 0x02
+#define USB_VIDEO_VC_INDICATE_HOST_CLOCK_CONTROL 0x03
+
+//A.9.2 Terminal Control Selectors
+//
+#define USB_VIDEO_TE_CONTROL_UNDEFINED 0x00
+
+//A.9.3 Selector Unit Control Selectors
+//
+#define USB_VIDEO_SU_CONTROL_UNDEFINED 0x00
+#define USB_VIDEO_SU_INPUT_SELECT_CONTROL 0x01
+
+//A.9.4 Camera Terminal Control Selectors
+//
+#define USB_VIDEO_CT_CONTROL_UNDEFINED 0x00
+#define USB_VIDEO_CT_SCANNING_MODE_CONTROL 0x01
+#define USB_VIDEO_CT_AE_MODE_CONTROL 0x02
+#define USB_VIDEO_CT_AE_PRIORITY_CONTROL 0x03
+#define USB_VIDEO_CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x04
+#define USB_VIDEO_CT_EXPOSURE_TIME_RELATIVE_CONTROL 0x05
+#define USB_VIDEO_CT_FOCUS_ABSOLUTE_CONTROL 0x06
+#define USB_VIDEO_CT_FOCUS_RELATIVE_CONTROL 0x07
+#define USB_VIDEO_CT_FOCUS_AUTO_CONTROL 0x08
+#define USB_VIDEO_CT_IRIS_ABSOLUTE_CONTROL 0x09
+#define USB_VIDEO_CT_IRIS_RELATIVE_CONTROL 0x0A
+#define USB_VIDEO_CT_ZOOM_ABSOLUTE_CONTROL 0x0B
+#define USB_VIDEO_CT_ZOOM_RELATIVE_CONTROL 0x0C
+#define USB_VIDEO_CT_PANTILT_ABSOLUTE_CONTROL 0x0D
+#define USB_VIDEO_CT_PANTILT_RELATIVE_CONTROL 0x0E
+#define USB_VIDEO_CT_ROLL_ABSOLUTE_CONTROL 0x0F
+#define USB_VIDEO_CT_ROLL_RELATIVE_CONTROL 0x10
+
+//A.9.5 Processing Unit Control Selectors
+//
+#define USB_VIDEO_PU_CONTROL_UNDEFINED 0x04
+#define USB_VIDEO_PU_BACKLIGHT_COMPENSATION_CONTROL 0x01
+#define USB_VIDEO_PU_BRIGHTNESS_CONTROL 0x02
+#define USB_VIDEO_PU_CONTRAST_CONTROL 0x03
+#define USB_VIDEO_PU_GAIN_CONTROL 0x04
+#define USB_VIDEO_PU_POWER_LINE_FREQUENCY_CONTROL 0x05
+#define USB_VIDEO_PU_HUE_CONTROL 0x06
+#define USB_VIDEO_PU_SATURATION_CONTROL 0x07
+#define USB_VIDEO_PU_SHARPNESS_CONTROL 0x08
+#define USB_VIDEO_PU_GAMMA_CONTROL 0x09
+#define USB_VIDEO_PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x0A
+#define USB_VIDEO_PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x0B
+#define USB_VIDEO_PU_WHITE_BALANCE_COMPONENT_CONTROL 0x0C
+#define USB_VIDEO_PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x0D
+#define USB_VIDEO_PU_DIGITAL_MULTIPLIER_CONTROL 0x0E
+#define USB_VIDEO_PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x0F
+#define USB_VIDEO_PU_HUE_AUTO_CONTROL 0x10
+
+//A.9.6 Extension Unit Control Selectors
+//
+#define USB_VIDEO_XU_CONTROL_UNDEFINED 0x00
+
+//A.9.7 VideoStreaming Interface Control Selectors
+//
+#define USB_VIDEO_VS_CONTROL_UNDEFINED 0x00
+#define USB_VIDEO_VS_PROBE_CONTROL 0x01
+#define USB_VIDEO_VS_COMMIT_CONTROL 0x02
+#define USB_VIDEO_VS_STILL_PROBE_CONTROL 0x03
+#define USB_VIDEO_VS_STILL_COMMIT_CONTROL 0x04
+#define USB_VIDEO_VS_STILL_IMAGE_TRIGGER_CONTROL 0x05
+#define USB_VIDEO_VS_STREAM_ERROR_CODE_CONTROL 0x06
+#define USB_VIDEO_VS_GENERATE_KEY_FRAME_CONTROL 0x07
+#define USB_VIDEO_VS_UPDATE_FRAME_SEGMENT_CONTROL 0x08
+#define USB_VIDEO_VS_SYNCH_DELAY_CONTROL 0x09
+
+#define TapeControls 0
+#define TransportModes 1
+#define CameraControls 2
+#define ProcessorControls 3
+#define InHeaderControls 4
+
+/*****************************************************************************
+ T Y P E D E F S
+*****************************************************************************/
+
+
+/*****************************************************************************
+ USB Device Class Definition for Video Devices v8.b
+*****************************************************************************/
+
+typedef struct _USB_VIDEO_COMMON_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+} USB_VIDEO_COMMON_DESCRIPTOR,
+*PUSB_VIDEO_COMMON_DESCRIPTOR;
+
+// 3.6.2 Class-Specific VC (Video Control) Interface Descriptor
+//
+typedef struct _USB_VIDEO_VC_INTERFACE_HEADER_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ USHORT bcdVDC;
+ USHORT wTotalLength;
+ ULONG32 dwClockFrequency;
+ UCHAR bInCollection;
+// UCHAR baInterfaceNr; // variable length (0 minimum)
+} USB_VIDEO_VC_INTERFACE_HEADER_DESCRIPTOR,
+*PUSB_VIDEO_VC_INTERFACE_HEADER_DESCRIPTOR;
+
+// 3.6.2.1 Input Terminal Descriptor
+//
+typedef struct _USB_VIDEO_INPUT_TERMINAL_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bTerminalID;
+ USHORT wTerminalType;
+ UCHAR bAssocTerminal;
+ UCHAR iTerminal;
+} USB_VIDEO_INPUT_TERMINAL_DESCRIPTOR,
+*PUSB_VIDEO_INPUT_TERMINAL_DESCRIPTOR;
+
+// 3.6.2.2 Output Terminal Descriptor
+//
+typedef struct _USB_VIDEO_OUTPUT_TERMINAL_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bTerminalID;
+ USHORT wTerminalType;
+ UCHAR bAssocTerminal;
+ UCHAR bSourceID;
+ UCHAR iTerminal;
+} USB_VIDEO_OUTPUT_TERMINAL_DESCRIPTOR,
+*PUSB_VIDEO_OUTPUT_TERMINAL_DESCRIPTOR;
+
+// 3.6.2.3 Camera Unit Descriptor
+//
+typedef struct _USB_VIDEO_CAMERA_TERMINAL_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bTerminalID;
+ USHORT wTerminalType;
+ UCHAR bAssocTerminal;
+ UCHAR iTerminal;
+ USHORT wObjectiveFocalLengthMin;
+ USHORT wObjectiveFocalLengthMax;
+ USHORT wOcularFocalLength;
+ UCHAR bControlSize;
+// UCHAR bmControls; // variable length (0 min, 3 max)
+} USB_VIDEO_CAMERA_TERMINAL_DESCRIPTOR,
+*PUSB_VIDEO_CAMERA_TERMINAL_DESCRIPTOR;
+
+// 3.6.2.4 Selector Unit Descriptor
+//
+typedef struct _USB_VIDEO_SELECTOR_UNIT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bUnitID;
+ UCHAR bNrInPins;
+ UCHAR baSourceID; // variable length (1 minimum)
+ UCHAR iSelector;
+} USB_VIDEO_SELECTOR_UNIT_DESCRIPTOR,
+*PUSB_VIDEO_SELECTOR_UNIT_DESCRIPTOR;
+
+// 3.6.2.5 Processing Unit Descriptor
+//
+typedef struct _USB_VIDEO_PROCESSING_UNIT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bUnitID;
+ UCHAR bSourceID;
+ USHORT wMaxMultiplier;
+ UCHAR bControlSize;
+// UCHAR bmControls; // variable length (0 minimum)
+ UCHAR iProcessing;
+} USB_VIDEO_PROCESSING_UNIT_DESCRIPTOR,
+*PUSB_VIDEO_PROCESSING_UNIT_DESCRIPTOR;
+
+// 3.6.2.6 Extension Unit Descriptor
+//
+typedef struct _USB_VIDEO_EXTENSION_UNIT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bUnitID;
+ GUID guidExtensionCode;
+ UCHAR bNumControls;
+ UCHAR bNrInPins;
+ UCHAR baSourceID; // variable length (1 minimum)
+// UCHAR bControlSize;
+// UCHAR bmControls; // variable length (0 minimum)
+// UCHAR iExtension;
+} USB_VIDEO_EXTENSION_UNIT_DESCRIPTOR,
+*PUSB_VIDEO_EXTENSION_UNIT_DESCRIPTOR;
+
+// 3.7.2.2 Class-Specific VC Interrupt EndPoint Descriptor
+//
+typedef struct _USB_VIDEO_VC_INTERRUPT_ENDPOINT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubType;
+ USHORT wMaxTransferSize;
+} USB_VIDEO_VC_INTERRUPT_ENDPOINT_DESCRIPTOR,
+*PUSB_VIDEO_VC_INTERRUPT_ENDPOINT_DESCRIPTOR;
+// 3.8.2.1 Class-Specific Input Header Descriptor
+//
+typedef struct _USB_VIDEO_INPUT_HEADER_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bNumFormats;
+ USHORT wTotalLength;
+ UCHAR bEndpointAddress;
+ UCHAR bmInfo;
+ UCHAR bTerminalLink;
+ UCHAR bStillCaptureMethod;
+ UCHAR bTriggerSupport;
+ UCHAR bTriggerUsage;
+ UCHAR bControlSize;
+// UCHAR bmaControls; // variable length (0 minimum)
+} USB_VIDEO_INPUT_HEADER_DESCRIPTOR,
+*PUSB_VIDEO_INPUT_HEADER_DESCRIPTOR;
+
+// 3.8.2.2 Class-Specific Output Header Descriptor
+//
+typedef struct _USB_VIDEO_OUTPUT_HEADER_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bNumFormats;
+ USHORT wTotalLength;
+ UCHAR bEndpointAddress;
+ UCHAR bTerminalLink;
+} USB_VIDEO_OUTPUT_HEADER_DESCRIPTOR,
+*PUSB_VIDEO_OUTPUT_HEADER_DESCRIPTOR;
+
+// 3.8.2.3 Payload Format Descriptors
+//Payload Format Descriptor Document
+//Uncompressed Video DWGVideo Payload Uncompressed 0.xx.doc
+//MJPEG Video DWGVideo Payload MJPEG Format Ver0.xx.doc
+//MPEG1 System Stream DWGVideo Payload MPEG1 System Stream, MPEG2-PS Format Ver0.xx.doc
+//MPEG2 PS DWGVideo Payload MPEG1 System Stream, MPEG2-PS Format Ver0.xx.doc
+//MPEG-2 TS DWGVideo Payload MPEG2TS Format Ver0.xx.doc
+//MPEG-4 SL DWGVideo Payload MPEG4 SL format Ver0.xx.doc
+//DV DWGVideo Payload DV Format Ver0.xx.doc
+
+// 3.8.2.4 Video Frame Descriptor
+//
+//Video Frame Descriptor Document
+//Uncompressed DWGVideo Payload Uncompressed 0.xx.doc
+//MJPEG DWGVideo Payload MJPEG Format Ver0.xx.doc
+
+// 3.8.2.5 Still Image Frame Descriptor
+//
+typedef struct _VIDEO_STILL_IMAGE {
+ USHORT wWidth;
+ USHORT wHeight;
+} VIDEO_STILL_IMAGE,
+*PVIDEO_STILL_IMAGE;
+
+typedef struct _USB_VIDEO_STILL_IMAGE_FRAME_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bEndpointAddress;
+ UCHAR bNumImageSizePatterns;
+ VIDEO_STILL_IMAGE dwStillImage; // variable count
+ UCHAR bNumCompressionPattern;
+ UCHAR bCompression; // variable count
+} USB_VIDEO_STILL_IMAGE_FRAME_DESCRIPTOR,
+*PUSB_VIDEO_STILL_IMAGE_FRAME_DESCRIPTOR;
+
+// 3.8.2.6 Color Matching Descriptor
+//
+typedef struct _USB_VIDEO_COLOR_MATCHING_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bColorPrimaries;
+ UCHAR bTransferCharacteristics;
+ UCHAR bMatrixCoefficients;
+} USB_VIDEO_COLOR_MATCHING_DESCRIPTOR,
+*PUSB_VIDEO_COLOR_MATCHING_DESCRIPTOR;
+/*
+// 3.9.1 Class-specific VC Interrupt Endpoint Descriptor
+typedef struct _USB_VIDEO_VS_ENDPOINT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubType;
+ USHORT wMaxTransferSize;
+} USB_VIDEO_VS_ENDPOINT_DESCRIPTOR,
+*PUSB_VIDEO_VS_ENDPOINT_DESCRIPTOR;
+*/
+//
+// USB Device Class Definition for Video Devices: Uncompressed Payload 0.8a Draft Revision
+//
+
+// 3.1.1 Uncompressed Video Format Descriptor
+//
+typedef struct _USB_VIDEO_UNCOMPRESSED_FORMAT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bFormatIndex;
+ UCHAR bNumFrameDescriptors;
+ GUID guidFormat;
+ UCHAR bBitsPerPixel;
+ UCHAR bDefaultFrameIndex;
+ UCHAR bAspectRatioX;
+ UCHAR bAspectRatioY;
+ UCHAR bmInterlaceFlags;
+ UCHAR bCopyProtect;
+} USB_VIDEO_UNCOMPRESSED_FORMAT_DESCRIPTOR,
+*PUSB_VIDEO_UNCOMPRESSED_FORMAT_DESCRIPTOR;
+
+// 3.1.2 Uncompressed Video Frame Descriptor Common
+//
+typedef struct _USB_VIDEO_UNCOMPRESSED_FRAME_DESCRIPTOR_COMMON {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bFrameIndex;
+ UCHAR bmCapabilities;
+ USHORT wWidth;
+ USHORT wHeight;
+ ULONG32 dwMinBitRate;
+ ULONG32 dwMaxBitRate;
+ ULONG32 dwMaxVideoFrameBufferSize;
+ ULONG32 dwDefaultFrameInterval;
+ UCHAR bFrameIntervalType;
+} USB_VIDEO_UNCOMPRESSED_FRAME_DESCRIPTOR_COMMON,
+*PUSB_VIDEO_UNCOMPRESSED_FRAME_DESCRIPTOR_COMMON;
+
+// 3.1.2 Uncompressed Video Frame Descriptor - Continuous
+//
+typedef struct _USB_VIDEO_UNCOMPRESSED_FRAME_DESCRIPTOR_CONTINUOUS {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bFrameIndex;
+ UCHAR bmCapabilities;
+ USHORT wWidth;
+ USHORT wHeight;
+ ULONG32 dwMinBitRate;
+ ULONG32 dwMaxBitRate;
+ ULONG32 dwMaxVideoFrameBufferSize;
+ ULONG32 dwDefaultFrameInterval;
+ UCHAR bFrameIntervalType;
+ ULONG32 dwMinFrameInterval;
+ ULONG32 dwMaxFrameInterval;
+ ULONG32 dwFrameIntervalStep;
+} USB_VIDEO_UNCOMPRESSED_FRAME_DESCRIPTOR_CONTINUOUS,
+*PUSB_VIDEO_UNCOMPRESSED_FRAME_DESCRIPTOR_CONTINUOUS;
+
+// 3.1.2 Uncompressed Video Frame Descriptor - Discrete
+//
+typedef struct _USB_VIDEO_UNCOMPRESSED_FRAME_DESCRIPTOR_DISCRETE {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bFrameIndex;
+ UCHAR bmCapabilities;
+ USHORT wWidth;
+ USHORT wHeight;
+ ULONG32 dwMinBitRate;
+ ULONG32 dwMaxBitRate;
+ ULONG32 dwMaxVideoFrameBufferSize;
+ ULONG32 dwDefaultFrameInterval;
+ UCHAR bFrameIntervalType;
+ ULONG32 dwFrameInterval; // variable count
+} USB_VIDEO_UNCOMPRESSED_FRAME_DESCRIPTOR_DISCRETE,
+*PUSB_VIDEO_UNCOMPRESSED_FRAME_DESCRIPTOR_DISCRETE;
+
+//
+// USB Device Class Definition for Video Devices: Motion-JPEG Payload 0.8a Draft Revision
+// 3.1.1 MJPEG Video Format Descriptor
+//
+typedef struct _USB_VIDEO_MJPEG_FORMAT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bFormatIndex;
+ UCHAR bNumFrameDescriptors;
+ UCHAR bmFlags;
+ UCHAR bDefaultFrameIndex;
+ UCHAR bAspectRatioX;
+ UCHAR bAspectRatioY;
+ UCHAR bmInterlaceFlags;
+ UCHAR bCopyProtect;
+} USB_VIDEO_MJPEG_FORMAT_DESCRIPTOR,
+*PUSB_VIDEO_MJPEG_FORMAT_DESCRIPTOR;
+
+// 3.1.2 MJPEG Video Frame Descriptors Common
+//
+typedef struct _USB_VIDEO_MJPEG_FRAME_DESCRIPTOR_COMMON {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bFrameIndex;
+ UCHAR bmCapabilities;
+ USHORT wWidth;
+ USHORT wHeight;
+ ULONG32 dwMinBitRate;
+ ULONG32 dwMaxBitRate;
+ ULONG32 dwMaxVideoFrameBufferSize;
+ ULONG32 dwDefaultFrameInterval;
+ UCHAR bFrameIntervalType;
+} USB_VIDEO_MJPEG_FRAME_DESCRIPTOR_COMMON,
+*PUSB_VIDEO_MJPEG_FRAME_DESCRIPTOR_COMMON;
+
+// 3.1.2 MJPEG Video Frame Descriptors - Continuous
+//
+typedef struct _USB_VIDEO_MJPEG_FRAME_DESCRIPTOR_CONTINUOUS {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bFrameIndex;
+ UCHAR bmCapabilities;
+ USHORT wWidth;
+ USHORT wHeight;
+ ULONG32 dwMinBitRate;
+ ULONG32 dwMaxBitRate;
+ ULONG32 dwMaxVideoFrameBufferSize;
+ ULONG32 dwDefaultFrameInterval;
+ UCHAR bFrameIntervalType;
+ ULONG32 dwMinFrameInterval;
+ ULONG32 dwMaxFrameInterval;
+ ULONG32 dwFrameIntervalStep;
+} USB_VIDEO_MJPEG_FRAME_DESCRIPTOR_CONTINUOUS,
+*PUSB_VIDEO_MJPEG_FRAME_DESCRIPTOR_CONTINUOUS;
+
+// 3.1.2 MJPEG Video Frame Descriptors -Discrete
+//
+typedef struct _USB_VIDEO_MJPEG_FRAME_DESCRIPTOR_DISCRETE {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bFrameIndex;
+ UCHAR bmCapabilities;
+ USHORT wWidth;
+ USHORT wHeight;
+ ULONG32 dwMinBitRate;
+ ULONG32 dwMaxBitRate;
+ ULONG32 dwMaxVideoFrameBufferSize;
+ ULONG32 dwDefaultFrameInterval;
+ UCHAR bFrameIntervalType;
+ ULONG32 dwFrameInterval; // variable count
+} USB_VIDEO_MJPEG_FRAME_DESCRIPTOR_DISCRETE,
+*PUSB_VIDEO_MJPEG_FRAME_DESCRIPTOR_DISCRETE;
+
+//
+// USB Device Class Definition for Video Devices: MPEG1-SS, MPEG2-PS Payload 0.8a Draft Revision
+// 3.1.1 MPEG1 System Stream Format Descriptor
+//
+typedef struct _USB_VIDEO_MPEG1_SS_FORMAT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bFormatIndex;
+ USHORT wPacketLength;
+ USHORT wPackLength;
+ UCHAR bPackdataType;
+} USB_VIDEO_MPEG1_SS_FORMAT_DESCRIPTOR,
+*PUSB_VIDEO_MPEG1_SS_FORMAT_DESCRIPTOR;
+
+// 3.1.2 MPEG2 PS Format Descriptor
+//
+typedef struct _USB_VIDEO_MPEG2_PS_FORMAT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bFormatIndex;
+ USHORT wPacketLength;
+ USHORT wPackLength;
+ UCHAR bPackdataType;
+} USB_VIDEO_MPEG2_PS_FORMAT_DESCRIPTOR,
+*PUSB_VIDEO_MPEG2_PS_FORMAT_DESCRIPTOR;
+
+//
+// USB Device Class Definition for Video Devices: MPEG-2 TS Payload 0.8a Draft Revision
+// 3.1.1 MPEG-2 TS Format Descriptor
+//
+typedef struct _USB_VIDEO_MPEG2_TS_FORMAT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bFormatIndex;
+ UCHAR bDataOffset;
+ UCHAR bPacketLength;
+ UCHAR bStrideLength;
+} USB_VIDEO_MPEG2_TS_FORMAT_DESCRIPTOR,
+*PUSB_VIDEO_MPEG2_TS_FORMAT_DESCRIPTOR;
+
+//
+// USB Device Class Definition for Video Devices: MPEG4 SL Payload 0.8a Draft Revision
+// 3.1.1 MPEG4 SL Format Descriptor
+//
+typedef struct _USB_VIDEO_MPEG4_SL_FORMAT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bFormatIndex;
+ USHORT wPacketLength;
+} USB_VIDEO_MPEG4_SL_FORMAT_DESCRIPTOR,
+*PUSB_VIDEO_MPEG4_SL_FORMAT_DESCRIPTOR;
+
+// USB Device Class Definition for Video Devices: DV Payload 0.8a Draft Revision
+// 3.1.1 DV Format Descriptor
+typedef struct _USB_VIDEO_DV_FORMAT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bFormatIndex;
+ ULONG32 dwMaxVideoFrameBufferSize;
+ UCHAR bFormatType;
+} USB_VIDEO_DV_FORMAT_DESCRIPTOR,
+*PUSB_VIDEO_DV_FORMAT_DESCRIPTOR;
+
+// USB Device Class Definition for Video Devices: Vendor Payload 0.8c Draft Revision
+// 3.1.1 Vendor Video Format Descriptor
+typedef struct _USB_VIDEO_VENDOR_VIDEO_FORMAT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bFormatIndex;
+ UCHAR bNumFrameDescriptors;
+ GUID guidMajorFormat;
+ GUID guidSubFormat;
+ GUID guidSpecifier;
+ UCHAR bPayloadClass;
+ UCHAR bDefaultFrameIndex;
+ UCHAR bCopyProtect;
+} USB_VIDEO_VENDOR_VIDEO_FORMAT_DESCRIPTOR,
+*PUSB_VIDEO_VENDOR_VIDEO_FORMAT_DESCRIPTOR;
+
+// USB Device Class Definition for Video Devices: Vendor Payload 0.8c Draft Revision
+// 3.1.2 Vendor Video Frame Descriptor
+typedef struct _USB_VIDEO_VENDOR_VIDEO_FRAME_DESCRIPTOR_COMMON {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bFrameIndex;
+ UCHAR bmCapabilities;
+ USHORT wWidth;
+ USHORT wHeight;
+ ULONG32 dwMinBitRate;
+ ULONG32 dwMaxBitRate;
+ ULONG32 dwMaxVideoFrameBufferSize;
+ ULONG32 dwDefaultFrameInterval;
+ UCHAR bFrameIntervalType;
+} USB_VIDEO_VENDOR_VIDEO_FRAME_DESCRIPTOR_COMMON,
+*PUSB_VIDEO_VENDOR_VIDEO_FRAME_DESCRIPTOR_COMMON;
+
+typedef struct _USB_VIDEO_VENDOR_VIDEO_FRAME_DESCRIPTOR_CONTINUOUS {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bFrameIndex;
+ UCHAR bmCapabilities;
+ USHORT wWidth;
+ USHORT wHeight;
+ ULONG32 dwMinBitRate;
+ ULONG32 dwMaxBitRate;
+ ULONG32 dwMaxVideoFrameBufferSize;
+ ULONG32 dwDefaultFrameInterval;
+ UCHAR bFrameIntervalType;
+ ULONG32 dwMinFrameInterval;
+ ULONG32 dwMaxFrameInterval;
+ ULONG32 dwFrameIntervalStep;
+} USB_VIDEO_VENDOR_VIDEO_FRAME_DESCRIPTOR_CONTINUOUS,
+*PUSB_VIDEO_VENDOR_VIDEO_FRAME_DESCRIPTOR_CONTINUOUS;
+
+typedef struct _USB_VIDEO_VENDOR_VIDEO_FRAME_DESCRIPTOR_DISCRETE {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bFrameIndex;
+ UCHAR bmCapabilities;
+ USHORT wWidth;
+ USHORT wHeight;
+ ULONG32 dwMinBitRate;
+ ULONG32 dwMaxBitRate;
+ ULONG32 dwMaxVideoFrameBufferSize;
+ ULONG32 dwDefaultFrameInterval;
+ UCHAR bFrameIntervalType;
+ ULONG32 dwFrameInterval; // variable count
+} USB_VIDEO_VENDOR_VIDEO_FRAME_DESCRIPTOR_DISCRETE,
+*PUSB_VIDEO_VENDOR_VIDEO_FRAME_DESCRIPTOR_DISCRETE;
+
+// USB Device Class Definition for Video Devices: Media Transport Terminal 0.8a Draft Revision
+// 3.1 Media Transport Input Descriptor
+typedef struct _USB_VIDEO_MEDIA_TRANSPORT_INPUT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bTerminalID;
+ USHORT wTerminalType;
+ UCHAR bAssocTerminal;
+ UCHAR iTerminal;
+ UCHAR bControlSize;
+ UCHAR bmControls; // variable size (min 1)
+// UCHAR bTransportModeSize; // variable count (min 0)
+// UCHAR bmTransportModes; // variable count (min 0)
+} USB_VIDEO_MEDIA_TRANSPORT_INPUT_DESCRIPTOR,
+*PUSB_VIDEO_MEDIA_TRANSPORT_INPUT_DESCRIPTOR;
+
+// 3.2 Media Transport Output Descriptor
+typedef struct _USB_VIDEO_MEDIA_TRANSPORT_OUTPUT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDescriptorSubtype;
+ UCHAR bTerminalID;
+ USHORT wTerminalType;
+ UCHAR bAssocTerminal;
+ UCHAR bSourceID;
+ UCHAR iTerminal;
+ UCHAR bControlSize;
+ UCHAR bmControls; // variable size (min 1)
+// UCHAR bTransportModeSize; // variable count (min 0)
+// UCHAR bmTransportModes; // variable count (min 0)
+} USB_VIDEO_MEDIA_TRANSPORT_OUTPUT_DESCRIPTOR,
+*PUSB_VIDEO_MEDIA_TRANSPORT_OUTPUT_DESCRIPTOR;
+
+#pragma pack(pop)