随着中央处理器(CPU)发展为多核心的多面手,专用音频硬件的必要性逐渐减弱。 最终,微软决定Xbox 360的音频处理将由CPU负责,因此,音频处理管线完全通过软件来完成。 操作系统提供了游戏通过官方软件开发工具包(SDK)访问的例程。 这带来了新的优势,因为CPU的通用处理能力不仅限于一组固定的音频功能。
一年后,PlayStation 3也将采用相同的做法,从而在视频游戏行业中确立了这一趋势。
Xbox 360的音频硬件解码器
相反,在Xbox 360的情况下,我们看到了一个显著的例外:微软在主板上集成了一个硬件音频解码器。 这个解码器位于南桥芯片内部(在'I/O'部分有更详细的解释),并且它专门设计来支持一种称为Xbox Media Audio (XMA)的编解码器。 XMA是微软专有的Windows Media Audio (WMA)格式的一个变体,你可能已经熟悉它了。 那么,为什么这个编解码器如此重要,以至于微软在已经面临预算削减的游戏机上额外投入了硬件资源呢?
多媒体编解码器的兴起

1999年发布的Windows Media Player 6 成为了微软对抗其竞争对手,如QuickTime、Winamp等的重要工具。
在21世纪初(甚至是上世纪90年代末),随着互联网的普及和价格亲民的多媒体产品(如加速卡、支持SIMD的CPU和快速网络带宽)的出现,许多曾经主要专注于生产软件的公司开始涉足多媒体服务领域。
用户现在希望电脑能做更多的事情,比如观看全动态电影,在处理电子表格时听音频CD,以及翻录(甚至混合)音频CD,仅举几例。 当然,我们现在认为所有这些都是理所当然的,但这些"能力"在历史上的某个时刻必须被实现。 最初,它们是通过第三方软件提供的(例如 Nero和Winamp),后来随操作系统捆绑(例如Windows XP及其集成的CD刻录功能; 以及捆绑了iTunes的Mac OS X 10.1)。
现在,深入探讨音乐领域及其不断发展的分享系统,我们会发现MP3已成为音乐传输的主流编解码器。这引发了市场对能够解码MP3(更准确地说,是MPEG-1)的媒体播放器的巨大需求。 那么,微软是如何应对这一趋势的呢? 他们选择开发一种_新的_编解码器来替代MP3,这种新格式被称为Windows Media Audio,简称"WMA"。
WMA的再次推广

Windows Media Player 11于2006年发布。 它拥有更精美的用户界面和更多的专有编解码器!
然而,对于微软来说,不幸的是,WMA的普及程度并没有达到MP3的水平,这可能是微软的许可政策所致。 更糟糕的是,微软通过发布不兼容旧版本的更新和提供不同层级的版本,使得WMA用户群体变得分散。 尽管如此,微软仍然通过其他途径努力推广WMA,例如,通过DirectX的音频播放库"DirectShow"。
现在,不难发现这两者之间的联系。 初代Xbox被设计为一个与DirectX兼容的游戏机,尽管对此可能有不同看法,但这个口号同样适用于Xbox 360。 因此,WMA在这款游戏机上的延续也就不足为奇了。
然而,微软并没有直接采用现有的WMA格式。 相反,他们对其进行了优化,使其对已经采用索尼ATRAC3的游戏工作室更具吸引力。 具体来说,微软选择了高端的WMA层级——"WMA Pro",并增加了更多适合Xbox 360带宽容量的压缩级别。 最后,他们将这种格式重命名为Xbox Media Audio,简称"XMA"。
为了进一步完善,微软增加了专门的电路,用于在解压缩任务期间减轻CPU的负担,从而让CPU能够专注于游戏的其他方面。
一窥XMA解码器
就功能而言,XMA解码器能够解码多达5.1声道的音频,支持48 kHz的采样率和16位的分辨率。 这些规格都在意料之中,没有太多惊喜。
XMA解码器的工作流程如下:
- 首先,它从主内存中读取XMA编码的数据。
- 然后,对这些数据进行解码。
- 接着,输出PCM数据,使其准备好在主内存中的任意位置进行流式传输。
- 最后,CPU可以对这些数据进行效果处理,或者将其发送到音频DAC以供聆听。
所有这些操作都通过微软的库来实现抽象化,这些库负责管理数据的流式传输、缓存优化以及内存中的移动。 开发者可以使用多个API,每个API提供不同程度的抽象层。 然而,即便是最低层的API也无法直接访问XMA解码器,因为它仍然是一个专有且未文档化的电路块。
