在本文中主要调用WinMm库中导出的waveOutWrite完成
“波形数据块”的播放,当然,播放“波形数据块”的办法很多
如“MCI”、“BASS”、“WMP”、“DirectX Sound”等、
不过为什么我一定要用waveOutWrite呢?可能有人曾经想过
“音频解码器”是怎么开发的,那么我可以简单的说一下、
“音频解码器”比如mp3的mpeg audio,我们都知道它是一种
压缩格式音频,在Win32中如果需要传送声音到音频设备大概
三种方式,waveOutWrite、mdiStreamOut、DirectXSound
举个例子,假设我们需要让自己的浏览器程序静音那么我们
只需要拦截上面的几个函数,当然DirectXSound稍微麻烦些
需要拦截掉CreateSoundBuffer,DirectSoundCreate两个函数
如果mp3格式的音频文件需要被音频设备输出,那么必须把它
转换成被Win32可以直接转送到音频设备的“波形数据块”,不
然直接把mp3音频数据丢到声卡,你会听到“无限的噪音” 这是
音频设备不知道,你传送给它的是什么数据
那么我现在说明如果通过WinMm/Wave传送“波形数据块”到声
卡是怎样的一个过程、首先waveOutOpen打开音频输出设备,
waveOutPrepareHeader准备音频波形数据块头,waveOutWrite