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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

USB协议-UVC描述符篇(三)

發(fā)布時間:2023/12/10 c/c++ 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 USB协议-UVC描述符篇(三) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

USB協(xié)議-UVC描述符篇(三)

  • 1.概述
  • 2.UVC描述符布局
  • 3.設(shè)備描述符
  • 4.配置描述符
  • 5.接口關(guān)聯(lián)描述符 - IAD
  • 6.視頻控制接口描述符
    • 6.1 視頻標(biāo)準(zhǔn)接口描述符
    • 6.2 類特定視頻控制接口header描述符
      • 6.2.1 輸入端點描述符
      • 6.2.2 輸出端點描述符
      • 6.2.3 相機端點描述符
      • 6.2.4 SU選擇器單元描述符
  • 7.視頻控制端點描述符
    • 7.1VC控制端點描述符
      • 7.1.1 標(biāo)準(zhǔn)VC控制端點描述符
      • 7.1.2 類特定的VC控制端點描述符
    • 7.2 VC中斷端點描述符
      • 7.2.1 標(biāo)準(zhǔn)VC中斷端點描述符
      • 7.2.2 類特定VC中斷端點描述符
  • 8.視頻流接口描述符
    • 8.1 標(biāo)準(zhǔn)視頻流接口描述符
    • 8.2 類特定視頻流接口描述符
      • 8.2.1 輸入頭描述符
      • 8.2.2 輸出頭描述符
      • 8.2.3 負載格式描述符
      • 8.2.4 視頻幀描述符
      • 8.2.5 圖像幀描述符
      • 8.2.6 顏色匹配描述符
  • 9.視頻流端點描述符
  • 10.UVC描述符布局

1.概述

USB設(shè)備的描述符用于向主機報告其設(shè)備的屬性信息,UVC設(shè)備屬于USB設(shè)備的一種,故和通用的USB設(shè)備一樣,也包含設(shè)備描述符、配置描述符、接口描述符、端點描述符和字符串描述符。

UVC設(shè)備也定義了一些特有的描述符,用于對USB視頻設(shè)備的擴展。這些特有的UVC描述符和通用的USB描述符,共同組成了UVC設(shè)備的描述符,用于對UVC設(shè)備信息的描述。

關(guān)于USB通用描述符請查看USB協(xié)議-描述符篇(一)

2.UVC描述符布局

下圖展示了一個UVC設(shè)備其描述符的整體布局,該設(shè)備使用一個等時/同步傳輸端點用于傳輸視頻數(shù)據(jù),使用一個批量傳輸端點傳輸靜態(tài)圖像數(shù)據(jù)。如果端點支持臨時編碼數(shù)據(jù)格式,該描述符布局也包含一個編碼單元。


在該描述符布局中,首先第一項是設(shè)備描述符,其次是配置描述符,并且該設(shè)備只擁有一個配置描述符。
配置描述符后接一個接口關(guān)聯(lián)描述符IAD,接口關(guān)聯(lián)描述符IAD擁有一個視頻控制接口VC和N個視頻流接口。

視頻控制接口包括視視頻控制接口頭描述符、輸入終端描述符、處理單元描述符、編碼單元描述符、輸出終端描述符、中斷斷點描述符。

視頻流接口中包括一個接口和與其對應(yīng)的多個轉(zhuǎn)換設(shè)置接口(Alternate Setting)。
其中轉(zhuǎn)換設(shè)置接口0描述了臨時編碼數(shù)據(jù)格式,用于支持臨時編碼數(shù)據(jù)格式,用于使用了等時/同步傳輸,故轉(zhuǎn)換設(shè)置接口0不包含數(shù)據(jù)傳輸端點信息。數(shù)據(jù)傳輸端點信息在其它轉(zhuǎn)換設(shè)置接口中描述。

3.設(shè)備描述符

UVC設(shè)備使用通用的USB設(shè)備描述符來描述設(shè)備信息。
根據(jù)UVC設(shè)備是否包含視頻流接口,UVC設(shè)備的設(shè)備描述符分為兩類:

  • 對于包含只暴露視頻控制接口的UVC設(shè)備,通常視頻的功能常常在接口描述符中來定義,設(shè)備描述符的bDeviceClass字段,bdevices子類字段,和bDeviceProtocol字段必須設(shè)置為零,以便枚舉查看接口以確定接口類。
