一种嵌入式PPC下音频播放的方法

上传人:我** 文档编号:111658240 上传时间:2019-11-03 格式:DOC 页数:5 大小:40KB
返回 下载 相关 举报
一种嵌入式PPC下音频播放的方法_第1页
第1页 / 共5页
一种嵌入式PPC下音频播放的方法_第2页
第2页 / 共5页
一种嵌入式PPC下音频播放的方法_第3页
第3页 / 共5页
一种嵌入式PPC下音频播放的方法_第4页
第4页 / 共5页
一种嵌入式PPC下音频播放的方法_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《一种嵌入式PPC下音频播放的方法》由会员分享,可在线阅读,更多相关《一种嵌入式PPC下音频播放的方法(5页珍藏版)》请在金锄头文库上搜索。

1、一种嵌入式PPC下音频播放的方法朱世交1,廖明军2 时间:2008年05月06日 字 体: 大 中 小关键词:应用程序存储卡多媒体应用加载嵌入式系统摘要: 通过对嵌入式Pocket PC环境下音频播放的研究,提出了基于FMOD音频播放的设计与实现原理,以此说明Pocket PC下多媒体应用的开发方法。关键词: Pocket PC 多媒体 FMOD随着嵌入式应用的迅速发展,很多传统的基于台式机的应用迅速转向嵌入式应用平台。WinCE为微软开发的嵌入式系统,其广泛应用于Pocket PC(PPC)嵌入式应用平台。在嵌入式平台下实现多媒体应用是当前应用研究的热点。使用嵌入式技术与音频播放相结合的研究

2、已经很多,如嵌入式音频点播、MP3播放系统等,但它们多是使用特定的硬件解码器完成音频解码,对于嵌入式PPC下如何实现软实时音频解码缺乏系统性研究。通过研究发现FMOD可以实现完整的音频播放功能。由于PPC上没有DirectSound的设计,因此只能用CPU来模拟。本文使用EVC作为开发语言,设计方法亦适合其他平台。此方法也可以在游戏和应用程序中使用,为PPC上的音频播放提供解决思路。1 音频技术介绍1.1 PPC上音频播放的现状PPC上通常使用WAV声音文件进行音频播放。若使用微软的Media接口进行音频播放,一方面播放效率比较低,满足不了实时应用对时间效率的要求,例如游戏、多媒体、播放器等应

3、用;另一方面,播放文件格式单一,WAV文件相对于mp3等压缩音频文件所占存储空间较多,对以存储卡为存储介质的PPC来说,显然不合适。对于音频引擎中API编程的应用,可选择Windows Multimedia、DirectSound、OpenAL、Aureal A3D,其中以DirectSound较为著名。但是这些技术不适合在资源紧张的PPC上使用。另外,还有一些没有真正硬件支持的应用程序接口,它们以API组件包的形式提供给应用程序使用,例如:Miles Sound System、RenderWare Audio、GameCoda、FMOD、Galaxy、BASS、SEAL。其中FMOD是最新引

4、入的技术,具有广泛的功能选择和对API技术的完美支持。1.2 PPC上FMOD简介FMOD是一个非常容易使用的跨平台声音引擎,支持三维环绕声、MIDI、MOD、MP3、OGG、WMA、AIFF、CD,可以在Windows、Windows CE、Linux、Macintosh、GAMECUBE、PLAYSTATION 2和XBOX上使用,支持C/C+、VB、DELPHI。同时通过分析其接口可知,它还为PPC平台定制了一个mini版本,用以在PPC上进行音频播放,并且在非商业程序的情况下是免费的,这为研究提供了便利条件。2 音频播放器实现中的关键技术2.1 形式化结构设计自20世纪90年代后期以来

5、,软件体系结构的研究成为一个热点。从研究现状来看,当前的研究和对软件体系结构的描述,在很大程度上还停留在非形式化的层次上。从FDT5(Formal Description Technique)在实际项目应用中的技术特征来看,SDL(Specification and De-scription Language)与UML(Unified Modeling Language)是比较容易结合使用的。PPC上音频播放借助于FMOD的音频解码,本文尝试使用形式化描述的方法设计音频播放流程。PPC上音频播放的功能EBNF6范式描述如下:player:=player_files,player_status,

6、player_decoder,frame_viewsplayer_files:=*.MOD|*.S3M|*.XM|*.IT|*.MID|*.RMI|*.SGT|*.FSBplayer_status:=sequence(play,pause,stop);player_decoder:=FMOD modulesframe_views:=Player information音频播放的系统协作图如图1所示。(1)PPC上的控制逻辑:用以对音频文件的播放、停止、文件装载、显示等的控制。(2)FMOD引擎:具体音频数据解码、软实时播放,同时与PPC的播放控制和音频文件管理相关联。(3)PPC音频文件管理:

