http://blog.csdn.net/daydayupfromnowon/article/details/6011018
注:嵌入式系统上,大部分的Audio Codec都不支持硬件混音操作,因此需要软件混音器
Software Mixer(CE4.2上首次使用):
Waveapi模块有软件混音器,有时也称为内核混音器。它能混合多个不同采样率的PCM,在CE 4.2中被加入。软件混音器在启动时,为音频设备创建一个线程。这个线程负责接受应用的音频buffer,把它们放到混合的buffer中,再传给音频设备。从功能上看,Software Mixer支持的四种特性,第一:将任何格式的数据转换为双通道/16位宽,第二:将任何格式的数据转换到Wave Driver所支持的采样率;第三:可以对每个Stream的音量进行单独的控制;第四:支持waveOutSetRate(一个通过调用API来调整当前播放音频的采样率,格式为16.16,其实也就是调整播放速度,播放器中貌似有类似的操作方式)。
WaveDev2 Mixer(CE3.0上加入):
与Software Mixer功能一致,另外,再加入了以下功能:1. 提供了部分手机的特殊调用,例如加入了对MM_WOM_FORCESPEAKER的支持,即无论当前用户是使用耳机作为输出(当然,硬件上要提供对这两种方式的支持),还是使用喇叭做为输出,当电话打进的时候,都会使用喇叭提醒用户,当然了,还有很多类似的针对手机的特殊调用,诸如Gain class;2. 提供输入混音,即将单一采样率的输入通过软件转换成多种采样率数据;
所有mixer函数通过IOCTL_MIX_MESSAGE来控制的,音频驱动可以在此IoControl加入相应的代码,来实现mixer函数。
参考网址:
http://blogs.msdn.com/b/medmedia/archive/2007/01/12/what-do-you-mean-by-mixer.aspx