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”,加了一小短代碼)
終于聽到了夢寐以求的“滴,滴,滴,滴。。。?!甭曇袅?。。。興奮。。。