当前位置:首页 > 基于Android平台的WiFi_displaysink端的设计与实现
节目的视频和音频送入对应的Decoder进行解码。 2.3AV decoder
AV decode 将实现对上述支持的音视频格式的解码。由于Android自带的Open Core不能支持上述的所有音视频格式的解码,需要自己编写Video Decoder和Audio Decoder。
Audio Decoder主要完成Audio的解码工作,包括与Audiotrack,Audioflinger的交互,Audio Decoder需要根据被解码的音频文件的格式、比特率,以及Audio Track的Buffer、Demux向Audio Decoder传送数据的速度等等一系列参数确定可用的最小Buffer Size。Audio Flinger向上对Audio Decoder提供调用接口,向下通过与Driver通信控制相应硬件,对于不同的格式,应该采取硬件解码还是软件解码,通过Audio Flinger获取硬件参数后如何确定解码算法,以及他们之间的Pipline交互,都是需要实现的部分。
Audio Decoder 首先获得编码的音频数据流,然后以帧为单位解码每一帧数据,这里需要根据对应音频的帧格式实现对应的变换算法,完成频谱包络解码,同时进行比特分配对尾数进行反量化处理,然后对频谱包络解码进行指数变换并和反量化后的信号合成滤波器组进行滤波,采样恢复,得到PCM数据[5] 。再将PCM数据划分声道,并做均衡、划分音量等级等等一系列处理,然后调用Player播放。在播放过程中要完成与Player的交互,包括每一路音频的速率控制、暂停、快进、快退、回放等操作Decoder的相应处理。 Video Decoder 跟Audio Decoder的流程大致类似,不同的是
Video Deocder除了需要与Player交互实现Video的播放各种功能以外,还需要与Graphics交互实现画面的呈现,WiFidisplay需要播放实时流,它是一个界面的完整展现[6] 。Source端的界面抓取后传输过来,经过Video Decoder解码数据之后要送入图形图像处理模块进行显示,Video Decode需要根据图像输出的分辨率、刷新率等实时地调整送入Surface Flinger的数据速率,以及马赛克的处理、丢帧的处理等等。 3结语
WiFidisplay新一代的智能移动平台将彻底脱离“有线”传输高清数字信号的时代。本文基于ARM架构的嵌入式平台实现了WiFidisplay Sink端的功能,经过测试可与当前市面上主流的Source端配对良好并实时地传输Source发送的多媒体数据,具有良好的用户体验和可扩展性。 参考文献:
[1]宋碧莲,吴华平. 流媒体技术研究及其系统平台的设计与比较[J].计算机应用研究,2004,21(1): 204207.
[2]ROB GORDON.Essential JNI:Java native interface,prentice hall PTR[J].12 million words,1998.
[3]ABHYUDAI SHANKER,SOMYA LAL.Android porting concepts[C]//2011 3rd.International Conference on Electronics Computer Technology,Kanyakumari.2011:916.
[4]陆其明. Directshow开发指南[M].北京:清华大学出版社,2010.
[5]董莉娜,谭连生.分层视频组播应用中的全局视频质量[J].计算机工程, 2006,32(11):150155.
[6]陈逻.浅谈流媒体技术在校园网中的应用[J].宁夏师范学院学报:自然科学版,2010,31(3):7274.
共分享92篇相关文档