昨天,我对音量控制作了一个总体介绍,今天我讲详细讲解一下。
在Vista中,对于任何一个音频流都有四种不同的音量控制方式,它们是:
1. 流音量(Stream Volume)
2. 简单音量(Simple Volume)
3. 通道音量(Channel Volume)
4. 端点音量(EndPoint Volume)
由于每种方式是一个增益级(gain stage),所以每一种都可以添加到音频输入采样中,并生成最终的音频输出流。
我打算从去年的“Vista中的音频——大图”中拿一幅图过来(译者注:由于图片太大,仅提供下载,不插入在本文中)
图中的每个WASAPI实例表示一个音频流,这些流会在音频合成器(Mixer)中合并起来并“流向”音频驱动。流音量、简单音量、通道音量均通过向某个独立的音频流中插入一个APO实现,而端点音量则是在合成器后面添加一个APO或者用硬件音量控制来处理,这取决于用户的音频解决方案的功能。
那么这些不同的音频控制有什么联系呢?
首先来讲讲流音量。流音量是多通道音量,它对每个音频流起作用,可以让应用程序实现一些相对简单的3d效果(使用多通道流音量控制来模拟一个处于活动状态的球被弹起后的位置改变)。你可以让应用程序控制某个独立音频流的音量,但这种需求比较少。
接下来是通道音量。通道音量是针对音频会话(session)的音量 ,用于控制整个会话中的所有音频流的音量(如果你还记得“大图”贴的话,其中讲到过一个会话包含了许多音频流)。通道音量之所以存在是因为有waveOutSetVolume API——由于波形音量是多通道(立体声)音量,所以我们必须在WASAPI中模拟一个。同样的,这种音量也很少被使用——通常仅当从控制面板运行系统安装任务(空间修正(room correction))时才会改变通道音量,所以这一设置会影响所有的应用程序而不仅仅针对某个特定的应用程序)。
再来则是简单音量。简单音量是这对音频会话的音量,用于控制整个会话中的所有音频流的音量。它是一种统一的音量,会平均应用到所有的通道。这也是我们希望大部分应用程序使用的音量控制方式——因为它提供了一种简单的控制应用程序音量和静音状态的方式,这种方式对于大部分应用程序已经足够了。这种音量其实就是Vista声音混合器中显示的每个应用程序的音量滑块。
逻辑上讲,你可以把上面三个音量一起应用(但这其实不是事实,它们其实是同时被应用的)来为每个音频流创建最终音量。
最后我们来讲端点音量。正如我以前提到过得,端点音量表示主音量(master output)输出,它是作用于最后合成的音频流的,可以对特定的端点起到主音量控制的作用。
翻译:
- Tony Qu (进士)
-
3译文, 5738个读者
软件开发, 中国.上海.上海市 - Tony Qu的个人空间
Tony Qu的其他译作
- .NET牛人应该知道些什么 (3114)
- ASP.NET中大结果集的分页 (1869)
原文:
本周热门
- 英国股市瞬间蒸发千亿!世界经济开始崩盘? (20585)
- 苦涩的水-拯救黄河 (17391)
- 图看十年明星路(1/4) (8166)
- 译言视频:Yes We Can(内嵌中文字幕) (7695)
- 艾滋病毒在中国疯传 波及新人群 (4682)
- “为什么会患癌症?”——许多人对此一无所知 (2465)
- 为什么癞蛤蟆想吃天鹅肉? (2395)
- 中国拒绝透露有多少孩子因奶粉丑闻而致病 (2282)
- 拥有超能力的八种动物 (1993)
- 恋爱成功的十大关键 (1883)
其它收藏服务:
Vista中的音量II: Windows Vista音量种类
755个读者
翻译: Tony Qu
02/25/2008
原文
引用
双语对照及眉批
字体大小
小
中
大
-
Google OpenSocial:第三方
Techcrunch已获悉有关Google新的社会化网络项目的详细资料,它名为“OpenSocial ”(将特意于周四在美国推出)。OpenSocial本身并不是一种社交网络,而更像另一种通用的AP...
-
Web 3.0: 当web网站成为web服务
今天的web蕴藏着大量的对人类有用的信息,但却隐藏在计算机之后。矛盾在于信息是以一种神秘的机器难以处理的格式隐藏在HTML页面中. 所谓的”web3.0”就是指Web网站正向Web服务发展, 它们将...
-
当前互联网的汇聚和API趋势
Web2.0带给我们大量的API和奇妙的Web汇聚(Mashup)新概念。多亏有了Google地图,del.icio.us和Flickr这样的应用,我们才开始努力思考怎样混合各种web应用。下图给出...
-
Google 插件应用程序接口
Google 插件并不神秘,说穿了,就是一段XML代码。你完全可以写出自己的小插件。 好,还是从 Hello World! 开始。下面是代码: 就这么简单。没什么多说的:第一行是xml声明,然后是 ...
-
两分钟内安装Windows Vista
译者:挺好玩的一段视频。但不代表我对微软的看法。 :-) 这段视频在提高听力/翻译视频小组。用它尝试一下这个做法:在本文中首先嵌入加了中文字幕的视频,供中文读者欣赏。同时把英文原文视频和对白全文的链...
-
浏览Flickr的11种疯狂方式
给人们一个API,他们瞬间就可以摆弄出许多疯狂的东西。以FLICKR为例,浏览FLICKR照片的方法多到无可计数,但不是所有方法都确实有用,所以我们别出心裁地为你挑出了11种不可思议的方式。 有读者告...
-
定制google reader的blog片段
Google Reader允许你给blog和blog文章加标签并和你的朋友分享它们。你获得一个feed,一个HMTL页面或者一个可以加到自己站点的代码片段。 如果你使用来自google reader...
-
Google Reader API
Google Reader 是一个使用了大量JavaScript构建的feed聚合器,它能非常及时地抓取最新的feed数据。Google的Ajax前台调用到的数据采用了Atom格式,这种数据技术降低了...
标签:












