深入剖析Windows Vista音量种类
Windows Vista中,对于任何一个音频流都有四种不同的音量控制方式,它们是:ii8u#Cd uUZ/qv%a
1. 流音量(Stream Volume)8u!N],B |2`
e!yb,Ad-[!y)R4^:I
2. 简单音量(Simple Volume)*zj&~6mG)h/q8Jag
@^sqD8?,W8@
3. 通道音量(Channel Volume)
Br q4}-WQWd/E!j
4. 端点音量(EndPoint Volume)
h2d mP5e9w%n
由于每种方式是一个增益级(gain stage),所以每一种都可以添加到音频输入采样中,并生成最终的音频输出流。
[attach]32115[/attach]1A4h N5uZ S8o*b
F6d@PYI
图1 音频示意图
图中的每个WASAPI实例表示一个音频流,这些流会在音频合成器(Mixer)中合并起来并“流向”音频驱动。流音量、简单音量、通道音量均通过向某个独立的音频流中插入一个APO实现,而端点音量则是在合成器后面添加一个APO或者用硬件音量控制来处理,这取决于用户的音频解决方案的功能。C;s j[.rB
那么这些不同的音频控制有什么联系呢?i(Na.h6~ jld
首先来讲讲流音量。流音量是多通道音量,它对每个音频流起作用,可以让应用程序实现一些相对简单的3D效果(使用多通道流音量控制来模拟一个处于活动状态的球被弹起后的位置改变)。你可以让应用程序控制某个独立音频流的音量,但这种需求比较少。)_(?J!b!ij7M N
5jq)T\\X)Z2`
接下来是通道音量。通道音量是针对音频会话(session)的音量,用于控制整个会话中的所有音频流的音量(如果你还记得“大图”贴的话,其中讲到过一个会话包含了许多音频流)。通道音量之所以存在是因为有 waveOutSetVolume API--由于波形音量是多通道(立体声)音量,所以我们必须在WASAPI中模拟一个。同样的,这种音量也很少被使用--通常仅当从控制面板运行系统安装任务(空间修正(room correction))时才会改变通道音量,所以这一设置会影响所有的应用程序而不仅仅针对某个特定的应用程序)。