无线高清会议室

转载文章:https://blog.csdn.net/wanghorse 详细看看 项目开发流程和技术都很详细的
贴文章致敬该博文作者!!


无线高清会议室终端之Miracast/HDCP

前言:
公司在2015年5月立项做一款硬件类产品,使用SOC(CPU+DSP)芯片方案做一款高清会议室终端,除了会议功能之外,需要具备多路无线投屏功能。项目从5月份立项、历经搭建团队、研发、生产、测试,至2016年1月完成一期功能和试产,期间经历很多困难和曲折,现分一个系列做下回顾,本篇讲下Miracast。
Miracast:
关于Miracast的基础知识,大家可以baidu自行搜索,作为入门进行学习。如果进入开发阶段,则需要学习三篇白皮书: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的过程包括无线链路的建立、呼叫建立、媒体接受、解码、呈现等。本篇范围只包括无线链路建立和呼叫建立过程。
开发过程:
开发过程的人员投入为1-2人,整体开发过程大致如下:
2015/6-2015/7月,学习及X86平台下的技术验证
在这个阶段,前期主要是学习和熟悉Miracast。网上查找资料,采购几款支持Miracast的盒子和dongle,感受使用下Miracast,并通过wireshark,抓包学习下信令流程和媒体信息。
中期主要选型开源代码及无线网卡。开源代码暂时只发现1个(https://github.com/albfan/miraclecast),此项目代码可读性较差、BUG较多、适配性也有问题,但作为学习及技术验证,是不可多得的开源项目。无线网卡的选型较为不顺利,支持P2P的无线网卡较少,且我们还需要要求具备驱动源代码(后续能够移植到SOC芯片上),最后我们拆解了几款dongle,找到了一家不错的供应商,使用了RTL8188进行学习和技术验证。
后期主要完成技术验证。使用RTL8188和miraclecast项目,成功的将三星Note3的画面通过Miracast投屏到X86/Ubuntu的桌面上。由于我们对无线和P2P没有积累,在驱动的编译、无线模块的使用等方面遇到了不少问题,在这里要感谢下瑞昱的FAE。
2015/7-2015/8月,SOC平台的移植,单路解码输出
这个阶段较为顺利,但代码工作量较大。主要工作就是SOC平台移植,包括驱动移植及miraclecast移植,及和主模块的联调。
由于在前期的使用上,对miraclecast已经有了一个大致的判断,所以在这个阶段,对miraclecast做了一个较大幅度的裁剪和重构
最后成功的和主模块完成信令和媒体的联调,在我们的SOC开发板上完成三星Note3画面的输出
2015/8-2015/9月,SOC平台的多路支持,完成基本功能开发
对于多路的支持,国内外暂时还没有看到有成熟或非成熟的方案,也就是说我们是第一个在这方面做研发的公司,是否可行仍然是未知数。
技术验证仍然是在X86/Ubuntu上完成,然后把相关的流程在我们的SOC上通过代码实现。
最后我们同时完成了4款Android手机在我们SOC开发板上的投屏。
这个阶段的代码量不是很大,但技术含量较高,也遇到了不少问题,甚至还产生过是否可行的讨论,瑞昱的FAE表示他们没做过类似项目,再无外界的帮助下,我们靠自身的摸索,完成了这个功能。
2015/9-2015/11月,无线芯片选型及优化
在前期的使用上,我们发现投屏的时候,音视频质量不是很稳定,尤其是在同时多路,且在播放动态画面的时候,卡顿及花屏现象非常严重。通过了解,无线环境对此影响比较大,主要3个方面:网卡本身的性能、无线频段及天线。在此,我们启动了无线芯片选型工作,并找到了6款无线模块做对比测试(瑞昱2款、高通2款、博通2款),并在性能、稳定性、兼容性、价格、供货周期、供应商支持等方面,综合考虑,最后保留了2款备选芯片。
在这里,需要说明的是,没有完美的选择。主要需要考虑我们最看重哪方面。比如说wifi 5G频段的干扰较少,音视频效果比较好,但很多Android低端机并不支持5G。比如高通的无线模块兼容性不错,但FAE支持不给力。等等
2015/10月-至今,手机兼容性适配,稳定性优化等
这方面的工作,在基本功能开发完成之后,就已经开始。这工作是个较长期,没有终点的工作。
兼容性主要在3个方面:P2P、RTSP信令协商、音视频流。很多手机都有自己的实现,小米、魅族、华为等手机都遇到过兼容性问题;同一个品牌,不同的手机型号,也会遇到兼容性问题。如华为MATE8没做适配就以支持,但老款的MATE7、荣耀6就存在兼容性问题。
经验教训:
Miracast开发难度主要在2块:P2P及HDCP(暂未支持),后续的难度主要在Android手机兼容及P2P的音视频质量优化
研发过程很痛苦,尤其是未知的前提下,但不要放弃任何一点希望

猜你喜欢

转载自blog.csdn.net/liboxiu/article/details/81940286