WiFI Display(WFD)是WiFI Alliance 開發出的一種規范,使多媒體設備之間建立和維持一個基於WiFi的連接,並且利用這個連接推進視頻/音頻的在目標設備的呈現播放。
1 WFD簡介
Wi-Fi Display,手機/移動PC-電視/顯示器將可以實現無線連接。該標准由WiFi無線產業聯盟制定,還在測試中,技術可以壓縮3D視頻,從而通過Wi-Fi傳輸。3D視頻很耗寬帶,如果不壓縮就會遲滯,Wi-Fi Display技術可以將延遲時間降到百分之一毫秒以下。
Miracast實際上就是WiFi聯盟(WiFi Alliance)對支持WiFi Display功能的設備的認證名稱(該認證項目已經在2012年9月正式啟動)。而通過Miracast認證的設備,便可提供簡化發現和設置,實現設備間高速傳輸視頻。
2 WFD建立和檢測
(1)設備間建立WFD
1)必要的部件
這里所說的設備,是指有android系統的手機、平板、TV等,或者有HDMI口的TV。
設備間創建WFD是由2個設備來建立的,其中一個為發送端(Source),另一個為接收端(Sink)。 如下圖所示為WFD的建立示意圖。
2)使用無線傳屏器同電視建立連接
1.將無線傳屏器和電視使用HDMI線連接;
2.將電視打開,同時確保電視選擇HDMI接入,而不是在其他接入方式;
3.使用micro-USB線給無線傳屏器供電;
4.打開手機、平板或電腦的投射功能進行連接。
(2)測試Wifi Display(使用兩台手機)
1)打開手機設置界面點擊“顯示”
2)在顯示界面點擊投射
3)在投射界面點擊右上方的圖標
4)點擊勾選“開啟無線顯示”
5)在另一台手機進行上述同樣的操作
6)打開此設備,讓其他設備可檢測到此設備
7)此時等待其他設備連接
8)此時另一台設備界面會有已打開設備的設備號,點擊連接,第一台設備將收到建立連接的提示 9)點擊“接收”,此時投射成功
3 WFD調試基礎
(1)文件位置 在平台基線的base的Vendor/qcom/proprietary/下。
Kernel 中的WFD代碼位於\kernel\drivers\media\platform\msm\wfd
(2)JNI的交互 在WFD代碼中,WFD的實現是通過JNI同使用C/C++寫的framework層和java寫的API組成的。其控制流如下:
WFD app->SessionManagerService.java(SM-A)->WFDNative.java->JNI Layer->WFDNative.cpp->Wifidislay.cpp->SessionManager.cpp(SM-B)。
(3)WFD連接基礎
WFD建立在wifi p2p連接基礎上的,支持以下兩種連接方式
1)wifi direct:(必須支持)
設備無需通過無線路由器即可相互連接的技術,需要一台設備作為組織者建立一個類似ap功能的網絡,其他設備可以搜索到並用wifi連接上
2)TDLS:(可選)
2台wifi設備連接在同一個Ap上,它們可以直接建立一個點對點的通道實現數據傳輸。 如下圖所示為WFD建立的11個過程。
1.Device Discovery
wfd設備之間的搜索探測功能,使用現有的wifi p2p技術為基礎,並在wifi信標、探測信號中加入了wfd特有格式的探測信號。
2.Service discovery
此功能是可選功能,也是建立在wifi p2p原有的servicediscovery基礎上,並加入wfd特有格式的請求和回應命令。
3.Device selection
用戶選擇一個需要連接的設備,Wifi-direct 連接的強制和默認的,TDLS可選。若有2個sink,一級和二級sink,wifi p2p組織者必須是source。
4.Wifi connection setup
使用wifi direct和tdls技術,建立wfd基礎線路。 將設備建立TCP連接,並創建一個控制端口來建立和維護session,該端口跑的協議是RTSP。
5.Display capability negotiation
參數協定,決定需要使用的最佳參數,包括音視頻解碼率、分辨率、信道負載等等。
若有一級和二級sink存在,都需要單獨設定。
過程和命令如下圖。
6.UIBC
setup user input back channel,用戶輸入反向通道,此功能是可選的。
有兩種類型:1)generic:硬件無關型,如鼠標點擊,按鍵點擊、touch點擊、放大縮小等。 2)HIDC人機接口設備控制:包括紅外線、USB、藍牙、WIFI、游戲桿、遙控器等。
7.Link content protection
建立內容保護機制,可選功能。采用的是HDCP2.0安全協議,需要在數據流傳輸前建立。 8.WFD Session setup
WFD核心步驟,必須在能力協定的基礎上建立。建立過程使用RTSP通信,具體見下圖。
9.AV Streaming
先將Audio和video多路復用成一個MPEG2傳輸流。
在傳輸流頭部用MPEG2-TS格式打包,並封裝RTP、UDP、IP報頭如下圖。
10.Payload control capability
在數據流建立之后,需要有控制管道負載的能力,包含以下功能: 1)時間同步 如果有2個sink設備,二者音視頻必須同步,實現保真。2)編碼速率控制:因信道條件和電源管理優化控制管道負載。
11.Display Session Teardown
WFD會話終止,按連接分兩種方法:
1)Wifi-direct:跟 wifi p2p規范一樣,source和sink有序拆除連接。
2)TDLS: IEEE P802.11z specification規范動作,有序的拆除終止連接。