OffsetFieldSizeValueDescription
4bDeviceClass1Class只暴露VC接口,需要設(shè)置 0x0
5bDeviceSubClass1SubClass同上, 設(shè)置 0x0
6bDeviceProtocol1Protocol0x0
  • 對于包含一個或多個視頻接口集合的設(shè)備,通常視頻的功能常常在接口描述符中來定義。但是由于使用了接口關(guān)聯(lián)描述符描述視頻接口集,所以必須設(shè)置bDeviceClass,bDeviceSubClass和bDeviceProtocol字段分別為0xEF、0x02和0x01。 目前大多數(shù)UVC設(shè)備都采用的是這一種了。
OffsetFieldSizeValueDescription
4bDeviceClass1Class設(shè)置成混雜設(shè)備類, 0xEF
5bDeviceSubClass1SubClass標(biāo)識一個IAD描述符,必須設(shè)置0x02
6bDeviceProtocol1Protocol標(biāo)識一個IAD描述符,必須 0x1

4.配置描述符

UVC設(shè)備的配置描述符也是使用通用USB描述符。規(guī)范定義在 defined in section 9.6.3。
配置描述符可以通過GetDescriptor獲取,它將攜帶UVC所有的描述符一起返回給HOST端。關(guān)于描述符在內(nèi)存中的布局請看最后一節(jié)。

5.接口關(guān)聯(lián)描述符 - IAD

對于有多個視頻流接口的設(shè)備必須使用接口關(guān)聯(lián)描述符。該描述符也是和USB通用關(guān)聯(lián)描述符相同。

接口關(guān)聯(lián)描述符是用來描述視頻控制接口和一個或多個視頻流接口的每個設(shè)備功能的視頻接口集合。標(biāo)準(zhǔn)的VIC接口集關(guān)聯(lián)描述符與接口關(guān)聯(lián)描述符ECN中定義的標(biāo)準(zhǔn)接口關(guān)聯(lián)描述符相同,只是有些字段現(xiàn)在具有專用值。

OffsetFieldSizeValueDescription
0bLength1Number描述符全部長度
1bDescriptorType1Constant描述符類型,該值為0x0b
2bFirstInterface1Number第一個接口編號。關(guān)聯(lián)描述符中的接口號必須連續(xù)
3bInterfaceCount1Number該功能接口總數(shù)量(包括視頻控制接口和所有視頻流接口)
4bFunctionClass1ClassClass code,UVC定義了視頻接口類代碼CC_VIDEO,值為0x0E
5bFunctionSubClass1Subclass視頻子類接口代碼 SC_VIDEO_INTERFACE_COLLECTION,值為0x03
UVC IAD Subclass
6bFunctionProtocol1Protocol未用,必須為PC_PROTOCOL_UNDEFINED,值為0x00 或者 PC_PROTOCOL_15, 值為0x01
7iFunction1index功能描述符的索引值

6.視頻控制接口描述符

VideoControl(VC) Interface Descriptors包含了視頻功能的全部信息充分描述其特征。
視頻控制接口描述符由標(biāo)準(zhǔn)視頻控制接口描述符以及各控制相關(guān)描述符( class-specific interface descriptor特定與類的接口描述符)組成。

6.1 視頻標(biāo)準(zhǔn)接口描述符

Standard VC Interface Descriptor視頻標(biāo)準(zhǔn)接口描述符使用的是USB通用的接口描述符。
其在UVC設(shè)備中定義如下:

bLength : 描述符大小.固定為0x09.bDescriptorType : 接口描述符類型.固定為0x04.bInterfaceNumber: 該接口的編號,接口編號從0開始.bAlternateSetting : 用于為上一個字段選擇可供替換的位置.即備用的接口描述符編號.bNumEndpoint : 使用的端點數(shù)目.端點0除外.bInterfaceClass : 類型代碼,固定為CC_VIDEO,值為0x0E.bInterfaceSubClass : 子類型代碼,固定為SC_VIDEOCONTROL,值為0x01.bInterfaceProtocol : 協(xié)議代碼,PC_PROTOCOL_15為0x01,PC_PROTOCOL_UNDEFINED未定義為0x00.iInterface : 字符串描述符的索引
  • 其中bInterfaceSubClass 視頻接口子類主要有以下定義字段:

