admin管理员组文章数量:1534339
2024年4月3日发(作者:)
win7下DS、KS、ASIO、WASAPI输出比较(转)
转自:
/
以下先利用图表做个最简单的比较
win7下DS、KS、ASIO、WASAPI输出比较
接下来主要介绍WASAPI的来历已经微软对声音处理的发展历程:
winxp 以前的windows 一直都是使用一般DMA 来处理声音, DMA = direct
memory access, 即是一般harddisk, lan card, drives 等一切取存设备的IO 机制, i386
年代的电脑大多数都是使用PIO 来处理hdd data 出入, 即是hdd 所读所写入的任何
data 都要直接经由cpu 所控制, 才能让ram 和hdd 互传data, 但这样做便会占用大量
CPU 的loading, hdd volume 越大越快, 情况便越糟.
所以到了大概intel pentium mmx 的年代, drive controllers 便开始转用DMA, 让
晶片能简单的控制或导向hdd/drives 直接能和ram 连接, 而不需要把传送内容资料全都
要经过cpu 处理, 这样cpu 便可以完全免除对hdd 资料的负担, 即使由以前IDE/SCSI
到今天SATA 都是使用高效能的DMA, 但是DMA 的作法是要互动等待, 所有资料不只
是以ram 作为buffer 中转站, 而且是base on ram clock timer 控制传送时机, 虽然节
省电脑效能, 但相对于audio IO 来说, 这是既不稳定, 又慢又大latency, 很难还原原音的
做法, 因为声音是一种需求时间性的一种能量, 有时间构成才有声音, 而且PCM 讯号是一
种要求每一个sample 都要实时平均的到达, 才能保持原音
而DMA audio 所使用的就是一般人所说的kmixer
但是微软宣称, vista/7 已经开始弃用了kmixer 和依赖dma 的audio IO, 而开发了
他们所说的WaveRT (Wave RealTime), 他们的WASAPI, MMCSS 等就是使用WaveRT
做核心, 而WaveRT 都有一个属于自己的mixer, 但只要开动独占摸式就可以bypass 这
个mixer, mute 掉所有其他程序的声音, MMCSS 是让你提高audio 出入IO 到最高时脉
优先权, 微软想做的其实就是使用实时clock timer控制audio 流, 而不经dma, 直接和
UAA audio devices hareware 沟通, 甚至让sound card or audio interface 的
hareware clock 直接来控制audio data, 这样的作用就是想做到和ASIO 很相近
就算是WASAPI 共享模式, 都已经没有SRC 了, 而是在控制台中可以自由让你设定
共享混音后的共同目的sampling rate, bit size 及channels, 所以的可以保留原来的
44100Hz 讯号, 不会再被SRC
而且现在所有intel motherboard 或intel chips 都已经有了HPET (High Precision
Event Timer), 可以令video 和audio 的处理更实时精确处理高sampling rates, 低bus
latency, 让每秒钟内可以回应资料流事件的次数大幅增加, 但不知AMD 的有没有
/?tid=8157140&page=1#pid116989
版权声明:本文标题:win7下DS、KS、ASIO、WASAPI输出比较(转) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1712084276a342350.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论