tag:C,PortAudio,ASIO,音頻播放
/* Create By zyzx
?*?Created?2008-7-19
?* Modified 2008-07-20
*/
??????? PortAudio庫簡(jiǎn)介:免費(fèi)開源的跨平臺(tái)音頻播放庫,支持
Windows, Macintosh (8,9,X), Unix (OSS), SGI, and BeOS.等平臺(tái);
??????? PortAudio庫完成從類似wav數(shù)據(jù)驅(qū)動(dòng)聲卡發(fā)音這個(gè)過程。如果要播放mp3等其他格式還需要先用相應(yīng)的格式解碼庫,解碼后轉(zhuǎn)換成PortAudio庫提供的格式。
如下是在Win32 + VS 環(huán)境下編譯
一、 準(zhǔn)備
???? 1、PortAudio開源庫
??????? 官方主頁:http://www.portaudio.com/下載源碼包
???? 2、依賴ASIO庫:用于異步處理
??????? 網(wǎng)址:http://www.steinberg.net/en/home.html
??????? 下載:http://www.steinberg.net/en/company/3rd_party_developer.html
???? 3、依賴DirectX庫:用于驅(qū)動(dòng)聲卡
???????? 微軟主頁
二、步驟
????? 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(參照設(shè)置)
???????????? 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
幾句話,郁悶了我半天,總是在后面測(cè)試時(shí)通不過,總得到后面錯(cuò)誤的結(jié)果。在Win32環(huán)境中是需要WMME和DS的。這兩個(gè)define語句是不能加的,小小的懲罰,看文章要認(rèn)真點(diǎn)哦。
三、Win32下音頻編程過程
待續(xù)。。
四、測(cè)試
????? 打開Test/patest_saw.c添加到新的VS工程,編譯運(yùn)行。
某次運(yùn)行的結(jié)果----紀(jì)念
如下圖是錯(cuò)誤的結(jié)果:原因是在"pa_win_hostapis.c"中加了#define PA_NO_WMME #define PA_NO_DS
如下是正確的結(jié)果:(示例文件“patest_sine.c”,加了一小短代碼)
終于聽到了夢(mèng)寐以求的“滴,滴,滴,滴。。。。”聲音了。。。興奮。。。