[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,若有一方不支持,该问题即为正常现象。

Java生成并合并图片以及base64转图片

由于最近研究了下打码平台(验证码识别平台),但是像需要特殊说明的二维码(例如:只需要提取验证码中黄颜色的字符),就需要将说明 信息和验证码图片合成一张图片,然后在发送给打码平台才可以。所以,我就研究了...
  • qq_30698633
  • qq_30698633
  • 2017-08-09 09:20:04
  • 1038

glide加载https图片jar包

评论共有3条 nbnxyuyun 2018-03-22 13:50:20 看看,不知道怎么样 zz<em>wfd</em> 2018-03-05 10:48:05 好像还不错。。 Heartbeas 2017-12-07 11:07:10 真的...
  • 2018年04月18日 00:00

通过video实现视频暂停时出现图片

由于有video标签,兼容到ie9,ie9一下视频无法正常播放,下面贴出代码
  • u011768325
  • u011768325
  • 2014-06-23 16:55:48
  • 3070

[WFD][UIBC]连接Wifi display后,有时会自动启动物理键盘

[WFD][UIBC]连接Wifi display后,有时会自动启动物理键盘 [DESCRIPTION] 目前KK版本支持WIFI Display的load有时连接Wifi display d...
  • sandform
  • sandform
  • 2016-06-01 17:07:32
  • 973

Java-图片格式

Java图片格式这两天在处理网络图片数据时,需要对不同格式的图片采用不用的处理办法,这就需要掌握图片的格式识别。结合这两天的学习内容,对其进行总结,以备将来不是之需。通过 url常见的图片格式有jpg...
  • lionel_fengj
  • lionel_fengj
  • 2016-12-02 23:26:29
  • 539

批处理文件夹里的图片

bool GetPicDirSetInFolder(CString strFindPath, std::vector &vecPathSet) { WIN32_FIND_DATA wfd; HAN...
  • u011504498
  • u011504498
  • 2015-03-25 22:53:15
  • 493

播放许可证DRM完美破解版

  • 2008年12月17日 08:48
  • 1.48MB
  • 下载

ckplayer播放器设置默认封面时部分浏览器不能正常显示封面图片问题的处理

在使用ckplayer播放器时,页面加载后视频默认不自动播放,此时想要给视频设置一个默认的封面图片,否则视频会漆黑一片,如下图所示,影响页面的整体美观性, ckplayer也提供了响应的设置...
  • seven_coder
  • seven_coder
  • 2017-06-05 15:49:16
  • 1977

使用OpenCV对文件夹下所有图片进行批量处理

读取文件夹下的所有文件,获得其绝对路径
  • muyouhang
  • muyouhang
  • 2016-12-02 18:00:11
  • 1099

使用 AirPlay 发送图片

原文:http://livevision.us/wordpress/2011/02/16/airplay-without-private-api/如果不是 Erica Sadun 的努力以及 AirP...
  • kmyhy
  • kmyhy
  • 2013-06-09 14:14:44
  • 5738
收藏助手
不良信息举报
您举报文章:[WFD]播放DRM视频时,SINK端显示全黑画面或者默认图片
举报原因:
原因补充:

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