Miracast/鼠标显示的那些事_miracast投屏 使用鼠标-程序员宅基地

技术标签: wid  miracast  airplay  Miracast  无线投屏  多屏互动  

· Miracast:

     关于Miracast的基础知识,大家可以baidu,google自行搜索,作为入门进行学习。如果进入开发阶段,则需要学习三篇白皮书:Wi-Fi_Display_Specification_v1.1、WiFi_P2P_Technical_Specification_v1.2及HDCP Interface Independent Adaptation Specification Rev2_2_FINAL。

     我们的产品需求是在SOC芯片上(Linux)实现同时支持多路的Miracast Sink功能。

     整个Miracast的过程包括无线链路的建立、呼叫建立、媒体接受、解码、呈现等。本篇只针对Miracasr相关的音视频处理做一些介绍。

     由于在一些无线投屏应用场景中,特别是对延时很敏感的场景下,用户对鼠标移动,操作的流畅性特别敏感。所以本篇专门针对鼠标显示做一些介绍。比如办公的场景是比较典型的场景,用户针对鼠标可能有以下不好的体验:

    1 感觉鼠标移动不流畅,特别是帧率比较低时,能比较明显感觉到鼠标不够流畅

    2 鼠标移动的忽快忽慢,不平滑,有时数据抖动时会出现

    3 当画面延时较大时,大屏是显示的鼠标移动和操作有明显的延时感,容易产生误操作。

     在WIDI协议中,针对此类问题

 

· WIDI中针对鼠标显示的扩展协议:

     那么针对上述现象,WIDI协议有Wi-Fi Display Protocol: Hardware Cursor Extension来改善该问题。各位同学请参考https://msdn.microsoft.com/zh-cn/library/mt242291,仔细阅读spec。

     

     在此我不详细深入说这个spec了,其实这个协议是很简单的。

     其基本的思想总结来说就是

     1 将鼠标和屏幕图像分为两个通道进行传输

     2 相比屏幕图像数据通道,鼠标通道可以有更高的帧率,比如鼠标帧率是100(10ms更新一次鼠标位置,如果鼠标样式变化还需要更新新的鼠标图像,鼠标图像不变则只需要更新鼠标位置即可)。

     由于鼠标的显示频率大大超过屏幕图像,这样用户感觉到鼠标操作的流畅性将大大得到提高。

    

    那么对于WIDI的sink端,需要支持这个协议,在播放器端需要针对该协议进行一些处理。鼠标图像的显示建议和屏幕图像的显示放到不同的图形层去处理,这样可以避免图像的叠加操作。通用的Android,以及诸如海思等方案中都有图层的支持。

 

 

 

· 其它

    SINK端支持WIDI中鼠标扩展协议后,屏幕图像的显示与鼠标之间的同步会是一个新的问题。所以要求屏幕图像的延迟不能太大,这也是特别需要注意的一个地方,否则两者不同步也会带来很多不好的体验。

    另外用户在实现私有的投屏协议时亦可参照该思路来提高鼠标的显示体验,我司的私有投屏协议就实现了这一点。在办公等应用场景,能显著提高用户的操作体验。

 

     技术交流有兴趣请加:

     音视频技术交流群:308601278

     无线投屏技术交流群:582349005

     

     我司有成熟的无线投屏盒子销售,也可做音视频及无线投屏相关产品和技术的定制化开发

     可访问我司官网了解详细情况 必捷网络无线投屏SDK

     商务合作可发邮件[email protected]

 

 

 

 

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wirelessdisplay/article/details/55004008

智能推荐

MPI并行编程计算π值及PSRS排序-程序员宅基地

文章浏览阅读8.8k次,点赞5次,收藏35次。什么是MPIMPI(Message Passing Interface)是目前最重要的一个基于消息传递的并行编程工具,它具有移植性好、功能强大、效率高等许多优点,而且有多种不同的免费、高效、实用的实现版本,几乎所有的并行计算机厂商都提供对它的支持,成为了事实上的并行编程标准。MPI是一个库,而不是一门语言,因此对MPI的使用必须和特定的语言结合起来进行。MPI不是一个独立的自包含系统,而是建立在本地_psrs排序

python爬虫之selenium知识点记录-程序员宅基地

文章浏览阅读1.8k次,点赞16次,收藏24次。selenium本身是一个自动化测试工具。它可以让python代码调用浏览器。并获取到浏览器中加载的各种资源。我们可以利用selenium提供的各项功能。帮助我们完成数据的抓取。

Gitlab email server 报错「Traceback (most recent call last): 1: from (irb):1 EOFError (end of file)」_eoferror: end of file reached-程序员宅基地

文章浏览阅读2k次。自建的gitlab服务配置邮箱服务配置完成了之后,测试邮箱服务报错报错内容Traceback (most recent call last): 1: from (irb):1EOFError (end of file reached)解决过程Google了很久,有的是将ssl 改为false,有的是端口改为25,576但改成了25之后,也有另外的报错, connection timeout之类的,然后有人说是aliyun的EC2服务器默认关闭了25端口的访问最后_eoferror: end of file reached

使用Neo4j进行全栈Web开发_neo4jweb-程序员宅基地

文章浏览阅读7.1k次。在开发一个全栈web应用时,作为整个栈的底层,你可以在多种数据库之间进行选择。作为事实的数据源,你当然希望选择一种可靠的数据库,但同时也希望它能够允许你以良好的方式进行数据建模。在本文中,我将为你介绍Neo4j,当你的数据模型包含大量关联数据以及关系时,它可以成为你的web应用栈的基础的一个良好选择。Neo4j是什么?Neo4j是一个图形数据库,这也就意味着它的数据并非保存在表或集合中,而是保存为节_neo4jweb