視頻接口subclass code碼:

Video Subclass CodesValue
SC_UNDEFINED0x00
SC_VIDEOCONTROL0x01
SC_VIDEOSTREAMING0x02
SC_VIDEO_INTERFACE_COLLECTION0x03
  • bInterfaceProtocol 視頻接口協(xié)議即UVC協(xié)議主要有以下字段:

視頻接口協(xié)議code標(biāo)識碼:

Video Interface Protocol CodesValue
PC_PROTOCOL_UNDEFINED0x00
PC_PROTOCOL_150x01

6.2 類特定視頻控制接口header描述符

Class-Specific VC Interface heard Descriptor類特定視頻控制接口頭描述符是用于完整描述視頻功能的所有一連串相關(guān)的描述符,即所有單元描述符 (UDs) 和終端描述符 (TDs) 。

類特定視頻控制接口頭描述符的總長度依賴于視頻功能中的單元數(shù)量(Units)和端點(Teminals)數(shù)決定的。因此,(類特定VC接口)描述符以一個包含wTotalLength的字段用于反映整個類特定視頻控制(VC)接口描述符的字節(jié)總長度的header頭部開始。

類特定視頻控制接口頭描述符位于UVC 標(biāo)準(zhǔn)視頻控制接口描述符之后,是控制單元和端點的描述符頭。
The following table defines the class-specific VC interface header descriptor.

OffsetFieldSizeValueDescription
0bLength1Number結(jié)構(gòu)體自身長度12+bInCollection(即12+n)
1bDescriptorType1Constant描述符類型:CS_INTERFACE,值為0x24
2bDescriptorSubType1Constant描述符子類型VC_HEADER,值為0x01,用于進一步確定描述符的性質(zhì)
3bcdUVC2BCDUVC規(guī)范協(xié)議版本號:UVC15: 0x0150;UVC10: 0x0100
5wTotalLength2Number類特定VC接口描述符總長度,包含這個描述符的header長度和Until描述符及terminal描述符的長度
7dwClockFrequency4Number時鐘頻率,以HZ為單位。新規(guī)范已經(jīng)丟棄了
11bInCollection1Number此Video Control接口所屬的Video Interface Collection中有多少個Video Streaming接口數(shù)量:n
12baInterfaceNr(1)1Number在這個VIC集合中第一個VideoStreaming的接口號
12+(n-1)baInterfaceNr(n)1Number在這個VIC集合中最后一個VideoStreaming的接口號

類特定視頻控制接口頭描述符后跟1個或多個控制單元和終端實例描述符。后續(xù)的控制單元或終端實例都有惟一的一個ID,并且從1開始(0用做保留未定義),最大到255。其ID在其描述符的 bUnitID 或 bTerminalID中指定。

控制單元或終端實例的ID除了用于尋址外,也用于描述視頻功能的拓撲結(jié)構(gòu)。

6.2.1 輸入端點描述符

Input Terminal Descriptor in section 3.7.2.1

6.2.2 輸出端點描述符

Output Terminal Descriptor in section 3.7.2.2

6.2.3 相機端點描述符

Camera Terminal Descriptor in section 3.7.2.3

6.2.4 SU選擇器單元描述符

Selector Unit Descriptor

7.視頻控制端點描述符

本小節(jié)將描述所有相關(guān)Video Control interface的端點描述符。

7.1VC控制端點描述符

7.1.1 標(biāo)準(zhǔn)VC控制端點描述符

端點0被用作Standard VideoControl control endpoint的控制端點。

7.1.2 類特定的VC控制端點描述符

UVC設(shè)備沒有Class-Specific VC Control Endpoint Descriptor

7.2 VC中斷端點描述符

VC Interrupt Endpoint Descriptors VC中斷端點描述符。
標(biāo)準(zhǔn)和特定于類的中斷端點描述符提供有關(guān)設(shè)備中斷使用的所有信息

7.2.1 標(biāo)準(zhǔn)VC中斷端點描述符

