来分析一个UVC的摄像头的枚举信息

使用到工具USBlyzer导出数据,但是会发现一些还有部分解析未完全。我们将借助UVCView.x86(https://files.cnblogs.com/files/libra13179/77772349UVCView.x86.rar)来进一步来分析。(懒人专用)

Connection Status Device connected
Current Configuration 1
Speed High (480 Mbit/s)
Device Address 4
Number Of Open Pipes 1
Device Descriptor USB2.0 UVC PC Camera
OffsetFieldSizeValueDescription
0 bLength 1 12h  
1 bDescriptorType 1 01h Device
2 bcdUSB 2 0200h USB Spec 2.0
4 bDeviceClass 1 EFh Miscellaneous
5 bDeviceSubClass 1 02h Common Class
6 bDeviceProtocol 1 01h Interface Association Descriptor
7 bMaxPacketSize0 1 40h 64 bytes
8 idVendor 2 05E3h Genesys Logic, Inc.
10 idProduct 2 0510h  
12 bcdDevice 2 0319h 3.19
14 iManufacturer 1 02h  
15 iProduct 1 03h "USB2.0 UVC PC Camera"
16 iSerialNumber 1 00h  
17 bNumConfigurations 1 01h  
Configuration Descriptor 1 Bus Powered, 200 mA
OffsetFieldSizeValueDescription
0 bLength 1 09h  
1 bDescriptorType 1 02h Configuration
2 wTotalLength 2 01A9h  
4 bNumInterfaces 1 02h  
5 bConfigurationValue 1 01h  
6 iConfiguration 1 00h  
7 bmAttributes 1 80h Bus Powered
  4..0: Reserved   ...00000   
  5: Remote Wakeup   ..0.....  No
  6: Self Powered   .0......  No, Bus Powered
  7: Reserved (set to one)
(bus-powered for 1.0)
  1.......   
8 bMaxPower 1 64h 200 mA
Interface Association Descriptor Video Interface Collection
OffsetFieldSizeValueDescription
0 bLength 1 08h  
1 bDescriptorType 1 0Bh Interface Association
2 bFirstInterface 1 00h  
3 bInterfaceCount 1 02h  
4 bFunctionClass 1 0Eh Video
5 bFunctionSubClass 1 03h Video Interface Collection
6 bFunctionProtocol 1 00h  
7 iFunction 1 01h  
Interface Descriptor 0/0 Video, 1 Endpoint
OffsetFieldSizeValueDescription
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 00h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 01h  
5 bInterfaceClass 1 0Eh Video
6 bInterfaceSubClass 1 01h Video Control
7 bInterfaceProtocol 1 00h  
8 iInterface 1 01h  
Video Control Interface Header Descriptor
OffsetFieldSizeValueDescription
0 bLength 1 0Dh  
1 bDescriptorType 1 24h Video Control Interface Header
2   11 01 00 01 69 00 00 87 93 
03 01 01 
 
 
          ===>Class-Specific Video Control Interface Header Descriptor<===
bLength:                           0x0D
bDescriptorType:                   0x24
bDescriptorSubtype:                0x01
bcdVDC:                          0x0100
wTotalLength:                    0x0069  -> Validated
dwClockFrequency:            0x03938700 = (60000000) Hz
bInCollection:                     0x01
baInterfaceNr[1]:                  0x01
View Code
 
Video Control Output Terminal Descriptor
OffsetFieldSizeValueDescription
0 bLength 1 09h  
1 bDescriptorType 1 24h Video Control Output Terminal
2   7 03 04 01 01 00 02 00   
 
          ===>Video Control Output Terminal Descriptor<===
bLength:                           0x09
bDescriptorType:                   0x24
bDescriptorSubtype:                0x03
bTerminalID:                       0x04
wTerminalType:                   0x0101 = (TT_STREAMING)
bAssocTerminal:                    0x00
bSourceID:                         0x02
iTerminal:                         0x00
View Code
Video Control Extension Unit Descriptor
OffsetFieldSizeValueDescription
0 bLength 1 1Bh  
1 bDescriptorType 1 24h Video Control Extension Unit
2   25 06 02 0B 36 5D 5E 5F E4 
81 45 9B 0B 37 46 69 BA 
05 D4 10 01 05 02 FF 00 
00 
 
          ===>Video Control Extension Unit Descriptor<===
bLength:                           0x1B
bDescriptorType:                   0x24
bDescriptorSubtype:                0x06
bUnitID:                           0x02
guidExtensionCode:                 {5E5D360B-E45F-4581-9B0B-374669BA05D4}
bNumControls:                      0x10
bNrInPins:                         0x01
===>List of Connected Units and Terminal ID's
baSourceID[1]:                     0x05
bControlSize:                      0x02
bmControls : 0xFF 0x00 
     D00 = 1  yes -  Vendor-Specific (Optional)
     D01 = 1  yes -  Vendor-Specific (Optional)
     D02 = 1  yes -  Vendor-Specific (Optional)
     D03 = 1  yes -  Vendor-Specific (Optional)
     D04 = 1  yes -  Vendor-Specific (Optional)
     D05 = 1  yes -  Vendor-Specific (Optional)
     D06 = 1  yes -  Vendor-Specific (Optional)
     D07 = 1  yes -  Vendor-Specific (Optional)
     D08 = 0   no -  Vendor-Specific (Optional)
     D09 = 0   no -  Vendor-Specific (Optional)
     D10 = 0   no -  Vendor-Specific (Optional)
     D11 = 0   no -  Vendor-Specific (Optional)
     D12 = 0   no -  Vendor-Specific (Optional)
     D13 = 0   no -  Vendor-Specific (Optional)
     D14 = 0   no -  Vendor-Specific (Optional)
     D15 = 0   no -  Vendor-Specific (Optional)
iExtension:                        0x00
View Code
Video Control Extension Unit Descriptor
OffsetFieldSizeValueDescription
0 bLength 1 1Bh  
1 bDescriptorType 1 24h Video Control Extension Unit
2   25 06 05 03 DF DA EC E3 8F 
27 4D 89 3B A1 8D 25 AE 
EE 09 10 01 03 02 FF 03 
00 
 
          ===>Video Control Extension Unit Descriptor<===
bLength:                           0x1B
bDescriptorType:                   0x24
bDescriptorSubtype:                0x06
bUnitID:                           0x05
guidExtensionCode:                 {ECDADF03-8FE3-4D27-893B-A18D25AEEE09}
bNumControls:                      0x10
bNrInPins:                         0x01
===>List of Connected Units and Terminal ID's
baSourceID[1]:                     0x03
bControlSize:                      0x02
bmControls : 0xFF 0x03 
     D00 = 1  yes -  Vendor-Specific (Optional)
     D01 = 1  yes -  Vendor-Specific (Optional)
     D02 = 1  yes -  Vendor-Specific (Optional)
     D03 = 1  yes -  Vendor-Specific (Optional)
     D04 = 1  yes -  Vendor-Specific (Optional)
     D05 = 1  yes -  Vendor-Specific (Optional)
     D06 = 1  yes -  Vendor-Specific (Optional)
     D07 = 1  yes -  Vendor-Specific (Optional)
     D08 = 1  yes -  Vendor-Specific (Optional)
     D09 = 1  yes -  Vendor-Specific (Optional)
     D10 = 0   no -  Vendor-Specific (Optional)
     D11 = 0   no -  Vendor-Specific (Optional)
     D12 = 0   no -  Vendor-Specific (Optional)
     D13 = 0   no -  Vendor-Specific (Optional)
     D14 = 0   no -  Vendor-Specific (Optional)
     D15 = 0   no -  Vendor-Specific (Optional)
iExtension:                        0x00
View Code
Video Control Input Terminal Descriptor
OffsetFieldSizeValueDescription
0 bLength 1 12h  
1 bDescriptorType 1 24h Video Control Input Terminal
2   16 02 01 01 02 00 00 00 00 
00 00 00 00 03 00 00 00 
 
          ===>Video Control Input Terminal Descriptor<===
bLength:                           0x12
bDescriptorType:                   0x24
bDescriptorSubtype:                0x02
bTerminalID:                       0x01
wTerminalType:                   0x0201 = (ITT_CAMERA)
bAssocTerminal:                    0x00
iTerminal:                         0x00
===>Camera Input Terminal Data
wObjectiveFocalLengthMin:        0x0000
wObjectiveFocalLengthMax:        0x0000
wOcularFocalLength:              0x0000
bControlSize:                      0x03
bmControls : 0x00 0x00 0x00 
     D00 = 0   no -  Scanning Mode
     D01 = 0   no -  Auto-Exposure Mode
     D02 = 0   no -  Auto-Exposure Priority
     D03 = 0   no -  Exposure Time (Absolute)
     D04 = 0   no -  Exposure Time (Relative)
     D05 = 0   no -  Focus (Absolute)
     D06 = 0   no -  Focus (Relative)
     D07 = 0   no -  Iris (Absolute)
     D08 = 0   no -  Iris (Relative)
     D09 = 0   no -  Zoom (Absolute)
     D10 = 0   no -  Zoom (Relative)
     D11 = 0   no -  Pan (Absolute)
     D12 = 0   no -  Pan (Relative)
     D13 = 0   no -  Roll (Absolute)
     D14 = 0   no -  Roll (Relative)
     D15 = 0   no -  Tilt (Absolute)
     D16 = 0   no -  Tilt (Relative)
     D17 = 0   no -  Focus Auto
     D18 = 0   no -  Reserved
     D19 = 0   no -  Reserved
     D20 = 0   no -  Reserved
     D21 = 0   no -  Reserved
     D22 = 0   no -  Reserved
     D23 = 0   no -  Reserved
View Code
Video Control Processing Unit Descriptor
OffsetFieldSizeValueDescription
0 bLength 1 0Bh  
1 bDescriptorType 1 24h Video Control Processing Unit
2   9 05 03 01 00 00 02 7F 17 
00 
 
 
          ===>Video Control Processing Unit Descriptor<===
bLength:                           0x0B
bDescriptorType:                   0x24
bDescriptorSubtype:                0x05
bUnitID:                           0x03
bSourceID:                         0x01
wMaxMultiplier:                  0x0000
bControlSize:                      0x02
bmControls : 0x7F 0x17 
     D00 = 1  yes -  Brightness
     D01 = 1  yes -  Contrast
     D02 = 1  yes -  Hue
     D03 = 1  yes -  Saturation
     D04 = 1  yes -  Sharpness
     D05 = 1  yes -  Gamma
     D06 = 1  yes -  White Balance Temperature
     D07 = 0   no -  White Balance Component
     D08 = 1  yes -  Backlight Compensation
     D09 = 1  yes -  Gain
     D10 = 1  yes -  Power Line Frequency
     D11 = 0   no -  Hue, Auto
     D12 = 1  yes -  White Balance Temperature, Auto
     D13 = 0   no -  White Balance Component, Auto
     D14 = 0   no -  Digital Multiplier
     D15 = 0   no -  Digital Multiplier Limit
iProcessing:                       0x00
View Code
Endpoint Descriptor 83 3 In, Interrupt, 4 ms
OffsetFieldSizeValueDescription
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 83h 3 In
3 bmAttributes 1 03h Interrupt
  1..0: Transfer Type   ......11  Interrupt
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 0017h 23 bytes
6 bInterval 1 06h 4 ms
Video Control Interrupt Endpoint Descriptor
OffsetFieldSizeValueDescription
0 bLength 1 05h  
1 bDescriptorType 1 25h Video Control Interrupt Endpoint
2   3 03 17 00   
 
          ===>Class-specific VC Interrupt Endpoint Descriptor<===
bLength:                           0x05 
bDescriptorType:                   0x25
bDescriptorSubType:                0x03
wMaxTransferSize:                0x0017 = (23) Bytes
View Code
Interface Descriptor 1/0 Video, 0 Endpoints
OffsetFieldSizeValueDescription
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 01h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 00h  
5 bInterfaceClass 1 0Eh Video
6 bInterfaceSubClass 1 02h Video Streaming
7 bInterfaceProtocol 1 00h  
8 iInterface 1 00h  
Video Streaming Interface Input Header Descriptor
OffsetFieldSizeValueDescription
0 bLength 1 0Eh  
1 bDescriptorType 1 24h Video Streaming Interface Input Header
2   12 01 01 01 01 81 00 04 02 
01 01 01 00 
 
          ===>Video Class-Specific VS Video Input Header Descriptor<===
bLength:                           0x0E
bDescriptorType:                   0x24
bDescriptorSubtype:                0x01
bNumFormats:                       0x01
wTotalLength:                    0x0101  -> Validated
bEndpointAddress:                  0x81  -> Direction: IN - EndpointID: 1
bmInfo:                            0x00  -> Dynamic Format Change not Supported
bTerminalLink:                     0x04
bStillCaptureMethod:               0x02  -> Still Capture Method 2
bTriggerSupport:                   0x01  -> Hardware Triggering Support
bTriggerUsage:                     0x01  -> Host will notify client application of button event
bControlSize:                      0x01
Video Payload Format 1             0x00 
     D00 = 0   no -  Key Frame Rate
     D01 = 0   no -  P Frame Rate
     D02 = 0   no -  Compression Quality
     D03 = 0   no -  Compression Window Size
     D04 = 0   no -  Generate Key Frame
     D05 = 0   no -  Update Frame Segment
     D06 = 0   no -  Reserved
     D07 = 0   no -  Reserved
View Code
Video Streaming Uncompressed Video Format Descriptor
OffsetFieldSizeValueDescription
0 bLength 1 1Bh  
1 bDescriptorType 1 24h Video Streaming Uncompressed Video Format
2   25 04 01 06 59 55 59 32 00 
00 10 00 80 00 00 AA 00 
38 9B 71 10 01 00 00 00 
00 
 
          ===>Video Streaming Uncompressed Format Type Descriptor<===
bLength:                           0x1B
bDescriptorType:                   0x24
bDescriptorSubtype:                0x04
bFormatIndex:                      0x01
bNumFrameDescriptors:              0x06
guidFormat:                        {32595559-0000-0010-8000-00AA00389B71} = YUY2 Format
bBitsPerPixel:                     0x10
bDefaultFrameIndex:                0x01
bAspectRatioX:                     0x00
bAspectRatioY:                     0x00
bmInterlaceFlags:                  0x00
     D0    = 0x00 Interlaced stream or variable: No
     D1    = 0x00 Fields per frame: 2 fields
     D2    = 0x00 Field 1 first: No
     D3    = 0x00 Reserved
     D4..5 = 0x00 Field patterns  -> Field 1 only
     D6..7 = 0x00 Display Mode  -> Bob only
bCopyProtect:                      0x00  -> Duplication Unrestricted
View Code

 补充一下关于Layout of a GUID Data Structure

 

Therefore, for a GUID defined as {32595559-0000-0010-8000-00AA00389B71}, as described
in the table above, the little-endian byte-stream representation would be:
0x59, 0x55, 0x59, 0x32, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71

Video Streaming Uncompressed Video Frame Descriptor
OffsetFieldSizeValueDescription
0 bLength 1 1Eh  
1 bDescriptorType 1 24h Video Streaming Uncompressed Video Frame
2   28 05 01 00 80 02 E0 01 00 
60 EA 00 00 60 EA 00 00 
60 09 00 80 1A 06 00 01 
80 1A 06 00 
 
          ===>Video Streaming Uncompressed Frame Type Descriptor<===
bLength:                           0x1E
bDescriptorType:                   0x24
bDescriptorSubtype:                0x05
bFrameIndex:                       0x01
bmCapabilities:                    0x00
wWidth:                          0x0280
wHeight:                         0x01E0
dwMinBitRate:                0x00EA6000
dwMaxBitRate:                0x00EA6000
dwMaxVideoFrameBufferSize:   0x00096000
dwDefaultFrameInterval:      0x00061A80
bFrameIntervalType:                0x01
===>Additional Discrete Frame Type Data
dwFrameInterval[1]:          0x00061A80
View Code
Video Streaming Uncompressed Video Frame Descriptor
OffsetFieldSizeValueDescription
0 bLength 1 1Eh  
1 bDescriptorType 1 24h Video Streaming Uncompressed Video Frame
2   28 05 02 00 A0 00 78 00 00 
A6 0E 00 00 A6 0E 00 00 
96 00 00 80 1A 06 00 01 
80 1A 06 00 
 
 
          ===>Video Streaming Uncompressed Frame Type Descriptor<===
bLength:                           0x1E
bDescriptorType:                   0x24
bDescriptorSubtype:                0x05
bFrameIndex:                       0x02
bmCapabilities:                    0x00
wWidth:                          0x00A0
wHeight:                         0x0078
dwMinBitRate:                0x000EA600
dwMaxBitRate:                0x000EA600
dwMaxVideoFrameBufferSize:   0x00009600
dwDefaultFrameInterval:      0x00061A80
bFrameIntervalType:                0x01
===>Additional Discrete Frame Type Data
dwFrameInterval[1]:          0x00061A80
View Code
Video Streaming Uncompressed Video Frame Descriptor
OffsetFieldSizeValueDescription
0 bLength 1 1Eh  
1 bDescriptorType 1 24h Video Streaming Uncompressed Video Frame
2   28 05 03 00 B0 00 90 00 00 
56 13 00 00 56 13 00 00 
C6 00 00 80 1A 06 00 01 
80 1A 06 00 
 
          ===>Video Streaming Uncompressed Frame Type Descriptor<===
bLength:                           0x1E
bDescriptorType:                   0x24
bDescriptorSubtype:                0x05
bFrameIndex:                       0x03
bmCapabilities:                    0x00
wWidth:                          0x00B0
wHeight:                         0x0090
dwMinBitRate:                0x00135600
dwMaxBitRate:                0x00135600
dwMaxVideoFrameBufferSize:   0x0000C600
dwDefaultFrameInterval:      0x00061A80
bFrameIntervalType:                0x01
===>Additional Discrete Frame Type Data
dwFrameInterval[1]:          0x00061A80
View Code
Video Streaming Uncompressed Video Frame Descriptor
OffsetFieldSizeValueDescription
0 bLength 1 1Eh  
1 bDescriptorType 1 24h Video Streaming Uncompressed Video Frame
2   28 05 04 00 40 01 F0 00 00 
98 3A 00 00 98 3A 00 00 
58 02 00 80 1A 06 00 01 
80 1A 06 00 
 
 
          ===>Video Streaming Uncompressed Frame Type Descriptor<===
bLength:                           0x1E
bDescriptorType:                   0x24
bDescriptorSubtype:                0x05
bFrameIndex:                       0x04
bmCapabilities:                    0x00
wWidth:                          0x0140
wHeight:                         0x00F0
dwMinBitRate:                0x003A9800
dwMaxBitRate:                0x003A9800
dwMaxVideoFrameBufferSize:   0x00025800
dwDefaultFrameInterval:      0x00061A80
bFrameIntervalType:                0x01
===>Additional Discrete Frame Type Data
dwFrameInterval[1]:          0x00061A80
View Code
Video Streaming Uncompressed Video Frame Descriptor
OffsetFieldSizeValueDescription
0 bLength 1 1Eh  
1 bDescriptorType 1 24h Video Streaming Uncompressed Video Frame
2   28 05 05 00 60 01 20 01 00 
58 4D 00 00 58 4D 00 00 
18 03 00 80 1A 06 00 01 
80 1A 06 00 
 
          ===>Video Streaming Uncompressed Frame Type Descriptor<===
bLength:                           0x1E
bDescriptorType:                   0x24
bDescriptorSubtype:                0x05
bFrameIndex:                       0x05
bmCapabilities:                    0x00
wWidth:                          0x0160
wHeight:                         0x0120
dwMinBitRate:                0x004D5800
dwMaxBitRate:                0x004D5800
dwMaxVideoFrameBufferSize:   0x00031800
dwDefaultFrameInterval:      0x00061A80
bFrameIntervalType:                0x01
===>Additional Discrete Frame Type Data
dwFrameInterval[1]:          0x00061A80
View Code
Video Streaming Uncompressed Video Frame Descriptor
OffsetFieldSizeValueDescription
0 bLength 1 1Eh  
1 bDescriptorType 1 24h Video Streaming Uncompressed Video Frame
2   28 05 06 00 80 02 E0 01 00 
60 EA 00 00 60 EA 00 00 
60 09 00 80 1A 06 00 01 
80 1A 06 00 
 
          ===>Video Streaming Uncompressed Frame Type Descriptor<===
bLength:                           0x1E
bDescriptorType:                   0x24
bDescriptorSubtype:                0x05
bFrameIndex:                       0x06
bmCapabilities:                    0x00
wWidth:                          0x0280
wHeight:                         0x01E0
dwMinBitRate:                0x00EA6000
dwMaxBitRate:                0x00EA6000
dwMaxVideoFrameBufferSize:   0x00096000
dwDefaultFrameInterval:      0x00061A80
bFrameIntervalType:                0x01
===>Additional Discrete Frame Type Data
dwFrameInterval[1]:          0x00061A80
View Code
Video Streaming Still Image Frame Descriptor
OffsetFieldSizeValueDescription
0 bLength 1 1Eh  
1 bDescriptorType 1 24h Video Streaming Still Image Frame
2   28 03 00 06 80 02 E0 01 A0 
00 78 00 B0 00 90 00 40 
01 F0 00 60 01 20 01 80 
02 E0 01 00 
 
 
          ===>Still Image Frame Type Descriptor<===
bLength:                           0x1E
bDescriptorType:                   0x24
bDescriptorSubtype:                0x03
bEndpointAddress:                  0x00
bNumImageSizePatterns:             0x06
wWidth[1]:                       0x0280
wHeight[1]:                      0x01E0
wWidth[2]:                       0x00A0
wHeight[2]:                      0x0078
wWidth[3]:                       0x00B0
wHeight[3]:                      0x0090
wWidth[4]:                       0x0140
wHeight[4]:                      0x00F0
wWidth[5]:                       0x0160
wHeight[5]:                      0x0120
wWidth[6]:                       0x0280
wHeight[6]:                      0x01E0
bNumCompressionPattern:            0x00
View Code
Video Streaming Color Matching Descriptor
OffsetFieldSizeValueDescription
0 bLength 1 06h  
1 bDescriptorType 1 24h Video Streaming Color Matching
2   4 0D 01 01 04   
          ===>Color Matching Descriptor<===
bLength:                           0x06
bDescriptorType:                   0x24
bDescriptorSubtype:                0x0D
bColorPrimaries:                   0x01
bTransferCharacteristics:          0x01
bMatrixCoefficients:               0x04
View Code
Interface Descriptor 1/1 Video, 1 Endpoint
OffsetFieldSizeValueDescription
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 01h  
3 bAlternateSetting 1 01h  
4 bNumEndpoints 1 01h  
5 bInterfaceClass 1 0Eh Video
6 bInterfaceSubClass 1 02h Video Streaming
7 bInterfaceProtocol 1 00h  
8 iInterface 1 00h  
Endpoint Descriptor 81 1 In, Isochronous, 125 us
OffsetFieldSizeValueDescription
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 81h 1 In
3 bmAttributes 1 05h Isochronous, Asynchronous, Data
  1..0: Transfer Type   ......01  Isochronous
  3..2: Sync Type   ....01..  Asynchronous
  5..4: Usage Type   ..00....  Data
  7..6: Reserved   00......   
4 wMaxPacketSize 2 1400h 1024 bytes, 2 additional transactions (3 per microframe)
6 bInterval 1 01h 125 us
原文地址:https://www.cnblogs.com/libra13179/p/9132485.html