tag:C,PortAudio,ASIO,音频播放
/* Create By zyzx
* Created 2008-7-19
* Modified 2008-07-20
*/
PortAudio库简介:免费开源的跨平台音频播放库,支持
Windows, Macintosh (8,9,X), Unix (OSS), SGI, and BeOS.等平台;
PortAudio库完成从类似wav数据驱动声卡发音这个过程。如果要播放mp3等其他格式还需要先用相应的格式解码库,解码后转换成PortAudio库提供的格式。
如下是在Win32 + VS 环境下编译
一、 准备
1、PortAudio开源库
官方主页:http://www.portaudio.com/下载源码包
2、依赖ASIO库:用于异步处理
网址:http://www.steinberg.net/en/home.html
下载:http://www.steinberg.net/en/company/3rd_party_developer.html
3、依赖DirectX库:用于驱动声卡
微软主页
二、步骤
1、将ASIO库 拷贝到 portaudio、src\hostapi\asio\目录下 文件夹改名为ASIOSDK。
2、安装DirectX库。
3、用VS8.0 打开portaudio\build\msvc\portaudio.sln
4、可选:
官方说明:http://www.portaudio.com/trac/wiki/TutorialDir/Compile/Windows(参照设置)
http://www.portaudio.com/trac/wiki/TutorialDir/Compile/WindowsASIOMSVC(参照检查文件)
注:
Finally, open the "pa_win_hostapis.c" file. Add the following:
#define PA_NO_WMME
#define PA_NO_DS
几句话,郁闷了我半天,总是在后面测试时通不过,总得到后面错误的结果。在Win32环境中是需要WMME和DS的。这两个define语句是不能加的,小小的惩罚,看文章要认真点哦。
三、Win32下音频编程过程
待续。。
四、测试
打开Test/patest_saw.c添加到新的VS工程,编译运行。
某次运行的结果----纪念
如下图是错误的结果:原因是在"pa_win_hostapis.c"中加了#define PA_NO_WMME #define PA_NO_DS
如下是正确的结果:(示例文件“patest_sine.c”,加了一小短代码)
终于听到了梦寐以求的“滴,滴,滴,滴。。。。”声音了。。。兴奋。。。