Standard VC Interrupt Endpoint Descriptor標(biāo)準(zhǔn)VC中斷端點描述符使用的是通用的USB端點描述符來描述端點信息。 (defined in section 9.6.6 “Endpoint” of USB Specification Revision 2.0 or USB Specification Revision 3.0.)

7.2.2 類特定VC中斷端點描述符

特定于類的中斷端點描述符提供有關(guān)設(shè)備能夠發(fā)送的最大中斷結(jié)構(gòu)大小的信息。 主機驅(qū)動程序?qū)⑹褂么酥祦矸峙渥銐虼笮〉木彌_區(qū)以接收最大中斷結(jié)構(gòu)大小。 如果定義了標(biāo)準(zhǔn)中斷端點描述符,則此描述符是必需的。

OffsetFieldSizeValueDescription
0bLength1Number結(jié)構(gòu)體自身長度5
1bDescriptorType1Constant描述符類型:CS_ENDPOINT,值為0x24
2bDescriptorSubType1ConstantEP_INTERRUPT
3wMaxTransferSize2Number此端點能夠發(fā)送的最大中斷結(jié)構(gòu)大小。

8.視頻流接口描述符

VideoStreaming Interface Descriptors 視頻流接口描述符包含了所有相關(guān)流接口的完整信息。

8.1 標(biāo)準(zhǔn)視頻流接口描述符

Standard VS Interface Descriptor 標(biāo)準(zhǔn)流接口描述符和USB通用接口描述符相同。
UVC標(biāo)準(zhǔn)接口字段定義:

bLength : 描述符大小.固定為0x09.bDescriptorType : 接口描述符類型.固定為0x04.bInterfaceNumber: 該接口的編號,接口編號從0開始.bAlternateSetting : 用于為上一個字段選擇可供替換的位置.即備用的接口描述符編號.bNumEndpoint : 使用的端點數(shù)目.端點0除外.bInterfaceClass : 類型代碼,固定為CC_VIDEO,值為0x0E.bInterfaceSubClass : 子類型代碼,固定為SC_VIDEOSTREAMING,值為0x02.bInterfaceProtocol : 協(xié)議代碼,PC_PROTOCOL_15為0x01,PC_PROTOCOL_UNDEFINED未定義為0x00.iInterface : 字符串描述符的索引

8.2 類特定視頻流接口描述符

Class-Specific VS Interface Descriptors類特定VS接口描述符由輸入頭、輸出頭、格式和幀描述符組成。
每個 VS 接口都有一個輸入或輸出頭描述符,每個支持的視頻流格式都有一個單獨的格式描述符,每個格式描述符都有一個單獨的幀描述符列表(如果格式需要幀描述符)。 標(biāo)頭、格式和幀描述符僅在相關(guān)接口的備用設(shè)置 0 中定義。 它們不會在同一界面的后續(xù)備用設(shè)置中重復(fù)。

8.2.1 輸入頭描述符

Input Header Descriptor

8.2.2 輸出頭描述符

Input Header Descriptor

8.2.3 負載格式描述符

8.2.4 視頻幀描述符

Video Frame Descriptor

8.2.5 圖像幀描述符

Still image Frame Descriptor

8.2.6 顏色匹配描述符

Color Matching Descriptor

9.視頻流端點描述符

Video Streming endpoint descriptor

10.UVC描述符布局

UVC攝像頭的配置描述符內(nèi)存布局實例

下面引用一段UVC攝像頭的配置描述符內(nèi)存布局。

USB_CONFIGURATION_DESCRIPTOR(配置描述符) USB_INTERFACE_ASSOCIATION_DESCRIPTOR(接口關(guān)聯(lián)描述符)USB_VC_HEADER(UVC控制接口頭描述符)Video Control Input Terminal DescriptorVideo Control Processing Unit DescriptorVideo Control Extension Unit DescriptorVideo Control Output Terminal DescriptorEndpoint DescriptorClass-specific VC Interrupt Endpoint DescriptorVC-Specific VS Video Input Header Descriptor(視頻流接口描述符)VS Frame Based Payload Format Type DescriptorVS Frame Based Payload Frame Type DescriptorEndpoint Descriptor

總結(jié)

以上是生活随笔為你收集整理的USB协议-UVC描述符篇(三)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。