日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

UVC协议学习1--初步了解标准协议规范(UVC1.5为例)

發布時間:2023/12/10 c/c++ 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UVC协议学习1--初步了解标准协议规范(UVC1.5为例) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言 ? ? 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和另一個復合視頻設備得到的數據流由IT和CT輸入,經過SU選擇送到PU處理,再由OT綁定到指定的USB端點。最后由USB端點與主機交互數據發送到host。在實際的UVC設備設備中,可能沒有上圖中的一些功能某塊,可能只有其中一些模塊來完成的。
? ? 同時從上面的拓撲結構圖可以看出,左半部分框架組成了UVC中的VC接口部分,右半部分框架組成了VS接口部分。

3、概念補充 3.1 Terminal(端點 ? ? Terminal是指整個UVC功能的入口和出口,邏輯意義上講Terminal只有一個出口或者入口,它要么代表整個UVC功能的數據輸入點,要么代表數據在流經UVC功能內部的各Unit功能單元后的最終流入點。 1)IT(輸入端點) ?? ?作為數據流入video?function的接收器,功能是作為已經被提取出來的數據的數據源,說白了就是UVC功能的數據源頭。 輸入端點一般在拓撲圖中用下圖表示: ? ? ? ? ? ? ? ? ? ? ? 2)、OT(輸出端點) ?? ?作為Video?Function視頻信息流出的出口,功能是作為輸出數據的接收器。OT只有一個輸入pin,處理流程最后一個單元會將它的out pin與OT的in pin連接在一起。 輸出端點一般在拓撲圖中用下圖表示: 3)、CT(Camera端點) ?? ?CT代表硬件上的數據采集源(sensor),用于控制視頻流傳輸中的設備特性的。它規定支持以下特性控制
  • 掃描模式(逐行掃描或隔行掃描)
  • 自動曝光模式
  • 自動曝光優先級
  • 曝光時間
  • 聚焦
  • 自動聚焦
  • 可變光圈
  • 縮放/變焦
  • 移動鏡頭
  • 滾動
  • 傾斜
  • 數字窗口
  • 感興趣區域
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代表對采集所得圖像數據進行加工的單元,負責對采集到的圖像特性進行調整設置,主要有以下一些特性: Usr Controls
  • Brightness(背光)
  • Contrast(對比度)
  • Hue(色度)
  • Saturatio(飽和度)
  • Sharpness(銳度)
  • Gamma(伽馬)
  • Digital Multiplier (Zoom)(數字放大)
Auto Controls
  • White Balance Temperature(白平衡色溫)
  • White Balance Component(白平衡組件)
  • Blcklight Compensation(背光補償)
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、Video?Interface?Collection(視頻接口集合)&&Interface?Association?Description(視頻關聯描述符) (翻譯Operational?Model部分段落)? 英: ?? ?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接口,結合它們的關聯端點用于將視頻功能控制和數據流傳輸。

視頻接口集合 ? ? 視頻接口集合是用于管理同一功能中VC和VS接口的。如果設備包含多個獨立的視頻功能,那么就可能存在多個視頻接口集合。
視頻關聯描述符 ?? ?? ? 一個設備必須使用一個IAD(接口關聯描述符)去描述一個Video?Interface?Collection(視頻接口集合),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 Interface?Descriptor)
  • 視頻控制端點描述符VideoControl Endpoint?Descriptor
  • 視頻流接口描述符(VideoStreaming Interface?Descriptor
  • 視頻流端點描述符VideoStreaming Endpoint?Descriptor
4.1?描述符的布局


5、Request (請求) ? ? 請求是主機軟件與實體中控制器交流的一種機制。請求都是由主機向設備端發起的功能請求,所有的USB設備都需要支持標準的設備請求和與Class相關的特殊類請求。
標準請求 在標準協議中有相關描述,不做詳細展開
特殊類請求 ? ? 事實上特殊類請求也可以根據接口來分成兩大類:1)、視頻控制請求,2)視頻流請求。 1)視頻控制請求有:
  • 接口控制請求(Interface?Control Request
  • Camera終端控制請求(Camera Terminal Control Request)
  • 選擇單元控制請求(Selector Unit Control?Request)
  • 處理單元控制請求(Processing Unit Control?Request
  • 擴展單元控制請求?(Extension?Unit Control?Request
2)視頻流請求僅有接口控制請求(Interface?Control Request)一種:

?? ?Interface Control Requests因為是用來在主機和設備之間協商數據交互格式和分辨率,流量等信息的,所以一般來說是必須實現的。 ?? ?Camera Terminal Control Requests包含了對曝光時間,曝光模式,對焦,變焦,平移等sensor獲取數據階段時的參數控制。 ?? ?Processing Unit Control Requests中則包含了亮度,增益,色調,對比度,白平衡等等sensor在獲取到圖像數據后,圖像處理階段的相關參數。 ??不過實際上,以上兩者的劃分在硬件層次并不是絕對的。很多參數的控制在sensor硬件級別上是同一層次的。不過,將這些功能抽象成這兩類,正如在硬件的拓撲結構上將功能模塊抽象出來一樣,有利于通用化的程序設計。


暫時先整理這么多,等再行理解后再補充。
參考資料 百度文庫:https://wenku.baidu.com/view/d1664b4e767f5acfa1c7cd74.html 2cto:https://m.2cto.com/kf/201806/751471.html

總結

以上是生活随笔為你收集整理的UVC协议学习1--初步了解标准协议规范(UVC1.5为例)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。