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