[WFD]播放DRM视频时,SINK端显示全黑画面或者默认图片

原创 2016年05月31日 16:22:08

[WFD]播放DRM视频时,SINK端显示全黑画面或者默认图片

[DESCRIPTION]

假设WFD SINK为TV ,和手机通过WFD连接上后,TV画面显示正常。
但是打开第三方视频播放软件(如iFlix)播放视频,或者播放本地DRM视频时,TV端画面显示全黑或者是一张默认图片(如下图)。

4.27tp-26.png (63.29 KB, 下载次数: 0 )

下载附件  保存到相册

2016-4-27 16:51 上传



[SOLUTION]

此现象为正常现象,通常是WFD SOURCE或者WFD SINK不支持HDCP导致。
代码实现逻辑如下:
1.SOURCE和SINK沟通协商是否支持HDCP,是否需要建立hdcp连接,并将最终将协商结果反应在
mUsingHDCP上。
若SOURCE没有打开宏MTK_DX_HDCP_SUPPORT,不支持HDCP,则在M3阶段不会发送
“wfd_content_protection”参数;
若SINK端不支持HDCP,则在M3 Response里不会回复“wfd_content_protectio”对应value为
“none”.
frameworks\av\media\libstagefright\WIFIdisplay\
source\WifiDisplaySource.cpp
status_t WifiDisplaySource::sendM3(int32_t sessionID) {
...
AString body =
#if defined(MTK_DX_HDCP_SUPPORT) || defined(WFD_HDCP_TX_SUPPORT)
"wfd_content_protection\r\n"
#endif
"wfd_video_formats\r\n"
"wfd_audio_codecs\r\n"
"wfd_client_rtp_ports\r\n";
...
}
status_t WifiDisplaySource:nReceiveM3Response(
...
mUsingHDCP = false;
if (!params->findParameter("wfd_content_protection", &value)) {
ALOGI("Sink doesn't appear to support content protection.");
} else if (value == "none") {
ALOGI("Sink does not support content protection.");
} else {
#if HDCP_ENABLE_CONTROL
char v[PROPERTY_VALUE_MAX];
if (property_get("media.stagefright_wfd.hdcp.off", v, NULL)
&& (!strcmp(v, "1") ))
{
ALOGD("turn off HDCP !");
}
else
#endif
{
mUsingHDCP = true;
...
}
2.WifiDisplaySource将通过mUsingHDCP,决定是否设置secure标志给WifiDisplayAdapter-
>WifiDisplayDevice.
frameworks\av\media\libstagefright\wifidisplay\
source\WifiDisplaySource.cpp
void WifiDisplaySource:nMessageReceived(const sp &msg) {
...
case kWhatPlaybackSessionNotify:
{
...
if (mClient != NULL) {
ALOGD("laybackSession::kWhatSessionEstablished HDCP = %d\n", mUsingHDCP);
if (!mSinkSupportsVideo) {
mClient->onDisplayConnected(
NULL, // SurfaceTexture
0, // width,
0, // height,
mUsingHDCP
? IRemoteDisplayClient::kDisplayFlagSecure
: 0,
0);
} else {
size_t width, height;
CHECK(VideoFormats::GetConfiguration(
mChosenVideoResolutionType,
mChosenVideoResolutionIndex,
&width,
&height,
NULL /* framesPerSecond */,
NULL /* interlaced */));
mClient->onDisplayConnected(
mClientInfo.mPlaybackSession
->getSurfaceTexture(),
width,
height,
mUsingHDCP
? IRemoteDisplayClient::kDisplayFlagSecure
: 0,
playbackSessionID);
}
}
...
}
3.在surface ondraw的过程中,若播放secure内容时,通过hw->isSecure()来确认是否是有建立
hdcp安全通道,选择是显示默认图片还是直接显示视频画面。
frameworks\native\services\surfaceflinger\Layer.cpp
void Layer:nDraw(const sp& hw, const Region& clip,
bool useIdentityTransform) const
{
...
//若app有对播放内容做保护isSeCure()=true;若没有建立HDCP连接,则hw-
>isSecure()=false,所以最终blackOutLayer为true。
bool blackOutLayer = isProtected() || (isSecure() && !hw->isSecure());
if (!blackOutLayer) {
...
} else {
#ifdef MTK_AOSP_ENHANCEMENT
char value[PROPERTY_VALUE_MAX];
property_get("debug.sf.no_security_img", value, "0");
if ((atoi(value) == 0) && (false == hw->isSecure()))
engine.setupLayerProtectImage();
else
#endif
engine.setupLayerBlackedOut();
}
...
}
所以该问题请先确认WFD SOURCE和SINK是否支持HDCP,若有一方不支持,该问题即为正常现象。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

OpenCV学习笔记(9)利用MFC的Picture控件显示图像+播放视频和捕获摄像头画面

原始版本下载页面(仅显示图像):  http://download.csdn.net/source/1779188   P.S.:后面又添加了播放视频和捕获摄像头画面的功能,其中播放视频的功能只...

POLYV直播助手客户端软件做视频直播时如何添加画面源

POLYV直播助手客户端软件做视频直播时如何添加画面源。原创文章,转载注明出来csdn. POLYV直播助手客户端软件界面左下方,有三个画面源选项,分别是:【添加摄像头】【添加截屏源】【添加图片源】。

OpenCV学习笔记 利用MFC的Picture控件显示图像+播放视频和捕获摄像头画面 .

原始版本下载页面(仅显示图像): http://download.csdn.net/source/1779188 P.S.:后面又添加了播放视频和捕获摄像头画面的功能,其中播放视频的功...

OpenCV学习笔记(9)利用MFC的Picture控件显示图像+播放视频和捕获摄像头画面

源自:http://blog.csdn.net/chenyusiyuan/article/details/4744097 原始版本下载页面(仅显示图像):  http://down...

OpenCV提取显示一张图片(或者视频)的R,G,B颜色分量

使用OpenCV可以提分别提取显示一张图片(或者视频)的R,G,B颜色分量。效果如下。 原图: R: G: B: 示例代码如下,貌似很久以前网上找的的,逻辑很清晰,就是把R,G,...

OpenCV學習筆記(9)利用MFC的Picture控件顯示圖像+播放視頻和捕獲攝像頭畫面

http://blog.csdn.net/chenyusiyuan/article/details/4744097 原始版本下載頁面(僅顯示圖像):  http://download.cs...

OpenCV学习 利用MFC的Picture控件显示图像+播放视频和捕获摄像头画面

原始版本下载页面(仅显示图像):  http://download.csdn.net/source/1779188   P.S.:后面又添加了播放视频和捕获摄像头画面的功能,其中播放视频...

[WFD][IOT]通过小米盒子连接电视,概率性卡在接受视频数据界面

[WFD][IOT]通过小米盒子连接电视,概率性卡在接受视频数据界面 [DESCRIPTION] 手机通过小米盒子连接电视,电视一直停留在正在接受视频数据界面,手机端一直显示正在连接,过1分钟...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)