minijack 发表于 2007-12-28 17:50:50

ASIO Kernel Streaming 等音频设备驱动的区别

阅读时请先注意如下词汇:



  DirectSound、Kernel Streaming、WASAPI 都是API中的一种。



  WaveOut、DirectSound、Kernel Streaming属于WDM通道。



  ASIO & Kernel Streaming(内核流)

      理论上,ASIO的主要目的是降低音频数据延迟,同时作为系统中独立的音频通道可以避开DS或其他通道的干扰,从而使得ASIO下的程序可以不受系统中正在运行的其他程序的干扰。本质上是为摆脱操作系统对硬件的集中控制,以实现在音频处理软件与硬件之间进行多通道传输的同时将系统对音频流的响应时间降至最短。



  另外,ASIO与KS比较相似,都是以设法绕过Windows操作系统对硬件设备的控制,直接与硬件端口取得通讯的思路来实现提高响应速度的目的。不过ASIO要比KS做得更彻底些,有人把KS比成用高级语言实现的程序,把ASIO比为用汇编代码构成的程序。毕竟ASIO不仅在通道上更为直接,还需要硬件芯片的支持,从这一点上讲,延迟比KS低,效率相对也更高。



  Windows 自有的 MME 驱动程序其延迟时间为 200~500 ms(毫秒);DirectSound 为 50~100 ms;Mac OS 的 Sound Manager 则为 20~50 ms;使用 ASIO 的情况下,缓冲器依照设定的不同可以小于10 ms,也有因环境较佳而达到1 ms的情况。因此,在录音作业与音乐制作上,理论上可达到实时处理的效果。



  Kernel Streaming到底是个啥啊?



  Kernel Streaming是将所有的设备都归Windows管,但是所有访问声卡的命令都要通过Windows来调度就会造成不必要的延迟。所以有几个办法,微软推荐他们的DirectX,在声卡的应用方面体现为DirectSound;这个Kernel Streaming应该就是一种“协议”,直接访问驱动层,避免了Windows软件管理层的干扰。Steinberg推出ASIO标准,也是为了达到类似的目的。

minijack 发表于 2007-12-29 02:29:05

关于几个ASIO版本的主要区别:



  ASIO 2.0:ASIO 1.0的后继规格,最大的不同点是支援输入信号在合适的音频硬件中直接监听,以达到零延迟的效果。



  ASIO 2.1:由于SONY的影响,增加DSD对应,除此之外并没有其它的变更,所以,能用ASIO就用ASIO,前提是你的硬件能支持ASIO,而不是光加一个ASIO驱动能放声就完事了。否则就变成4All了。当然,ASIO驱动有一个最大的弊病,是每块声卡的ASIO都不是互通的,也就是说,你不能在同一个软件下使用多块声卡!这对于需要多块声卡录制(例如USB电容话筒)同时工作的用户来说无疑是一个打击。



  在这种情况下,推荐使用基于WDM的DirectSound,可以支持多块声卡,不过可能延迟率就略高一些,当然,在录制工作完成之后,进行最后的处理,便可以开启ASIO,专心使用其中一块声卡来做最后的输出了。



  ASIO & ASIO4All还有一个是关于ASIO4All的,因为老是有人分不清和原生ASIO驱动的区别,这里提醒一下。它其实是让不支持ASIO设备通过模拟的方式支持ASIO的一个驱动程序而已,换句话说,只具有ASIO软性方面的优势,也就是说与KS并没有本质上的不同。Wuschel倒是声称ASIO4All能使几乎所有的声卡以及AC97板载声卡都能支持ASIO,达到专业音频卡才能达到的低延迟。其实这里有个小模糊,应该说是“看起来像是用了所谓的ASIO,但是并不完全独立”。所以,ASIO4All并不是让声卡硬性支持ASIO,从这点上讲,必然要比ASIO差。



  不过,我们目前的弹奏速度,延迟率均在20ms之内,不会非常明显(你要是需要弹得速度特别快,都不是人手了)。

cnyinpin 发表于 2008-1-10 21:32:56

再顶

cnyinpin 发表于 2008-1-13 20:01:16

呵呵,再来看一下:lol
页: [1]
查看完整版本: ASIO Kernel Streaming 等音频设备驱动的区别