几种数字音频输出方式
在说ASIO之前,我们先说一下几种常见的数字音频输出方式。常见的数字音频输出主要有Waveout、DirectSound、Kernel Streaming和ASIO。
Waveout是微软最早提出的音频流输出方式,所以它的兼容性也就好,几乎所有的声卡都支持。DirectSound是微软Direct X的一个组合部分,它的兼容性也很不错,并且在有多个程序需要播放音频的时候能提供高可靠的保障。
Kernel Streaming是微软底层使用的音频流方式,实际上它是以设法绕过Windows操作系统对硬件设备的控制,直接与硬件端口取得通讯的思路来实现提高响应速度的目的,能够起到输出效率高、输出延时低的效果。
ASIO是“Audio Stream Input Output”的缩写,由Steinberg提出这个标准规范,其主要目的是降低音频数据延迟,同时作为系统中独立的音频通道可以避开DirectSound或其他通道,使得ASIO下的程序可以不受系统中正在运行的其它程序的干扰,本质上是为摆脱OS对硬件的集中控制,以实现在音频处理软件与硬件之间进行多通道传输的同时将系统对音频流的响应时间降至最短。这与Kernel Streaming颇为相似。
为了对这几种输出方式有个直观的了解,我们可以看看下面这张图。
Waveout、DirectSound、Kernel Streaming和ASIO工作原理(图片来源:foobar2000中国)
从Windows Vista起,又出现了WASAPI这种输出方式。WASAPI的全称是Windows Audio Session API,这是从Windows Vista之后引入的UAA(Universal Audio Architecture)音频架构所属的API(Application Programming Interface,应用程序接口)。WASAPI允许传输未经修改的比特流到音频设备,从而避开SRC(Sample Rate Conversion,取样率转换器)的干扰。 也就是说,上图里的KMixer已经被微软淘汰了,微软想让WASAPI做的其实就是想让它像ASIO那样,运行在它下面的程序可以不受系统中正在运行的其它程序的干扰。
我们可以看到,Kernel Streaming、ASIO与WASAPI都是属于直奔底层的输出,不过ASIO与Kernel Streaming不同的是它还具有输入功能。而ASIO与WASAPI的区别在于,WASAPI的工作方式就像在多车道上专门给它划了一条车道,只供它一辆车通行;而ASIO则是干脆不走公共车道,自己专门修了另一条路,这条路上就走它自己一辆车。
推荐经销商