UVC 扩展单元描述符
2020-09-30
8862
36
扩展单元描述符允许硬件设计者定义任意一组控制接口,使类驱动程序可以在设备与供应商提供的主机软件之间进行通讯控制。
扩展单元描述符ID由bUnitID字段中的值唯一标识描述符。同一视频功能内的任何其他单元或终端不得具有相同的功能ID。
guidExtensionCode字段包含特定于供应商的代码,该代码进一步标识扩展单元。
bNrInPins字段包含扩展单元的输入管脚。使用baSourceID描述与该单元连脚的实例或者端点ID.
UINT8 bLength;
UINT8 bDescriptorType;
UINT8 bDescriptorSubtype;
UINT8 bUnitID;
UINT8 guidExtensionCode[16];
UINT8 bNumControls;
UINT8 bNrInPins;
UINT8 baSourceID[bNrInPins];
UINT8 bControlSize;
UINT8 bmControls[bControlSize];
UINT8 iExtension;
- bLength:描述符的长度, 24+p+n
- bDescriptorType:描述符类型,CS_INTERFACE,值为0x24.
- bDescriptorSubtype:描述符子类型。 VC_EXTENSION_UNIT ,值为0x06
- bUnitID:ID,非零值。
- guidExtensionCode:供应商扩展单元编码
- bNumControls:该扩展单元的控制数量
- bNrInPins:输入管脚数 p
- baSourceID:各个输入管脚连接的实体或端点ID(从第一个到最后一个)
- bControlSize:bmControls的大小。n
- bmControls:扩商指定自定义支持的nx8个控制。
- iExtension:扩展单元的字符串描述符索引。
bNumControls表示有实际N个控制,这个控制是指控制请求,对应扩展单元的特定类请求的选择子;bControlSize表示这个控制占的字节数,一般为(bNumControls+7)/8*8,表示从D0-Dn的mask.
例如:
pExtensionDesc->bNumControls = 0x05; //位的个数
pExtensionDesc->bNrInPins = 0x01;
pExtensionDesc->baSourceID[0] = 0x04;
pExtensionDesc->bControlSize = 0x02; //占的字节数
pExtensionDesc->bmControls[0] = 0x1F; //位mask
pExtensionDesc->bmControls[1] = 0x00;
这个控制相当于普通实例或终端的选择子,默认从1开始,有多少个控制,相当于这些控制的选择子从1到N.
使用本站的UVC扩展单元调试工具进行调试:http://www.usbzh.com/article/detail-516.html
注意:
- windows下当前将扩展单元上的数量限制为31个。
- 感谢老吕丶提供的信息,这里致谢,他的原文详见 windows上面通过dshow接口访问uvc摄像头扩展单元,只能访问0x01-0x1f命令问题。
- 微软参考资料:https://docs.microsoft.com/en-us/windows-hardware/drivers/stream/device-requirements-for-usb-video-class-extension-units
BIT | 选择子 |
---|---|
BIT0 | 1 |
BIT1 | 2 |
BIT2 | 3 |
… | … |
BIT31 | 32 |
视频类特定描述符类型
视频类特定描述符类型 | 值 |
---|---|
CS_UNDEFINED | 0x20 |
CS_DEVICE | 0x21 |
CS_CONFIGURATION | 0x22 |
CS_STRING | 0x23 |
CS_INTERFACE | 0x24 |
CS_ENDPOINT | 0x25 |
类特定视频控制接口头描述符子类型(bDescriptorSubtype)
类特定视频控制接口头描述符子类型 | 值 |
---|---|
VC_DESCRIPTOR_UNDEFINED | 0x00 |
VC_HEADER | 0x01 |
VC_INPUT_TERMINAL | 0x02 |
VC_OUTPUT_TERMINAL | 0x03 |
VC_SELECTOR_UNIT | 0x04 |
VC_PROCESSING_UNIT | 0x05 |
VC_EXTENSION_UNIT | 0x06 |
VC_ENCODING_UNIT | 0x07 |
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936