USB协议 - UVC标准协议规范(二)
USB協議-UVC標準協議規范(二)
- 1.概述
- 2.UVC功能特征
- 2.1 Video Interface Class
- 2.2 Video Interface subclass and Protocol
- 2.3 UVC功能拓撲
- 2.3.1 Unit單元
- 2.3.1.1 SU(選擇器單元)
- 2.3.1.2 PU(處理單元)
- 2.3.1.3 EU(編碼單元)
- 2.3.1.4 XU(擴展單元)
- 2.3.2 Teminals端點
- 2.3.2.1 IT(Input Terminal)
- 2.3.2.2 OT(Output Terminal)
- 2.3.2.3 CT(Camera Terminal)
1.概述
UVC,全稱為:USB video(device) class,是微軟與另外幾家設備廠商聯合推出的為USB視頻捕獲設備定義的協議標準,目前已成為USB org標準之一。
USB協議中,除了通用的軟硬件電氣接口規范等,還包含了各種各樣的Class協議,用來為不同的功能定義各自的標準接口和具體的總線上的數據交互格式和內容。這些Class協議的數量非常多,最常見的比如支持U盤功能的Mass Storage Class,以及通用的數據交換協議:CDC class。此外還包括Video、Audio Class, Print Class等等。正是由于這些Class協議,大大促進了USB設備的普及,比如說各個廠商生產的U盤都能通過操作系統自帶的驅動程序來使用。
所以說UVC僅僅只是USB規范協議中設備類規范的其中一種,是用作USB接口的視頻設備的一個統一的數據交換規范。使用 UVC 的好處 USB 在 Video這塊也成為一項標準了之后,硬件在各個程序之間彼此運行會更加順利,而且也省略了驅動程序安裝這一環節,操作系統只要是 Windows XP SP2 之后的版本都可以支持 UVC,Linux系統自2.4以后的內核都支持了大量的設備驅動,其中支持UVC設備。
在UVC規范中明確要求,具有實際UVC功能的視頻設備需要具備兩種接口:一種為VC Interface(視頻控制接口),VS Interface(視頻流接口)。其中VC接口用于對UVC設備進行配置操控,而VS接口則用于負責傳輸視頻數據流,兩者相互配合完成UVC設備功能。一般情況下設備是只有有一個VC接口和多個VS接口。
本文對USB的功能類協議USB Video Class(UVC)的具體設計進行介紹,但不會介紹USB基礎協議,所以需要對USB基礎協議有一定的了解,包括USB四大描述符以及四種傳輸方式。
規范文檔通過官方鏈接下載USB_Video_Class_1_5
或者云盤下載:USB_Video_Class_1_5
2.UVC功能特征
video function(視頻功能) 位于設備類層次結構中的接口級別。它由許多接口組成,這些接口將相關pipe(管道)分組在一起,共同實現video function(視頻功能)的接口。
video function(視頻功能)通過其(Video interface)視頻接口尋址。 每個視頻功能都有一個 VideoControl (VC) 接口,并且可以有多個 VideoStreaming (VS) 接口。 VideoControl (VC) 接口用于訪問該功能的設備控件,而 VideoStreaming (VS) 接口用于將數據流傳輸進和出該功能。 單個 VideoControl 接口和屬于同一視頻功能的 VideoStreaming 接口的集合稱為VideoInterfaceCelloction視頻接口集合(VIC)。 Interface Association Descriptor(接口關聯描述符 )(IAD) 用于描述視頻接口集合。
2.1 Video Interface Class
視頻接口類(Video interface class)將所有可以與 USB 兼容視頻數據流交互的功能分組。
事實上,Video interface class包含了VC和VS。
視頻接口類有專門的code碼標識:
| CC_VIDEO | 0x0E |
2.2 Video Interface subclass and Protocol
Video interface class又細分兩種subclass類:
- Video Control interface
- Video streaming interface
說明:
視頻控制接口是訪問視頻功能內部的單個入口點,所有與視頻功能各拓撲單元或終端都必須通過視頻控制接口來實現。所以視頻函數內部相關的所有描述符都是特定于類的視頻控制接口描述符的一部分。
視頻流接口用于主機和設備視頻功能之間進行傳輸視頻數據。一個視頻功能可以不包括視頻流接口,也可以包含多個視頻流接口。
Interface Association Descriptor(IAD)也有自己的功能subclass:
- Video interface colloction
視頻接口subclass code碼:
| SC_UNDEFINED | 0x00 |
| SC_VIDEOCONTROL | 0x01 |
| SC_VIDEOSTREAMING | 0x02 |
| SC_VIDEO_INTERFACE_COLLECTION | 0x03 |
視頻接口協議code標識碼:
| PC_PROTOCOL_UNDEFINED | 0x00 |
| PC_PROTOCOL_15 | 0x01 |
2.3 UVC功能拓撲
為了能夠操縱視頻功能的物理屬性,其功能必須劃分為可尋址實體。
UVC確定了以下兩個通用實體:
- Units
- Teminals
2.3.1 Unit單元
Unit可以理解為構建出UVC設備功能的各功能單元,多個Unit按照一定的規則連接后就是一個完整的UVC功能設備。Spec規定Unit有一個或多個入口,一個出口;也就是說可以有多個Unit或Terminal作為一個Unit的輸入源頭,而數據在流經Unit后僅能作為其他Unit或Terminal的一個輸入源頭。
如下圖規范:
規范1.5中定義了四種Unit:
- Selector Unit (SU)
- Processing Unit (PU)
- Encoding Unit (EU)
- Extension (XU)
2.3.1.1 SU(選擇器單元)
SU單元用來控制圖像數據采集源的切換和選擇。比如一個設備支持多種輸入源,將通過SU進行選擇切換。
例如下面相機拓撲圖有兩個數據輸入源,這時需要SU來進行切換和選擇。
選擇器單元一般在拓撲圖中用下圖表示:
2.3.1.2 PU(處理單元)
PU代表對采集所得圖像數據進行加工的單元,負責對采集到的圖像特性進行調整設置,它有一個單一的輸入和輸出引腳。
主要有以下一些特性:
User Controls
- Brightness 背光
- Hue 色度
- Saturation 飽和度
- Sharpness 銳度
- Gamma 伽馬
- Digital Multiplier (Zoom) 數字放大
Auto Controls - White Balance Temperature 白平衡色溫
- White Balance Component 白平衡組件
- Backlight Compensation 背光補償
- Contrast 對比度
Other - Gain 增益
- Power Line Frequency 電源線頻率
- Analog Video Standard 模擬視頻標準
- Analog Video Lock Status 模擬視頻鎖狀態
處理單元一般在拓撲圖中用下圖表示:
2.3.1.3 EU(編碼單元)
EU用于對采集所得的數據進行個性化處理的功能。編碼單元控制編碼器的屬性,該編碼器對通過它流式傳輸的視頻進行編碼。 它具有單個輸入和多個輸出引腳。 它支持以下功能,這些功能可以在流式傳輸開始之前或之后使用。
參考規范2.3.6 Encoding Unit
2.3.1.4 XU(擴展單元)
XU是為了特定供應商添加規范而提供的單元。
2.3.2 Teminals端點
Terminal是指整個UVC功能的入口和出口,邏輯意義上講Terminal只有一個出口或者入口,它要么代表整個UVC功能的數據輸入點,要么代表數據在流經UVC功能內部的各Unit功能單元后的最終流入點。
規范中描述了以下Teminals:
- Input Terminal
- Output Terminal
2.3.2.1 IT(Input Terminal)
作為數據流入video function的接收器,功能是作為已經被提取出來的數據的數據源,說白了就是UVC功能的數據源頭。
輸入端點一般在拓撲圖中用下圖表示:
2.3.2.2 OT(Output Terminal)
作為Video Function視頻信息流出的出口,功能是作為輸出數據的接收器。OT只有一個輸入pin,處理流程最后一個單元會將它的out pin與OT的in pin連接在一起。
2.3.2.3 CT(Camera Terminal)
CT代表硬件上的數據采集源(sensor), 用于控制視頻流傳輸中的設備特性的。
它規定支持以下特性控制 :
- Scanning Mode (Progressive or Interlaced) 自動掃描(逐行或隔行掃描)
- Auto-Exposure Mode 自動曝光模式
- Auto-Exposure Priority 自動曝光優先級
- Exposure Time 曝光時間
- Focus 焦點
- Auto-Focus 自動對焦
- Simple Focus 簡單聚焦
- Iris 可變光圈
- Zoom 縮放
- Pan 移動鏡頭
- Roll 滾動
- Tilt 傾斜
- Digital Windowing 數字窗口
- Region of Interest 感興趣區域
在USB_Video_Example 1.5中以一個網絡攝像頭設備為例展現其拓撲結構的示例圖如下:
拓撲一:
拓撲二:
參考文章
總結
以上是生活随笔為你收集整理的USB协议 - UVC标准协议规范(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java排查问题随笔
- 下一篇: OPENCV回调函数