1. 程式人生 > 實用技巧 >初步瞭解UVC協議

初步瞭解UVC協議

UVC是屬於USB行業規範中的USB裝置類規範,用於USB介面的視訊裝置的一個統一的資料交換規範。其中UVC官方協議文件 UVC 1.5 Class specification是對整個UVC協議的框架做了規範,USB_Video_Example則規定了描述符等的資料結構和相關的一些其他相關規定。

1、UVC概述
在UVC規範中明確要求,具有實際UVC功能的視訊裝置只要需要兩種介面:一種為VC Interface(視訊控制介面)VS Interface(視訊流介面)。其中VC介面用於對UVC裝置進行配置操控,而VS介面則用於負責傳輸視訊資料流,兩者相互配合完成UVC裝置功能。

2、UVC拓撲結構


UVC的將裝置在拓撲結構上抽象成為了幾個主要的硬體功能模組,有以下幾種:
輸入端點(Input Terminal)
輸出端點(Output Terminal)
camera端點(Camera Terminal)
選擇單元(Selector Unit)
處理單元(Processing Unit)
拓展單元(Extension Unit)

在USB_Video_Example 1.5中以一個網路攝像頭裝置為例展現其拓撲結構的示例圖如下:

從Sensor和另一個複合視訊裝置得到的資料流由CT和IT輸入,經過SU選擇送到PU處理,再由OT繫結到指定的USB端點。最後由USB端點與主機互動資料傳送到host。在實際的UVC裝置裝置中,可能沒有上圖中的一些功能某塊,可能只有其中一些模組來完成的。


同時從上面的拓撲結構圖可以看出,左半部分框架組成了UVC中的VC介面部分,右半部分框架組成了VS介面部分。

3、概念補充

3.1 Terminal(端點)
Terminal是指整個UVC功能的入口和出口,邏輯意義上講Terminal只有一個出口或者入口,它要麼代表整個UVC功能的資料輸入點,要麼代表資料在流經UVC內部的各Unit功能單元后的最終流出點。

1)IT(輸入端點)

An Input Terminal (IT) is an entity that represents a starting point for data streams inside the video function.


一個輸入Terminal (IT)終端是一個實體,代表資料流的開始端點

輸入端點一般在拓撲圖中用下圖表示:

2)OT(輸出端點)

An Output Terminal (OT) represents an ending point for data streams.

一個輸出Terminal (OT)終端是一個實體,代表資料流的結束端點。

輸出端點一般在拓撲圖中用下圖表示:

3)CT(Camera端點)

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:感興趣區域

3.2 Unit(單元)
Unit可以理解為構建出UVC裝置功能的各功能單元,多個Unit按照一定的規則連線後就是一個完整的UVC功能裝置。Spec規定Unit有一個或多個入口,一個出口;也就是說可以有多個Unit或Terminal作為一個Unit的輸入源頭,而資料在流經Unit後僅能作為其他Unit或Terminal的一個輸入源頭。
規範1.5中定義了四種Unit:
Selector Unit (SU),Processing Unit (PU),Extension Unit (EU),Extension (XU)
1)SU(選擇單元)
SU單元用來控制影象資料採集源的切換和選擇。例如上面相機拓撲圖有兩個資料輸入源,這時需要SU來進行切換和選擇。
選擇單元一般在拓撲圖中用下圖表示:

2)PU(處理單元)
PU代表對採集所得影象資料進行加工的單元,負責對採集到的影象特性進行調整設定,主要有以下一些特性:

User Controls
Brightness(背光)
Contrast(對比度)
Hue(色度)
Saturatio(飽和度)
Sharpness(銳度)
Gamma(伽馬)
Digital Multiplier (Zoom)(數字放大)

Auto Controls
White Balance Temperature(白平衡色溫)
White Balance Component(白平衡元件)
Blcklight Compensation(背光補償)
Contrast(對比度)

Other
Gain(增益)
Power Line Frequency(功率線平率)
Analog Video Standard(模擬視訊標準)
Analog Video Lock Status(模擬視訊死鎖狀態)

