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规范动作,有序的拆除终止连接。