[RK3288][Android6.0] USB UVC 协议简结

来源:互联网 发布:搞笑淘宝买家秀图评论 编辑:程序博客网 时间:2024/06/15 08:38
Platform: ROCKCHIP
OS: Android 6.0
Kernel: 3.10.92


UVC协议官方文档:
http://www.usb.org/developers/docs/devclass_docs/
USB_Video_Example 1.5.pdf

UVC 1.5 Class specification.pdf
 
 
每个video function有一个VideoControl(VC) interface和若干个VideoStreaming(VS) interface.
VC用于用于设备控制, VS用于传输数据流. 属于同一个video function(视频采集卡可能会有多个)的
VC和VS叫做Video Interface Collection(VIC), 协议中使用Interface Association Descriptor(IAD)来描述它.

Video function相当于USB协议里的Interface level, 它有两种interface subclass:
VideoControl Interface
VideoStreaming Interface

UVC里面还有一个Interface是 Interface Association Descriptor,它的subclass是
Video Interface Collection.

为了将Video function的功能细分管理,内部就分成了很多entities, 它有两种:
Units和Terminals
而其中主要有如下几个模块:
IT(Input Terminal), OT(Out Terminal), SU(Selector Unit)
PU(Processing Unit), EU(Encoding Unit).

代码中会读取各个用到的entities对应的描述符,获取相应信息.
而这些entities的关系可从下图来理解,摘自USB_Video_Example 1.5.pdf


VS会包含不同settings, 这里settings理解的应该是某个配置的不同模式.
举个例子,比如手机有手机模式,有铃声,振动,静音,这就是settings.
VS有setting 0和setting 1. 下图为Interface 0和Interface 1的描述符
继承表例子:


理解了以上部分后UVC协议基本上可以理解了,其他部分是描述各个描述符里面各个字段的意义,
可以遇到了再细看.

1 0
原创粉丝点击