處理單元一般在拓撲圖中用下圖表示:

3)EU(編碼單元)

EU用於對採集所得的資料進行個性化處理的功能。 編碼單元一般在拓撲圖中用下圖表示:

4)XU(擴充套件單元)

XU是為了特定供應商新增規範而提供的單元。

擴充套件單元一般在拓撲圖中用下圖表示:

3.3、Video Control Interface(視訊控制介面)
VC主要用於控制UVC功能中的Units和Terminals,通過對不同的Units和Terminals下發不同的指令,從而影響UVC裝置的當前工作狀態;Host端下發的所有對UVC裝置的操縱控制命令都是經由此Interface完成的。以上面拓撲圖所表示的裝置為例:

該裝置包含了一個Processing Unit、一個Input Terminal、Output Terminal和Selector Unit,VC Interface需要對它們下發不同的命令,為此VC Interface需要包含一個控制端點(強制性要求),它使用的就是每個USB裝置中預設的端點0。另外一個Interrupt端點則是可選的,用來返回或通知Host端當前的UVC裝置內部狀態有變化。大部分情況下,一個UVC裝置的VC Interface不需一定要實現此端點,但一旦UVC裝置需要實現某些特定feature時,Spec會強制性要求實現該interrupt端點。

3.4、Video Streaming Interface(視訊流介面)
VS Interface則專注與負責傳輸UVC裝置的Video資料到Host端。若一UVC裝置支援n種格式的Video資料,則它需要實現n個VS Interface,每個Interface對應一種專門的資料格式;

3.5、VideoInterfaceCollection(視訊介面集合)&&InterfaceAssociationDescription(視訊關聯描述符)

  A device can support multiple configurations. Within each configuration can be multiple interfaces, each possibly having alternate settings. These interfaces can pertain to different functions that co-reside in the same composite device. Several independent video functions can exist in the same device. Interfaces that belong to the same video function are grouped into a Video Interface Collection described by an Interface Association Descriptor. If the device contains multiple independent video functions, there must be multiple Video Interface
Collections (and hence multiple Interface Association Descriptors), each providing full access to their associated video function.
    As an example of a composite device, consider a desktop camera equipped with a built in microphone. Such a device could be configured to have one interface collection dealing with configuration and control of the audio function, while another interface collection deals with its video aspects. One of those, the VideoControl interface, is used to control the inner workings of the function, whereas the other, the VideoStreaming interface, handles the data traffic received from the camera video subsystem.
    Video Interface Collections can be dynamic in devices that support multiple operating modes. Because the VideoControl interface, together with its associated VideoStreaming interface(s), constitutes the ‘logical interface’ to the video function, they must all come into existence at the same moment in time. Changing the operating mode of a device causes the previous Video Interface Collection to be replaced with a new Video Interface Collection, followed by reinitialization of the host software. This specification does not provide a mechanism for the host to initiate such a mode change, which is typically initiated via a physical switch on the device.As stated earlier, video functionality is located at the interface level in the device class hierarchy.The following sections describe the Video Interface Collection, containing a single VideoControl interface and optional VideoStreaming interfaces, together with their associated endpoints that are used for video function control and for data stream transfer.
中:
    一個裝置可以支援多種配置,每個配置內可能有多個介面,每個介面可能會被輪流設定。這些介面可能存在於同一複合裝置的不同功能中。幾個獨立的視訊功能可能存在於同一裝置內,屬於同一功能的介面被分配到視訊介面集合用IAD描述。如果裝置包含多個獨立的視訊功能,那麼就可能存在多個視訊介面集合(個人理解為一個獨立的視訊功能對應一個集合)。
   比如一個裝配有內建麥克風的桌面照相機作為一個例子。有一個介面集合去處理對音訊功能的控制與配置,另外一個介面集合則去處理視訊方面的控制與配置。在其中一個介面集合中,VC介面會對該功能內部進行控制,另外一個VS介面則去處理來自相機視訊子系統傳輸過來的資料。
    視訊介面集合在支援多個操作模式的裝置中是動態的。因為VC介面和VS介面組成視訊功能中的“邏輯介面”,它們必須在同一時刻同時存在。改變裝置的操作模式則之前的視訊介面集合也會被新的視訊介面集合替換,緊隨著由主機軟體重新初始化。本說明書中沒有提供用於主機的機制來啟動這樣的模式改變,這是通過裝置上的物理開關啟動的。
    如上所述,視訊功能位於裝置類結構層次的介面層。接下來的章節將描述視訊介面集合,包含了單個VC介面和可選的VS介面,結合它們的關聯端點用於將視訊功能控制和資料流傳輸。
