|
转一篇以前收藏的关于Intel HD Audio的文章, 对了解PC音频很有帮助。
( r8 z6 I$ v, K& W% f ) h' ]' P/ S- w7 e7 E/ q+ _, |
How the Intel HD Audio system works Pt 2
' b7 j m7 r) G) o0 M; K" d' S% [' r0 A5 e$ p: Q4 r
: B" N0 s3 H6 n+ C5 T
, n5 M) `+ P+ _" o) T5 c6 x
原著:David Roach
& F k! k1 C v$ [7 Z翻译:gzxw" _! t: Y1 w. Z: z& S5 S8 u% R
4 j2 v' S- T8 h
Intel HD Audio Codec 层
0 z l! m% I' p4 [codec与主板交汇于codec的针脚。codec与软件层交汇于转换器单元, 例如DAC、ADC, 连接在Intel HD Audio总线上。 0 e; {' I+ ]1 t B) G& ?5 v
+ I* l) v& s& k, M7 `( O1 K4 Z5 s+ ^2 D
, h7 I E4 J. |% hFigure 9.3 The Intel HD Audio Codec Layer
7 H, g( R, q: J* l
' u' o, Q# k5 C) h声卡插座与转换器之间的信号流是由声卡的功能驱动定义的。(Microsoft UAA class driver for Intel HD Audio)通用音频结构高清晰度音频类驱动程序包括codec的拓扑分析模块,它使用默认寄存器中的针脚配置数据来决定使用哪一路内部信号。7 Z+ u* N3 v/ t! B& \, d7 Q3 C
& `, @' i3 { Z- D如果一个系统配置为独立多信号流,而你想要显示整个系统中的所有信号流,你需要创建位于其它层之上的分离层,每一层内都包含一个软件层。3 i5 i3 e- V/ B
) g5 ^. {) b t
主板层可以包含一个或更多的codec层,每个codec层当中包含一个软件层。codec的音频信号经由编号A至G的插座端口传送,主要是模拟信号, 但例如S/PDIF, ADAT, I2S, PWM之类的数字信号同样支持。9 k& c8 T* m: z/ R* v
/ g8 a: |9 @6 w4 o/ _# w保真度指标是codec设计制造中重要一环。洁净、稳定的电源供应,codec内模拟信号的保真度通常要高于主板层的保真度。 & u; V2 U' |1 O9 u
9 d- `8 }# l+ O& ^4 }: j
Intel HD Audio总线,控制器,总线驱动程序4 ^4 a' u5 m' A5 {- W; r
从信号流的角度看,Intel HD Audio 总线,及其控制器、总线驱动程序对音频流来说是透明的。总线那里是不发生音频处理过程的。就信号流来说,你可以把Intel HD Audio信号通道看作是是一条无损的直线。就流程图层来说,你可以氢Intel HD Audio总线看作是硬件层与软件层的分界线。Intel HD Audio总线上跑的是数字信号,没有模拟信号通过这条总线。
2 Z" }8 W0 j' F. ]. O9 y
6 z" K4 q0 i5 F5 }+ m+ \2 rWindows XP中的内核模式软件层。内核模式软件层与codec相交于Intel HD Audio总线。内核模式软件层与用户模式软件层的交汇处是用户模式与内核模式的分界线,音频数据缓存块就是越过这条分界线进行复制,音频数据在复制中可以进行相关的处理。
) k# Q; W& C$ ] `* h. @' K+ T5 z3 B2 {# E' _
每个codec层都包含有内核模式软件层. 每个内核模式软件层当中都包含一个用户模式软件层。软件层中的所有音频信号都是数字的。 软件层的信号保真度取决于信号的位深与采样率。 软件层中引起保真度降低的另一个原因是不正确使用DSP所致。; ?9 l# D; K i* W/ d, h
! t ~( m) V& x+ L6 |2 U
图9.4显示了在Windows XP系统中使用Windows Media Player (WMP) 播放7.1环绕声时的信号流。 你可以看到8声道的信号经过WMP内建的的EQ与SRS模块插件进行处理。接下来这个信号传送至Direct-Sound接口,过渡至用户模式。 DirectSound同样有处理信号的能力,虽然通常没有对来自Windows Media Player的音频流进行处理。信号通过系统音频驱动、 PortCls驱动,但以上过程都不对信号进行任何处理,他们等效于一条直线。; O7 ^! n2 A1 T, Q/ p( m4 `; H
2 C. x. f1 |3 w; R: G
3 C5 \) v: E# I/ ]Figure 9.4 Windows XP playback of 7.1 Surround KMixer performs processing on the signal.
. } c9 @, s4 a& ^ m2 K p$ s! C* U' W
前方两声道的音量调节是由Wave滑动条控制。KMixer同时也将所有输入音频流转换成与KMixer输出能相混合、格式一致的的音频格式。在输入音频流数量超过驱动的支持时,KMixer能够对输入音频流进行缩混。 D3 t! q& D! M2 f4 I0 o9 E" y$ [8 R1 y! _
8 }6 B- _+ w5 y3 }" C% s内核输出中最后阶段的处理在驱动中是一个可选项。当虽然Microsoft UAA class driver for Intel HD Audio对此没作处理,但多数codec厂商提供的Windows XP声卡都包含各种各样的处理信号处理,例如第3章所提到的。
1 i% z0 Z4 y- a0 G* ]# L$ q1 [( w- N& X, i+ r9 S
图9.5显示了一个使用Net Meeting进行语音通讯的近似图。一个单声道麦克风信号用作语音输入。位于miniport驱动中的一个处理节点是降噪处理,接着信号通过PortCls传送至分配器模块。 这个流是相对KMixer而言的: 当KMixer接收多输入流并将其混合成一条输出流时,分配器占用一条输入流并提供给多个应用程序。如果你打开一个波形录音程序, 这个程序也能从分配器接收到同样的信号。从功能上看,这个分配器相当于专业音频系统中的分配放大器。KMixer 同样为每个应用程序请求提供不同的采样率与格式。
& u: e/ D6 i% A7 w7 R. U
0 |. l/ ]9 q' S: n4 U $ e6 l4 [0 s7 `9 z0 N
Figure 9.5 The Windows XP Kernel Software Layer for RTC
0 I+ E; X0 x/ q3 Z+ ?8 R) t/ o5 v; Z, O/ g7 D+ x" @3 g! ~& P
[ 本帖最后由 gzXW 于 2007-3-12 20:56 编辑 ] |
|