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
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2QvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LcZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39jMwMDOwgDMxEjMwETM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
VS會包含不同settings, 這裡settings了解的應該是某個配置的不同模式.
舉個例子,比如手機有手機模式,有鈴聲,振動,靜音,這就是settings.
VS有setting 0和setting 1. 下圖為Interface 0和Interface 1的描述符
繼承表例子:
了解了以上部分後UVC協定基本上可以了解了,其他部分是描述各個描述符裡面各個字段的意義,
可以遇到了再細看.