基于Winmm库的音频采集

Winmm库提供的音频采集接口比较底层,可以直接获取和播放wave数据。其主要流程如下:
采集
1. waveInOpen()
2. waveInStart()
3. waveInPrepareHeader()
4. waveInAddBuffer()
5. waveInUnprepareHeader()
6. waveInStop()
7. waveInReset()
8. waveInClose()
如果是不停的采集,则循环执行3~5。该接口采用一种回调的工作方式,在AddBuffer调用应用中传递给内核一个用户开辟的缓冲区,当数据填满后内核会通过回调函数通知应用。只是为何要有PrepareHeader和UnprepareHeader这两个调用一直不太明白,估计是为了锁住缓冲区。

播放
1. waveOutOpen()
2. waveOutPrepareHeader()
3. waveOutWrite()
4. waveOutUnprepareHeader()
5. waveOutClose()
如果是循环播放,则不断执行2~4。在播放中没有start,stop这样的函数,不过还是有回调过程,提示用户write操作的完成。

你可能感兴趣的:(编程)