View Code 視訊介面集合 視訊介面集合是用於管理同一功能中VC和VS介面的。如果裝置包含多個獨立的視訊功能,那麼就可能存在多個視訊介面集合。 視訊關聯描述符 一個裝置必須使用一個IAD(介面關聯描述符)去描述一個VideoInterfaceCollection(視訊介面集合),USB協議中並沒有專門朝裝置索取IAD的命令,AD需作為Configuration描述符的一部分發送給Host端(返回GetDescriptor(Configuration)請求的迴應)。在該Configuration描述符的排列順序中,IAD要放在它所包含的VC,VS描述符之前,且同一個IAD中所有的VC,VS Interface的Interface number必須連貫。 4、Descriptor(描述符) 描述符用來描述USB裝置效能或特向的資料結構,與裝置類相關的資訊都是主機向裝置獲取描述符來得到的。 在UVC所規定的描述符中除了常用的標準描述符,另外還定義了視訊裝置的特殊類描述符,主要如下: 標準描述符
  • 裝置描述符(Device Descriptor)
  • 裝置限定描述符(Device QualifierDescriptor)
  • 裝置配置描述符(Configure Descriptor)
  • 其他速度描述符(Other Speed Descriptor)
  • 字元描述符​(String Descriptor)
特殊類描述符
  • 介面聯合描述符(Interface Association Descriptor)
  • 視訊控制介面描述符(VideoControl InterfaceDescriptor)
  • 視訊控制端點描述符(VideoControl EndpointDescriptor)
  • 視訊流介面描述符(VideoStreaming InterfaceDescriptor)
  • 視訊流端點描述符(VideoStreaming EndpointDescriptor)
5、Request (請求) 請求是主機軟體與實體中控制器交流的一種機制。請求都是由主機向裝置端發起的功能請求,所有的USB裝置都需要支援標準的裝置請求和與Class相關的特殊類請求。 標準請求 在標準協議中有相關描述,不做詳細展開 特殊類請求 事實上特殊類請求也可以根據介面來分成兩大類:1)、視訊控制請求,2)視訊流請求。 1)視訊控制請求有:
  • 介面控制請求(InterfaceControl Request)
  • Camera終端控制請求(Camera Terminal Control Request)
  • 選擇單元控制請求(Selector Unit ControlRequest)
  • 處理單元控制請求(Processing Unit ControlRequest)
  • 擴充套件單元控制請求​(ExtensionUnit ControlRequest)
2)視訊流請求僅有介面控制請求(InterfaceControl Request)一種: Interface Control Requests因為是用來在主機和裝置之間協商資料互動格式和解析度,流量等資訊的,所以一般來說是必須實現的。 Camera Terminal Control Requests包含了對曝光時間,曝光模式,對焦,變焦,平移等sensor獲取資料階段時的引數控制。 Processing Unit Control Requests中則包含了亮度,增益,色調,對比度,白平衡等等sensor在獲取到影象資料後,影象處理階段的相關引數。 不過實際上,以上兩者的劃分在硬體層次並不是絕對的。很多引數的控制在sensor硬體級別上是同一層次的。不過,將這些功能抽象成這兩類,正如在硬體的拓撲結構上將功能模組抽象出來一樣,有利於通用化的程式設計。