天天看點

[RK3288][Android6.0] USB UVC 協定簡結

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

[RK3288][Android6.0] USB UVC 協定簡結

VS會包含不同settings, 這裡settings了解的應該是某個配置的不同模式.

舉個例子,比如手機有手機模式,有鈴聲,振動,靜音,這就是settings.

VS有setting 0和setting 1. 下圖為Interface 0和Interface 1的描述符

繼承表例子:

[RK3288][Android6.0] USB UVC 協定簡結

了解了以上部分後UVC協定基本上可以了解了,其他部分是描述各個描述符裡面各個字段的意義,

可以遇到了再細看.

繼續閱讀