VISTA音量控制 [翻译]_Vista

原文:https://blogs.msdn.com/larryosterman/archive/2005/12/15/504158.aspx
作者:larryosterman
翻译:Tony Qu (来自BluePrint翻译团队)

在Vista之前,所有对应用程序的控制都是系统级的——当你用wave volumn API改变音量的时候,你会同时改变硬件(声卡)的音量,因此会影响系统中所有的应用程序。这样做的问题在于,对于绝大部分应用程序来说,这是完全错误的行为。该行为是老的Windows 3.1音频架构的传统行为,在Windows 3.1的音频架构中,同一时间只允许一个应用程序播放声音,而在这种情况下,由于只有一个硬件音量,所以是有意义的。

在Win98的WDM音频驱动在发布之后,微软添加了内核模式音频混合器,但是他却把音量控制架构独立了出来。Windows API可以做的音量控制仍然是硬件音量控制,这么做的理由很简单:虽然每个应用程序确实需要单独的音量控制,但在Win98架构中,无法将一个独立的音频流和一个特定应用程序关联在一起,作为替换,音频流是单独处理的。

事实上,大部分应用程序确实需要单独控制他们音频流的音量,它们不想(也不需要)与其他应用程序混作一团,这其实是音频架构所导致的一个十分不好的副作用。

对于一些应用程序来说,我们是有解决方案的。例如,如果你使用的是DirectSound(或者DirectShow,实际上,DirectShow是基于DirectSound实现的),你可以把你的音频流放入一个辅助缓冲,因为DSound辅助缓冲是有自己的音量控制的,这样就可以有效地为每一个应用程序提供单独的音量控制。但这对于那些不使用DirectSound的应用程序没有任何帮助,它们只能依赖于调整硬件音量。

对于Vista而言,有一样东西被作为新的音频架构的一部分部署,那就是组件,叫做“音频策略”。策略引擎的一项任务就是跟踪哪个音频流属于哪个应用程序。

在vista中,每个音频流都与一个"音频会话"(audio session)关联,音频会话则是与一个进程关联的(每一个进程可以有多个音频会话,音频会话则可以跨越多个进程,但是默认情况下,每个音频会话是当前进程中的音频流集合)

每个音频会话有它自己的音量控制,WASAPI会提供允许应用程序控制音频会话的音量的接口。音量控制API还包含了一个通知机制,这样的话,那些需要在音量控制改变时被通知到的应用程序可以实现这一点——这一机制允许应用程序了解其他人在何时更改音量。

这一切都很完美,但是这样的话,我们该处理那些已有的使用硬件音量控制,但是却又不想使用硬件音量控制的程序?

记住我所说的,所有的已有API都被移植,从而直接使用WASAPI。我们也把那些音量控制的API移植为使用WASAPI的音量控制接口。

我们也改变了mixerLine API来使用WASAPI。这稍微有点复杂,因为mixerLine API也需要我们定义一个音频设备的布局(topology),但是我们已经定义了相对简单的布局,这一布局应该与现存的硬件技术相匹配(所有appcompat不应该是一个问题)

这么做的结果是:默认情况下,在Vista Beta 2中,我们将第一次为所有的应用程序提供每应用程序(per-application)的音量控制

时间: 2024-10-24 19:56:19

VISTA音量控制 [翻译]_Vista的相关文章

深入剖析Windows Vista音量种类

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;Windows Vista中,对于任何一个音频流 都有四种不同的音量控制方式,它们是: 1. 流音量(Stream Volume) 2. 简单音量(Simple Volume) 3. 通道音量(Channel Volume) 4. 端点音量(EndPoint Volume) 由于每种方式是一个增益级(gain stage),所以每一种都可以添加到音频输入采样中,并生成

电脑桌面无法显示音量控制怎么办

问:我在控制面板中点击"声音和音频设备",勾选"将音量图标放入任务栏",却提示"由于没有安装音量控制程序,Windows无法在任务栏上显示音量控制.请使用'控制面板'中的'添加/删除程序'来安装",请问要怎么装? 答:很可能是你没有安装声卡驱动,你用右键点击"我的电脑",选择"属性→硬件→设备管理器",定位到声音视频和游戏控制器,看看下面是否有AC97或High Definition,如果没有,那就下载驱动