linux shell编程指南第九章------AWK 介绍1_awk匹配域名-程序员宅基地

文章浏览阅读1.1k次。为使一域号匹配正则表达式,使用符号‘~’后紧跟正则表达式,也可以用i f语句。a w k中i f后面的条件用()括起来。观察文件g r a d e . t x t,如果只要打印b r o w n腰带级别可知其所在域为f i e l d - 4,这样可以写出表达式{if($4~/brown/) print }意即如果f i e l d - 4包含b r o w n,打印它。如果条件满足,_awk匹配域名

刚刚拿下银行测试岗offer的我,总结了几点面试经验_银行测试岗位累吗-程序员宅基地

文章浏览阅读1.3k次。【1】你有两个罐子,每个罐子各有若干红色弹球和蓝色弹球,两个罐子共有50个红色弹球,50个蓝色弹球,随机选出一个罐子,随机从中选取出一个弹球,要使取出的是红球的概率最大,一开始两个罐子应放几个红球,几个蓝球?在你的计划中,得到红球的准确几率是多少?答案:一个罐子放1红,一个罐子放49红和50蓝,这样得到红球的概率接近3/4。【2】对一批编号为1~100,全部开关朝上(开)的灯进行以下操作:凡是1的倍数反方向拨一次开关;2的倍数反方向又拨一次开关;3的倍数反方向又拨一次开关……问:最后.._银行测试岗位累吗

随便推点

求助Fatal error: Class 'think\App' not found in C:\``thinkphp\start.php on line 19Fatal error: Class '_think/app notfound-程序员宅基地

文章浏览阅读3.9k次。公司网站程序无法进入,出现了这两行代码求助Fatal error: Class ‘think\App’ not found in C:``thinkphp\start.php on line 19Fatal error: Class ‘think\App’ not found in C:``\thinkphp\library\think\exception\Handle.php on line ..._think/app notfound

开始使用Mac OS X——写给Mac新人-程序员宅基地

文章浏览阅读118次。写这篇文档的原因有两个,一、身边使用Mac的朋友越来越多,经常会有人来咨询一些常见的使用问题,比如:“为什么把界面右上角的红色按钮叉掉,程序还没有关闭?”之类。而且我也不愿意看到很多人使用OSX时仅仅用到最基本的功能。让他们去Google吧,查完了回来还得问你,所以准备就我的个人经验写一个入门篇,这样再有人问的话,直接把博文地址甩给他就行啦。二、前几天写了一篇文章《从Mac OS X的L..._新手改用mac os

启动elasticsearch时报错log权限不够_./elasticsearch权限不够-程序员宅基地

文章浏览阅读7.5k次,点赞4次,收藏2次。启动es是非root用户启动,报错权限不够这是只要在root用户下为普通用户授权就可以了例如我的普通用户名是wsbchown wsb /usr/soft/elasticsearch-6.2.2 -R_./elasticsearch权限不够

开源,免费和跨平台 - MVP ComCamp 2015 KEYNOTE-程序员宅基地

文章浏览阅读1.6k次。开源所创建是软件行业真正需要的产品模型,沟通方式和互动社区。Wikipedia对于开源的这句描述真正诠释了开源的精髓。软件不是一个人,一个团队,一个公司可以通过自身的努力可以满足的,软件开发是程序员智慧的创造物,即便是爱因斯坦的超强大脑也无法预见所有的产品形式;沟通的重要性也往往被忽视,整日面对电脑的程序员往往被认为是不善于沟通的,其实是大家不了解程序员,他们通过指尖敲击出的优美旋律是只有其他同类才能理解的精美语言,代码才是程序员最好的沟通方式;围绕代码构建程序员沟通网络正是这些年开源社区成功所在,在Git_keynote

C语言实现十进制转换成十六进制的实现(有例程),不用scanf函数,STM32 在Keil5环境_keil十进制转十六进制-程序员宅基地

文章浏览阅读6.5k次,点赞4次,收藏52次。STM32 十进制转换成十六进制的实现(有例程),在Keil5里面用C语言实现,不用scanf函数我看了很多十进制转换十六进制的文章,几乎全部都是利用scanf()函数写的,这和我想实现的功能并不一样,于是我打算自己写一个转换代码。关于十进制转十六进制十进制转十六进制的方法网上介绍的很多,这里简单说明一下。用十进制的数除以十六,得到的余数保留,得到的商继续除以十六,直至除到商为0为止,将先得到的余数排在最右边,后得到的按照顺序依次往左排,排完所有的余数之后,便得到了十进制对应的十六进制数。更详细的教程_keil十进制转十六进制

[Unity优化]UWA性能诊断与优化_uwa lup cpu耗时-程序员宅基地

文章浏览阅读3k次。[Unity优化]UWA性能诊断与优化UWA直播笔记UWA:UWA 视频总体性能趋势1、CPU性能占用①项目运行过程中高于33ms的帧数占比推荐值2、GC调用①调用频率 ( 帧/次 ):GC触发调用频率推荐值>1000帧/次,GC触发得越快,即项目运行时卡顿次数越多。3、渲染模块性能①Drawcall 峰值:项目中Draw Call峰值推荐值②_uwa lup cpu耗时

推荐文章

热门文章

相关标签