UVC 视频控制接口VC
2020-10-29
5327
4
视频控制接口包含于接口关联描述符IAD中,在USB设备枚举过程中,随配置描述符一起返回给主机。
视频控制接口包括以下:
- 控制端点,是必须存在的,默认使用端点0.
- 中断断点,一个可选(某些条件是必须的)的,用于状态返回。
视频控制接口是访问视频功能内部的单个入口点,所有与视频功能各拓扑单元或终端都必须通过视频控制接口来实现。所以视频函数内部相关的所有描述符都是特定于类的视频控制接口描述符的一部分。
控制端点
通过默认的端点0使用特定类请求( class-specific requests)来直接控制视频的各个单元或终端。
windows通过 URB_FUNCTION_CLASS_INTERFACE (Urb->UrbHeader.Function)来控制,所以应直接创建对应的URB并发送即可。
这些特定类请求主要包括以下几种:
名称 | 值 | 说明 |
---|---|---|
RC_UNDEFINED | 0x00 | 未定义 |
SET_CUR | 0x01 | 设置属性 |
GET_CUR | 0x81 | 获取当前属性 |
GET_MIN | 0x82 | 获取最小设置属性 |
GET_MAX | 0x83 | 获取最大设置属性 |
GET_RES | 0x84 | 获取分辨率属性 |
GET_LEN | 0x85 | 获取数据长度属性 |
GET_INF | 0x86 | 获取设备支持的特定类请求属性 |
GET_DEF | 0x87 | 获取默认属性 |
中断状态返回端点
USB设备通过一个可选的中断点向主机报告其可寻址的端点、单元、接口的状态。其实这些信息都是设备向主机上报相关的信息然后由主机响应实现功能调度。
在下面的三种情况下,中断端点必须支持:
- 通过硬件触发抓取静态图片。
- 自动更新的控制(由设备启动更改实现)。
- 异步控制。
任何控制接口VC中的实体,端点、接口都是可以上报中断信息,并且因这些上报者的不同上报的数据也不一样。
公共数据包头
中断状态返回的数据结构是一个变长的数据结构,由其返回端的返回的状态确定。
对于视频控制接口VC和视频流接口VS,中断返回状态具有共同的数据头。
- bStatusType:使用D3:D0表示中断的返回端的类型。
- bOriginator:表示中端返回端的ID.
数据偏移 | 数据标识 | 长度 | 数据类型 | 描述 |
---|---|---|---|---|
0 | bStatusType | 1 | 位图/数字 | D7:4保留 D3:0 数据组织类型 0:保留 1:视频控制接口 2:视频流接口 |
1 | bOriginator | 1 | 数字 | 中断报告ID |
视频控制接口数据包
数据偏移 | 数据标识 | 长度 | 数据类型 | 描述 |
---|---|---|---|---|
2 | bEvent | 1 | 数字 | 0x00: 控制改变 0x01-0xFF: 保留 |
3 | bSelector | 1 | 数字 | 控制改变时报告发生中断的选择器 |
4 | bAttribute | 1 | 指定数字 | 控制事件类型 0x00: 控制值的改变 0x01:控制信息的改变 0x02: 控制改变失败 0x03: 控制最小改变 0x04: 控制最大改变 0x05 - 0xFF: 保留 |
5 | bValuenSee | n(不定长) | 控制请求描述述,详见下表 |
控制请求描述符
bAttribute | Description |
---|---|
0x00 | 相当于 GET_CUR 请求结果 |
0x01 | 相当于 GET INFO 请求结果 |
0x02 | 相当于 GET CUR request on VC REQUEST ERROR CODE_CONTROL 结果 |
0x03 | 相当于 GET_MIN 请求结果 |
0x04 | 相当于 GETMAX 请求结果 |
视频流接口数据包
数据偏移 | 数据标识 | 长度 | 数据类型 | 描述 |
---|---|---|---|---|
2 | bEvent | 1 | 数字 | 0x00: 按钮按下 0x01-0xFF: 保留 |
3 | bValue | n | 数字 | 00:按钮释放 01:按钮按下 |
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936