|
我知道很多玩PCHIFI的人会固执的认为ASIO是最好的输出方式,但我相信起码有80%以上的人对ASIO并不了解,甚至包括一些编写ASIO播放程序的人
ASIO与其说是一个驱动,还不如说是一套编程接口,它本身并不属于Windows驱动框架,可以算是一种旁路驱动,不受Windows驱动体系管理,有很多老卡,在Win7下WDM不能驱动,但ASIO还能正常工作,原因就在于此。
ASIO处理音频的方式与Windows框架完全不同,这里就只简单讲讲数字播放部分
Windows音频播放流程:
音频缓冲区[左声道右声道交错排列]->声卡输入PIN->声卡输出PIN->SPDIF[左声道右声道交错排列]
ASIO音频播放流程:
多个音频缓冲区[每声道一个缓冲区]->声卡通道[每声道一个通道]->声卡硬件混音->SPDIF[左声道右声道交错排列]
对于播放软件来说,使用ASIO需要做两件事:
第一,将音频文件按声道解开(WAV文件是声道交错排列的)
第二,将音频重采样到32BIT,ASIO只接受32BIT格式,曾经有高人说可以16BIT,但没看到代码。一些专业声卡可以设置ASIO的输出位深,但那只是针对硬件混音部分的设置,对于软件来说都是32BIT
了解以上原理,要想在ASIO上获得好的声音,有个重要的条件,就是声卡必须硬件支持ASIO。因为存在混音过程,假如声卡硬件不支持就只能靠软件混音了(比如USBASIO,它的软件实时音频混音只能到48K,再高搞不定了)
凡是硬件不支持ASIO的,通过USBASIO或ASIO4ALL都只能获得非常有限的效果,只是能让软件能使用ASIO接口而已,并无实质性的提升
这也是我为什么一直都没有太大兴趣去写ASIO播放器的原因,硬件支持ASIO的音频接口太少了,实用性不高
我计划在完成JEP的原生WASAPI播放器后再来写ASIO,这个时间也许会排在很后很后。
|
|