铿锵一叶
发表于 2008-9-4 21:06:55
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?快速注册
x
阅读时请先注意如下词汇:% n! J/ ~: l' S; Q
/ B( s& }# S# m" d- w
& w/ k6 Z. F! x9 A0 z* U3 w( U: p; w- K! Q* a
DirectSound、Kernel Streaming、WASAPI 都是API中的一种。
0 v& F( v% @ X; J
# Z( v/ B. I9 y' g- u
; I4 M! @5 U2 d5 w; i( p6 [ G w4 b2 v/ u1 h" D
WaveOut、DirectSound、Kernel Streaming属于WDM通道。
" e5 M+ K; C2 g7 C" v$ Z* Y' |9 y; A0 ~1 [# m' M8 r9 {
- C/ G V6 Q7 w& V6 J" ^" z$ N
6 K( H" x7 D3 g, w- Z ASIO & Kernel Streaming(内核流)
" f2 N, v/ m) t' v: X0 }6 E* Z; L5 v; n) ^
理论上,ASIO的主要目的是降低音频数据延迟,同时作为系统中独立的音频通道可以避开DS或其他通道的干扰,从而使得ASIO下的程序可以不受系统中正在运行的其他程序的干扰。本质上是为摆脱操作系统对硬件的集中控制,以实现在音频处理软件与硬件之间进行多通道传输的同时将系统对音频流的响应时间降至最短。
& V) @" T: I6 i G, o% L, T
6 h* r# Y8 f& v) S+ X3 |
J* q- d8 T' C6 r
0 }7 @, t9 I2 F' s3 k5 H 另外,ASIO与KS比较相似,都是以设法绕过Windows操作系统对硬件设备的控制,直接与硬件端口取得通讯的思路来实现提高响应速度的目的。不过ASIO要比KS做得更彻底些,有人把KS比成用高级语言实现的程序,把ASIO比为用汇编代码构成的程序。毕竟ASIO不仅在通道上更为直接,还需要硬件芯片的支持,从这一点上讲,延迟比KS低,效率相对也更高。
S D0 }/ |" U W
! X5 C7 ?8 O& B: @) M ; s0 G8 @6 e4 ^3 @0 m
; D. S/ P9 ]- M Y
Windows 自有的 MME 驱动程序其延迟时间为 200~500 ms(毫秒);DirectSound 为 50~100 ms;Mac OS 的 Sound Manager 则为 20~50 ms;使用 ASIO 的情况下,缓冲器依照设定的不同可以小于10 ms,也有因环境较佳而达到1 ms的情况。因此,在录音作业与音乐制作上,理论上可达到实时处理的效果。
9 Y; u4 }9 C) m( J9 N. s2 \7 D. n9 S; f8 N% ?7 d2 U4 e
# y4 F, l8 R+ [9 ~, \! e2 B, F) L7 n# F. h7 M% G6 N9 y( g+ B, i( K1 y
Kernel Streaming到底是个啥啊?. l1 J$ E" e9 y6 b+ R
% \8 w1 z1 ]# H) [
0 b. T: A: O4 H* n& {0 W
4 U' k& v. w4 J6 q
Kernel Streaming是将所有的设备都归Windows管,但是所有访问声卡的命令都要通过Windows来调度就会造成不必要的延迟。所以有几个办法,微软推荐他们的DirectX,在声卡的应用方面体现为DirectSound;这个Kernel Streaming应该就是一种“协议”,直接访问驱动层,避免了Windows软件管理层的干扰。Steinberg推出ASIO标准,也是为了达到类似的目的。! W9 s- U* ?( X# k$ K/ Y K
; r% T- r6 H2 M2 w
|
|
|
|
|