藍牙AVDTP協議

AVDTP簡介(AUDIO/VIDEO DISTRIBUTION TRANSPORT PROTOCOL)

AVDTP協議指定音頻或視頻分發的傳輸協議,簡稱AVDTP,通過藍牙空中傳輸流媒體音頻或視頻。音頻和視頻數據流需要同步的數據傳輸能力,A/V分發傳輸協議的傳輸機制和消息格式,基於《RFC 3350》中定義的RTP,其中由兩大協議組成:RTP數據傳輸協議(RTP)和RTP控制協議(服務器)。

AVDTP在整個協議棧中的結構圖如下圖所示:

常用術語及定義

首先對協議中常用的一些術語和定義做一個簡要說明:

  1. Stream:兩個點對點設備之間的流媒體數據
  2.     Source (SRC) and Sink (SNK):依賴與應用層的兩種角色,音頻源和接收方。這兩種角色都是在A2DP定義的。
  3.     Initiator (INT) and Acceptor (ACP):啓動過程的設備作爲啓動者、接受啓動的設備爲接收者。要注意的是INT和ACP獨立於上層應用定義的SRC和SNK,並且不能對應底層L2CAP中的角色
  4.     Application and Transport Service Capabilities:應用服務和傳輸服務的功能。應用服務功能比如協商、配置音源設備的codec,內容保護系統等;傳輸服務能力比如數據報文的分割和重組,數據包的防丟檢測等等。
  5.     Services, Service Categories, and Service Parameters:服務、服務類別、服務參數
  6.     Media Packets, Recovery Packets, and Reporting Packets:流媒體包,數據恢復包,報告報文
  7.     Stream End Point (SEP):流端點,流端點是爲了協商一個流而公開可用傳輸服務和A/V功能的應用程序
  8.     Stream Context (SC):流上下文。指在流設置過程中,兩個對等設備達到一個公共的瞭解流的配置,包括選擇的服務,參數,以及傳輸通道分配。
  9.     Stream Handle (SH):流句柄。在SRC和SNK建立了連接之後分配的一個獨立的標識符,代表了上層對流的引用
  10.     Stream End Point Identifier (SEID):流端點標識,對特定設備的跨設備引用,該引用用於信令事物
  11.     Stream End Point State:流端點狀態
  12.     Transport Session:傳輸會話。在A/V傳輸層的內部,在配對的AVDTP實體之間,流可以分解爲一個、兩個或多個、三個傳輸會話。
  13.     Transport Session Identifier (TSID):傳輸會話標識。代表對一個傳輸會話的引用。
  14.     Transport Channel:傳輸通道。傳輸通道指的是對A/V傳輸層下層承載程序的抽象,始終對應L2CAP的通道
  15.     Transport Channel Identifier (TCID):傳輸通道標識。代表對一個傳輸通道的引用。
  16.     Reserved for Future Additions(RFA):保留給將來添加
  17.     Reserved for Future Definitions (RFD):保留給將來定義
  18.     Forbidden (F):禁用
     

A/V架構:

AVDTP協議架構(Architecture )

上圖AVDTP協議部分總共分爲四個功能塊,信令、流管理,數據恢復和適配層,同時圖中的九個數字標號,代表了九類接口功能,如下圖所示:

流端點體系架構

A/V設備可以提供一個或多個流資源,這意味着源或媒體流的接收器。從概念上講,流的終點(源或匯)連接位於設備的應用層。但是,終點是在AVDTP層中表示,用於協商和操作流。如所示圖,AVDTP使用抽象流端點(SEP)的概念表示設備的資源和功能。

例如,假設設備A有2個SEP標記爲u和v,其中SEP u表示視頻接收器,SEP v表示音頻接收器。設備B有三個SEP,標記爲x、y和z,代表音頻源。設備A應該與設備B中的一個音頻源建立音頻流連接。

設備A和設備B分別爲其SEP維護本地流端點標識符(SEID,見第4.10節)。第一設備A使用AVDTP服務來發現對等設備的資源。從這個過程中,設備A學習設備B中的三個SEP的(設備B本地)SEID和媒體類型(這裏:音頻源)。在續集中,設備A使用另一個AVDTP服務來收集其中一個遠程SEP的應用程序和傳輸服務能力,例如SEP z.在這個事務中,設備B通過設備B之前呈現的SEID來引用SEP z。在瞭解了B公開的所有功能並將其與自己的本地功能進行比較之後,設備A可以使用另一個AVDTP服務來配置流連接。注意,如何選擇服務的評估和決策發生在設備A的應用層,因此在AVDTP之外。存在本地SEP v(具有自己的本地SEID),它具有匹配能力和因此可以與設備B的SEP z連接,是隱式假設的。因此,設備A的AVDTP實體不需要知道本地SEP v的能力。但是,通過啓動配置過程,設備A隱式地承認它在本地SEP中具有匹配能力,並將本地SEP v(帶有本地SEID)映射到遠程SEP z(具有遠程SEID),這樣兩個設備都知道各自的遠程SEID,以備將來相互參考。當配置過程成功終止時,設備A和設備B中的資源都應被分配(鎖定),並且設備A中的SEP v和設備B中的SEP z都不能被配置爲另一個流連接,例如通過第三個設備。

注意,儘管這兩個設備在概念上都有sep,但它們的關係遵循非對稱的客戶機-服務器模型,應用程序使用AVDTP服務來管理遠程設備中的流資源。設備B向設備A公開其所有能力,但設備A不向設備B公開其能力。在隨後的信令過程中,流連接應由遠程設備的SEID引用。在設備A中,必須存在本地SEP(資源),並且具有足夠的能力來建立可互操作的流連接。狀態機屬於每個流終結點,並且存在於AVDTP層中。所有對應用程序有重要意義的狀態變化都應通過上部暴露出來接口。每個應用程序支持的編解碼器應使用單獨的流端點,但是同一個編解碼器可以有多個流端點。

狀態機屬於每個流端點,並且存在於AVDTP層中。所有對應用程序有重要意義的狀態更改都應通過上層接口公開。應用程序支持的每個編解碼器應使用單獨的流端點,但同一編解碼器可以有多個流端點。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章