基于IPP的嵌入式音频解码器设计与优化
[10-10 20:38:44] 来源:http://www.88dzw.com 电子制作 阅读:8346次
文章摘要:这使得最上层的QT图形界面应用程序的各个成员函数可以非常方便地调用利用IPP生成的音频播放各种操作的函数接口。这样仍然可以利用IPP的高效算法进行解码优化而且屏蔽了底层IPP API的复杂性。还为以后的二次开发提供便利。自己定义的音频解码各个函数原型如下:void mp3open(char filename);/*打开MP3文件并创建解码线程*/void mp3play(void); /*设置ispause共享变量为假,重新进入播放线程循环体*/void mp3pause(void);/*设置ispause共享变量为真*/void mp3stop(void); /*设置done共享变量为真,等
基于IPP的嵌入式音频解码器设计与优化,标签:电子小制作,http://www.88dzw.com这使得最上层的QT图形界面应用程序的各个成员函数可以非常方便地调用利用IPP生成的音频播放各种操作的函数接口。这样仍然可以利用IPP的高效算法进行解码优化而且屏蔽了底层IPP API的复杂性。还为以后的二次开发提供便利。自己定义的音频解码各个函数原型如下:
void mp3open(char filename);/*打开MP3文件并创建解码线程*/
void mp3play(void); /*设置ispause共享变量为假,重新进入播放线程循环体*/
void mp3pause(void);/*设置ispause共享变量为真*/
void mp3stop(void); /*设置done共享变量为真,等待播放线程结束*
需要说明的是上述函数完成播放器用户界面中启动音频播放、控制暂停和结束播放功能,通过多线程之间共享内存数据的方式进行线程间的通信,从而在主线程中控制播放线程的暂停和停止。
void *MP3Start(void *arg) /*针对MP3播放线程主函数进行解释和流程分析*/
{ InitMP3Decoder(&DecoderState,&bs);/*初始化解码器*/
while(!done)/*停止键或者解码未完成之前循环播放解码*/
{ if(!ispause)/*通过判断线程之间的共享变量ispause判断时候有暂停键按下*/
switch( DecodeMP3Frame(&bs,pcm,&DecoderState) )
{/*根据解码函数返回的状态选择下一步操作*/
case MP3_FRAME_COMPLETE:
/*缓冲区中已有足够数据来解码一帧流数据*/
…}}
/*关闭 I/O 音频设备,此MP3文件播放结束*/
}
6 结束语
IPP能够实现底层的交差平台的软件开发,提供高集成的数据通讯,单信号处理以及多媒体功能等,Intel IPP并且能够帮助优化电力消耗,达到最佳的CPU执行效率。其嵌入式的移植应用更是为实现手持设备上的低功耗,高代码执行效率提供了一种可行的软件优化方案。
参考文献:
[1] Intel. Sitsang-PXA255 Evaluation Platform Linux User Guide[S] 2005
[2] Intel. Integrated Performance Primitives for Intel Architecture R eference M annual,develop[S].Inte1.corn 2002.
[3] TrollTec. QT/Embedded 2.3.2 Reference[S]
[4] 濮琼,黄建华. 基于IntelPXA270平台的嵌入式流媒体播放器设计[J],微计算机信息,2005,10-2,31
[5] 白玉霞. 基于Qt/Embedded的GU I移植及应用程序开发[J]. 嵌入式系统,2005.7
[6] Xteam软件技术有限公司[M]. Qt程序设计. 北京:清华大学出版社,2002
[7] Scott.Linux内核源代码分析[M].2004
《基于IPP的嵌入式音频解码器设计与优化》相关文章
- › 基于IPTV系统中的FPGA供电问题解
- › 基于IPP的嵌入式音频解码器设计与优化
- › 基于IP网络的数字音视频监控系统设计与实现
- 在百度中搜索相关文章:基于IPP的嵌入式音频解码器设计与优化
- 在谷歌中搜索相关文章:基于IPP的嵌入式音频解码器设计与优化
- 在soso中搜索相关文章:基于IPP的嵌入式音频解码器设计与优化
- 在搜狗中搜索相关文章:基于IPP的嵌入式音频解码器设计与优化