7、管理要播放的音频文件,播放音频列表等。对PPC上文件管理不方便的功能进行扩充。2.2 PPC上音频文件选择的方法可使用GetOpenFileName方法对PPC上音频文件进行选择,但选择的文件位置被系统固定在My Document的Personal目录之下,使文件可选择范围缩小并存在很多限制,例如,在这种情况下文件不能存放在存储卡上。在PPC系统不以盘符存放文件,只根据系统的根目录,即“”。为此需要通过以下文件选择实现对PPC上文件目录的访问:(1)文件目录选择:在此功能下可以对文件目录进行浏览访问;(2)文件目录中的文件选择:包括文件名称、大小、创建日期等内容;(3)文件过滤功能:包括对特定

8、后缀音频文件的选择。在PPC的模拟器上进行文件选择时,由于PPC的文件系统是以双字节UNICODE形式编码,所以要使用WideCharToMultiByte把文件名称转换为多字节流信息,否则无法打开具体的音频文件。对于目录下的文件目录和文件名称,可通过以下遍历搜索方法获得:hFind=FindFirstFile(strSearch,&fd);bFind=(hFind !=INVALID_HANDLE_VALUE);while(bFind)if(!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &!(fd.dwFileAttributes & F

9、ILE_ATTRIBUTE_HIDDEN)strFile=pszPath;strFile +=fd.cFileName;/处理文件名方法m_cont.push_back(fd);/保存到队列中bFind=FindNextFile(hFind,&fd);通过使用FindFirstFile和FindNextFile可以获得PPC下文件系统相关信息的列表,同时为了对文件类型进行较好的表示,系统通过SHGetFileInfo方法获得在系统中注册的图标信息。PPC下自制音频文件浏览器如图2所示。2.3 音频文件播放时波形显示对于播放的音频文件信息,通常使用波形表示声音的时频变化,通过在FMOD引擎中创建

10、DSP效果单元和相关数据缓冲单元得到音频的FFT(快速傅式变换)变换数据。使用FSOUND_DSP_GetSpectrum方法获得512个频谱幅度的浮点数值信息,然后把频谱数据绘制成波形谱。将FFT频谱数据转换到界面显示的算法描述如下:(1)假设对于频谱数据要显示区域的长度、宽度分别为height、width;(2)将频谱数值f(i),i1.512归一化后映射到显示区域:(3)频谱线显示着色映射方法。事实上对于频谱的振幅,期望其高振幅与低振幅有明显的对比度,同时还要在振幅的变化过程中体现出着色变化的联系性。据此,采用彩色空间RGB系统。可固定其中的B(blue)分量,把R、G分量进行线性划分,

11、即R=255-G,把归一化的heightf(i)映射到0255范围f(i),令R=f(i),则彩色空间G分量:G=255f(i)。因此,可以通过连续变化的RGB彩色空间分量表示频率分量的振幅信息。(4)通过上述方法,把频谱信息映射到图像中,映射处理完毕。声音播放的频谱波形显示如图3(a)所示,通过这种直观方式可以更加清楚地了解音频的频谱特征。同理可以获得频谱振荡情况的振荡曲线图如图3(b)所示。2.4 音频文件播放时控制对于FMOD音频引擎库,FMOD SDK函数处理方式如下:FSOUND_Sample_Load(int index,const char *name_or_data,unsig

12、ned int inputmode,int offset,int length);或者:FSOUND_PlaySound(int channel,FSOUND_SAMPLE*sptr)其中index和channel为音频数据标识,通过控制音频数据块实现声音的播放。音频播放文件类型可分为FMUSIC_MODULE和FSOUND_STREAM类型。其中FMUSIC_MODULE是对MOD、S3M、XM、IT、MID、RMI、SGT、FSB等后缀播放文件的处理描述,而FSOUND_STREAM是对audio file、url网上流媒体文件、 cd文件的描述。为了对音频播放模块进行控制并在文件播放时进

13、行管理,定义管理结构如下:typedef structFMUSIC_MODULE *mod;/音频标示FSOUND_STREAM *stream;/流数据音频标示int channel; SONGTYPE;音频文件加载及播放形式如下:WideCharToMultiByte(CP_ACP,0,strFullPath,-1,s,256,NULL,NULL);/转换FMUSIC_MODULEmod=FMUSIC_LoadSong(s);/加载音频文件FMUSIC_PlaySong(mod);/播放音频数据播放过程中暂停的方法:FMUSIC_SetPaused(mod,!FMUSIC_GetPaused(mod);停止播放的方法:FMUSIC_FreeSong(mod);3 音频播放及

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号