Win Audio

发布于 2020-11-08  322 次阅读


综述

DirectSound是微软所开发DirectX的组件之一,可以在Windows操作系统上录音,并且记录波
形音效(waveform sound)。当前DirectSound是一个成熟的API,提供许多有用的功能,例
如能够在较高的分辨率播放多声道声音。

DirectSound3D(DS3D)最早是1993年与DirectX 3一起发表的。DirectX 8以后的
DirectSound和DirectSound3D的(DS3D)被合称DirectX Audio(XAudio,所以后来的被称为
XAudio2)。

Windows Vista

自Windows Vista开始,微软把以往的整套音频架构重写,提出了一套新的通用音频架构
Universal Audio Architechture(UAA),此改动规定所有声卡厂商必须跟从UAA架构来编写
其驱动程序。由于历史因素,声卡厂商以往会在编写其驱动程序时,把部分功能:例如DSP特效
编写并运行于核心模式之上(Kernel Mode),但是对于Windows而言,假若音效驱动程序发生
故障,会直接引致整个Windows故障亦降低其稳定性。有见及此,在UAA开始后,各声卡厂商必
须把原有写在核心模式上的功能转移及编写写在用户模式(User-Mode)之上。而配合UAA架
构,微软在Windows Vista开始重写其音效框架,并且增加一套全新的音频API,Windows
Audio Session API(WASAPI)给软件开发者。

此API完全改写以往旧版Windows时处理音频数据的流程,所有音频流必须经过此API才能控制或
输出其音频数据流,WASAPI提供两种模式给开发者,分别为:共享模式和独占模式,其中独占模
式效果相近于ASIO[1],当应用程序使用独占模式时,随已独占的音频程序外,其他程序音频流
均会被截断,系统也只允许独占模式中的音效程序播放音效,而有关音效也不会经过重新采样或
DSP效果等便可以直达声卡输出,这样可确保原始音效数据发送时不会受到干扰,而且一定程度
保证了其的完整性,而WASAPI也允许每个程序均可设置其独立的音量大小,不再以单一固定的系
统音效控制音量大小。

但不幸的是,以往游戏以至音频程序常用的音效硬件加速API,DirectSound,Direct Sound
3D,Direct Sound EAX效果以致Kernel Stream等也不能再直接使用声卡进行硬件加速,如
程序使用以上API,将透过WASAPI改用CPU进行软件模拟方式处理相关的音频数据。正因如此,
微软建议各声卡以致程序开发商改用其他音频API以便作硬件加速方案,例如:OpenAL/
OpenSL这些API为程序重新提供硬件音频加速功能。

Windows 8

Windows 8开始,微软再次为WASAPI重新加入硬件加速功能,称为WASAPI硬件音频卸载
(Hardware Offload)允许音频可以从CPU改用声卡作处理,但这功能局限于ModernUI程序使
用,传统应用程序是无法使用此硬件加速功能

XAudio 2

微软为了与Xbox 360集成,积极开发了Xbox audio APIs像是XAudio和the
Cross-platform Audio Creation Tool(XACT)。XAudio 2可以跨平台(Windows与
Xbox),意图取代DirectSound。

WinCE

DirectSound在Windows CE 4.2上有支持,5.0时被移除。Windows CE 6.0也不支持
DirectSound,应用程序被重写成Waveform Audio API。

详细内容

附录

[1] ASIO:ASIO(Audio stream input output),音频设备驱动程序的一种。

概要

ASIO是由德国Steinberg公司所提出的音频流输入输出应用程序,为音频API标准之一。现今
贩售的高级声卡多具备此一规格,亦有支持Windows和Mac OS的驱动,已成为业界大多采用的标
准。与Mac OS X的Core Audio是同等级的技术。另外Linux方面,也具备低延迟内核。
Windows和Mac OS皆拥有支持ASIO的驱动程序。ASIO可实现低延迟、高同步、高吞吐率。其开
发目的是为了改善过去OS所搭载的驱动无法进行多通道传输,而提出的改善方案。ASIO可依照机
器所能处理的情况下进行多通道、采样率、比特数据处理。

低延迟

Windows自有的MME[2]驱动程序其延迟时间为200500毫秒,DirectSound为50100毫秒,
Mac OS的Sound Manager则为20~50毫秒,使用ASIO的情况下,缓冲器依照设置的不同可至10
毫秒以下,也有因环境较佳而到1毫秒以下的情况产生。因此,在录音作业与音乐制作上,可达
到实时处理的效果。

多轨道,多通道

ASIO可同时处理多通道音频流,进行多轨传输。

[2] MME:Multi Media Extension

概述

为 Windows3.1 以来的音频驱动标准,可于 Windows 的控制台进行操作。在 Windows3.0 时代,是 Microsoft 为 Windows 提供的扩充规格。


朝闻道,夕死可矣