来分析一个UVC的摄像头的枚举信息
Posted 陌鉎こ城sHi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了来分析一个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 |
Offset | Field | Size | Value | Description |
---|---|---|---|---|
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 |
Offset | Field | Size | Value | Description |
---|---|---|---|---|
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 |
Offset | Field | Size | Value | Description |
---|---|---|---|---|
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 |
Offset | Field | Size | Value | Description |
---|---|---|---|---|
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 |
Offset | Field | Size | Value | Description |
---|---|---|---|---|
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
Offset | Field | Size | Value | Description |
---|---|---|---|---|
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
Offset | Field | Size | Value | Description |
---|---|---|---|---|
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
Offset | Field | Size | Value | Description |
---|---|---|---|---|
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
Offset | Field | Size | Value | Description |
---|---|---|---|---|
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
Offset | Field | Size | Value | Description |
---|---|---|---|---|
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
Offset | Field | Size | Value | Description |
---|---|---|---|---|
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 |
Offset | Field | Size | Value | Description |
---|---|---|---|---|
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
Offset | Field | Size | Value | Description |
---|---|---|---|---|
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 |
Offset | Field | Size | Value | Description |
---|---|---|---|---|
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
Offset | Field | Size | Value | Description |
---|---|---|---|---|
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
补充一下关于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
Offset | Field | Size | Value | Description |
---|---|---|---|---|
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
Offset | Field | Size | Value | Description |
---|---|---|---|---|
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
Offset | Field | Size | Value | Description |
---|---|---|---|---|
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
Video Streaming Uncompressed Video Frame Descriptor
Offset | Field | Size | Value | Description |
---|---|---|---|---|
0 | bLength | 1 | 1Eh | |
1 | bDescriptorType | 1 | 24h | Video Streaming Uncompressed Video Frame |
2 |