Win7音量控制图标变成灰色解决方法

莫名其妙的Win7右下角音量控制图标不见了,可以放出声音,在控制面板的调节系统音量里里可以调节音量,检查了声卡驱动也是正确的.在系统控制图标中,音量一栏是灰色的(如下图),不可以更改,怎么办啦? 1.打开程序管理器(ctrl+alt+delete) 2.在进程那里找到"explorer.exe",然后按结束进程(此时工具栏会消失) 3.然后在文件(程序管理器左上角),点击"新任务" 4.然后"浏览" 5.在c:/windows/system32

win7音量控制图标不见了怎么办?

莫名其妙的Win7右下角音量控制图标不见了,可以放出声音,在控制面板的调节系统音量里里可以调节音量,检查了声卡驱动也是正确的.在系统控制图标中,音量一栏是灰色的(如下图),不可以更改,怎么办啦??? 1.打开程序管理器(ctrl+alt+delete) 2.在进程那里找到"explorer.exe",然后按结束进程(此时工具栏会消失) 3.然后在文件(程序管理器左上角),点击"新任务" 4.然后"浏览" 5.在c:/windows/system3

win7提示“由于没有安装音量控制程序,windwos无法在任务栏上显示音量控制..."怎么办

  运行win7纯净版系统的时候发现调节声音大小的时候桌面右下角没显示小喇叭图标了,也不知道怎么回事,声音都是正常播放的.只能用播放器和电脑上自带的按钮调节音量,在控制面版的声音和音频设备属性中只能勾选静音,而不能勾选"将音量图标放入任务栏",不然会提示"由于没有安装音量控制程序,windwos无法在任务栏上显示音量控制.请使用"控制面板"中的"添加/删除程序来安装"怎么办?下面小编告诉大家解决方法. 解决办法: 1.最有可能的原因:系

电脑出现音量控制打不开如何解决

  电脑出现音量控制打不开如何解决?有小伙伴在使用电脑过程中,要调节音量,却发现音量控制打不开.小编细细观察发现音量控制打不开除了设置原因之外,可能还是由于电脑中文件sndvol32.exe丢失所造成的. 方法一.音量控制打不开可能是由于文件sndvol32.exe丢失导致,打开我的电脑,然后按照路径[C:WINDOWSsystem32]看是否存在sndvol32.exe文件,如果不在,我们可以再别的电脑里面复制一个过来,或者从网上下载一个,但是必须要杀毒哦.然后重启一下电脑应该就可以了. 方法

音量控制爱隐藏 让它乖乖出现的方法

看电视的时候经常碰到有的视频声音大,有的声音很小的问题,所以就想要在控制面板中点击声音和音频设备.可是勾选"将音量图标放入任务栏",却提示"由于没有安装音量控制程序,Windows无法在任务栏上显示音量控制.请使用'控制面板'中的'添加/删除程序'来安装",请问要怎么装? 很可能是你没有安装声卡驱动,你用右键点击"我的电脑",选择"属性→硬件→设备管理器",定位到声音视频和游戏控制器,看看下面是否有AC97或High Defi

音量控制打不开怎么办

方法一.音量控制打不开可能是由于文件sndvol32.exe丢失导致,打开我的电脑,然后按照路径[C:WINDOWSsystem32]看是否存在sndvol32.exe文件,如果不在,我们可以再别的电脑里面复制一个过来,或者从网上下载一个,但是必须要杀毒哦.然后重启一下电脑应该就可以了. 方法二.利用鼠标右键点击我的电脑,然后选择[管理]选项,之后,在弹出的界面中,我们依次选择[服务和应用程序]>>[服务]>>[Windows Audio],然后我们将其启动,或者重新启动一下,如图

电脑桌面无法显示音量控制窗口怎么回事?

问:我在控制面板中点击"声音和音频设备",勾选"将音量图标放入任务栏",却提示"由于没有安装音量控制程序,Windows无法在任务栏上显示音量控制.请使用'控制面板'中的'添加/删除程序'来安装",请问要怎么装? 答:很可能是你没有安装声卡驱动,你用右键点击"我的电脑",选择"属性→硬件→设备管理器",定位到声音视频和游戏控制器,看看下面是否有AC97或High Definition,如果没有,那就下载驱动