POPPUR爱换

标题: Intel HD Audio系统是如何工作的(翻译完成) [打印本页]

作者: gzXW    时间: 2007-3-8 16:32
标题: Intel HD Audio系统是如何工作的(翻译完成)
转一篇以前收藏的关于Intel HD Audio的文章, 对了解PC音频很有帮助。
% t# A1 q( f5 a& z4 X$ ?2 W! H
% K$ j7 q5 V" c6 t* T, iHow the Intel HD Audio system works Pt 2 ; R/ U  s2 u. s+ w- t( d

& b. t" a* ^' T2 C/ P
7 s5 h6 f( _4 ^9 C' y  B2 t7 h2 V+ {9 Y& N, c, V% ]
原著:David Roach
" [" h' k; R( {; e( m翻译:gzxw! Q2 x7 [! O. g+ L9 G8 N3 E' k3 e

4 I. v, \  w: F, TIntel HD Audio Codec 层% I* P7 q: M* x: Q0 N( a9 N
codec与主板交汇于codec的针脚。codec与软件层交汇于转换器单元, 例如DAC、ADC, 连接在Intel HD Audio总线上。 2 {) y1 w' |9 X; o
4 r! L+ d# _% s1 I# S) V

3 g2 s/ D' G7 {6 k/ M5 a0 AFigure 9.3 The Intel HD Audio Codec Layer
( }/ F8 ]2 k5 H) w( |3 Z& ~3 O& ?$ k/ L4 j
声卡插座与转换器之间的信号流是由声卡的功能驱动定义的。(Microsoft UAA class driver for Intel HD Audio)通用音频结构高清晰度音频类驱动程序包括codec的拓扑分析模块,它使用默认寄存器中的针脚配置数据来决定使用哪一路内部信号。
0 A6 U4 B$ l5 N. o7 X7 [2 X6 o) H4 p: z# w
如果一个系统配置为独立多信号流,而你想要显示整个系统中的所有信号流,你需要创建位于其它层之上的分离层,每一层内都包含一个软件层。: `/ b5 \5 {9 y

7 Q3 H. t9 x5 V7 [6 I, }/ z* E主板层可以包含一个或更多的codec层,每个codec层当中包含一个软件层。codec的音频信号经由编号A至G的插座端口传送,主要是模拟信号, 但例如S/PDIF, ADAT, I2S, PWM之类的数字信号同样支持。
( ?) o( t# Q. |" E; y: h! a% T- G7 W0 e% `3 o& A# V
保真度指标是codec设计制造中重要一环。洁净、稳定的电源供应,codec内模拟信号的保真度通常要高于主板层的保真度。
% j0 g* Z8 R; |7 o
& I, `! @. F  [% KIntel HD Audio总线,控制器,总线驱动程序- l. R5 I. @9 o& w' T) A
从信号流的角度看,Intel HD Audio 总线,及其控制器、总线驱动程序对音频流来说是透明的。总线那里是不发生音频处理过程的。就信号流来说,你可以把Intel HD Audio信号通道看作是是一条无损的直线。就流程图层来说,你可以氢Intel HD Audio总线看作是硬件层与软件层的分界线。Intel HD Audio总线上跑的是数字信号,没有模拟信号通过这条总线。
8 Y" ~4 M* s, U. p
' C& }4 J* K5 q3 kWindows XP中的内核模式软件层。内核模式软件层与codec相交于Intel HD Audio总线。内核模式软件层与用户模式软件层的交汇处是用户模式与内核模式的分界线,音频数据缓存块就是越过这条分界线进行复制,音频数据在复制中可以进行相关的处理。9 n# N, L) {- u8 _6 C

. K7 `/ P% i# B( |6 Z7 n每个codec层都包含有内核模式软件层. 每个内核模式软件层当中都包含一个用户模式软件层。软件层中的所有音频信号都是数字的。 软件层的信号保真度取决于信号的位深与采样率。 软件层中引起保真度降低的另一个原因是不正确使用DSP所致。
2 c9 |6 c# g0 J* U" N6 f; f
% s! p7 ]" y: y& b3 ~图9.4显示了在Windows XP系统中使用Windows Media Player (WMP) 播放7.1环绕声时的信号流。 你可以看到8声道的信号经过WMP内建的的EQ与SRS模块插件进行处理。接下来这个信号传送至Direct-Sound接口,过渡至用户模式。 DirectSound同样有处理信号的能力,虽然通常没有对来自Windows Media Player的音频流进行处理。信号通过系统音频驱动、 PortCls驱动,但以上过程都不对信号进行任何处理,他们等效于一条直线。
0 D: v, |  @" x( z
4 S6 Q$ ?+ \, F
; U' }$ r4 Q' O3 D" X5 T% W( k4 l! ^Figure 9.4 Windows XP playback of 7.1 Surround KMixer performs processing on the signal.
3 l: H/ e, q+ V9 r6 D8 I  X0 K) a% W& z
前方两声道的音量调节是由Wave滑动条控制。KMixer同时也将所有输入音频流转换成与KMixer输出能相混合、格式一致的的音频格式。在输入音频流数量超过驱动的支持时,KMixer能够对输入音频流进行缩混。
0 j" y: c% `2 P; b6 J# l& w5 @0 `% z
" I2 T% D- ?6 o& t0 z内核输出中最后阶段的处理在驱动中是一个可选项。当虽然Microsoft UAA class driver for Intel HD Audio对此没作处理,但多数codec厂商提供的Windows XP声卡都包含各种各样的处理信号处理,例如第3章所提到的。# ~$ @5 Q# [. {7 T

! q, o/ L1 g; F' i/ Z; k: i# a2 V. C图9.5显示了一个使用Net Meeting进行语音通讯的近似图。一个单声道麦克风信号用作语音输入。位于miniport驱动中的一个处理节点是降噪处理,接着信号通过PortCls传送至分配器模块。 这个流是相对KMixer而言的: 当KMixer接收多输入流并将其混合成一条输出流时,分配器占用一条输入流并提供给多个应用程序。如果你打开一个波形录音程序, 这个程序也能从分配器接收到同样的信号。从功能上看,这个分配器相当于专业音频系统中的分配放大器。KMixer 同样为每个应用程序请求提供不同的采样率与格式。   r- a# L. W% O$ X" v4 R. z
. U$ A: P' H3 n* ^
0 d# J8 E% S, P$ q: L
Figure 9.5 The Windows XP Kernel Software Layer for RTC 8 s  j& j) Y5 j" O
1 @3 y- X8 U9 n6 Z+ p. @4 I4 i
[ 本帖最后由 gzXW 于 2007-3-12 20:56 编辑 ]
作者: gzXW    时间: 2007-3-8 16:33
系统音频设备,Legacy API转换层,以及WaveIn()端口对音频信号通过不产生影响, 对信号流来说,他们等效为一条直线。  S) W+ w/ T2 X7 T

# g5 e2 M. ?& K+ R$ J3 ]: V这个输出流程与7.1的输出流程非常相似,尽管在这个案例中应用程序是使用WaveOut() API而不是DirectSound。与DirectSound不同的是,WaveOut()在音频信号传送过程中没办法作任何处理。
, v8 x8 \# N  C: \/ Z3 a6 ~1 N
+ P! H& ]# G% g有一个辅助的层在这张图中没有显示出来。每个信号处理节点能执行一个或多个类型的处理, 并且处理的顺序能按需要作改变。限压器位于EQ前、与限压器位于EQ之后产生的效果是差别很大的。图上的每个信号处理节点更进一步显示内部发生的处理过程。图8.4至8.7 显示了处理节点中典型的DSP功能列表,但他们不包括DSP连接的附加内部详细资料。1 K. I1 c, C! ^  h4 e

/ X: t" R' P6 F; `) d, f
* Y" Y: x+ R9 `: p) v; {) {. A对Windows XP来说,应用程序与KMixer之间的信号通道的采样率与位深是由应用程序决定的。KMixer与codec之间的信号通道的位深是由驱动程序初始化时决定的,KMixer与codec之间的信号通道的采样率通常是由播放时的最高采样率决定。
) ?( d1 H1 {* u+ q' b% T: T6 H9 ~  S
Windows XP系统中的用户模式软件层。内核模式软件层与用户模式软件层的交汇处是用户模式与内核模式的分界线,用户模式软件层与用户的交互是通过应用程序的图形用户界面(GUI)。这一层通常位于音频流程图中的最里面。用户模式软件层显示在图9.4与9.5中心。运行中的每个应用程序都显示在自己的层,输出都在KMixer被混合。8 m: t& n' S, V  v

3 A0 A2 z3 h! h3 f! q所有用户模式信号处理对象,例如DirectShow filters或Media Foundation Transforms通常由应用程序的进程调用运行,因此他们可以看作是应用程序的其中一部分。
0 T$ L: [1 A9 T3 }6 a$ h7 q( a
0 J# U% I( q' \' y- MWindows Vista系统中的用户模式音频引擎层(The User Mode Audio Engine Layer)。新的WaveRT驱动结构允许用户模式共用引擎与音频硬件之间的直接通讯,因此信号不再流经内核模式层。换句话说,共用音频引擎感觉自己像一个用户模式的驱动程序。Windows Vista标志系统认证程序使用WaveCyclic或WavePCI驱动程序, DPC与ISR的时间限制是如此的低因此禁止在内核中进行大量的信号处理, 因此即使这些类型的驱动程序被使用,也没有机会在内核中进行处理。输出信号处理在Media Foundation Transform (MFT)中进行,Local Effects (LFX), Global Mixer, 以及Global Effects (GFX),按照这个顺序。 输入信号使用以上相反的顺序,虽然GFX仅在输出中是可用的,不适用于输入。一个分配器代替了mixer。 图9.6显示了与图9.4同样的应用方案,但它根据Windows Vista结构作过调整。 Windows Media Player在MFT中执行它的EQ and SRS处理。 然后信号不作任何处理传送至Streaming Audio renderer与WASAPI层,在这以前它是被按顺序送至LFX、the Global Mixer、及GFX。
& O* s% \- k: Y* w. P" ^% h% L- I
  O# a% a' P% D9 S* }全局mixer以及GFX各自为每个音频节点使用独立的句柄,当MFT以及LFX为每个应用程序使用独立句柄时。LFX很适合用来处理virtualizers, spreaders, and downmixers, 因为输入的声道数能够与输出声道数不相同。 全局mixer执行音量调节与混合功能,但与KMixer不同的是,它不执行任何SRC操作。GFX执行的输出流处理很大程度上貌似Windows XP中miniport driver的处理方式。" m3 _/ w$ |5 H. Z

, F: }# w. E2 O2 O) {0 M
5 Y! H9 W! c& A9 D/ \1 F; NFigure 9.6 Windows Vista Software Layer during 7.1 Playback The Application Layer in Windows Vista
; F3 O1 R' s# E- U1 l/ _# T$ y! i4 }! ^: o$ A4 T. o! p+ C2 `
通常地在流程图的最里面,Windows Vista应用程序层由应用程序单独组成,在这以前所有从MFT到硬件的单元都是由全局音频引擎控制,运行中的每个应用程序都显示在自己的层,输出都在KMixer被混合。3 l' N0 N+ h$ E% a* V: S
9 y, n: J5 S$ }
综上所述
# l1 }( `/ C4 p  M3 ^+ A# v* F0 Q: d6 q1 a图x9.7把Windows XP的所有层综合显示在一起,虽然尺寸比较小,但 你能够看到整个信号流程。本图的大尺寸版本可以从本书的相关网站获取。
% {+ r, U7 W& [4 G" c+ G6 y) o  c1 }* @

- f! o7 L& s" }* C0 H7 q( WFigure w9.7 Complete System Diagram Showing All Layers Running Windows XP
- D: k3 F9 [0 w+ |* f4 s
; e8 g* _* C+ R! @" `当构思系统音频流时,总是设法从这张完整图表着手思考。为每个应用 方案创建单独的整体流程图,并沿着信号通道检查所有点是否有信号损害。
% S  C% G, j* s3 ?  w1 x8 e7 `4 g; v& F) e. h
图w9.7展示了一个使用后面板上的共享ADC多路转换输入接口连接双声道线路输入信号,通过一个双声道ADC录音的应用。同一时间,Windows Media Player正在以96 kHz 、24 bits方式播放一个7.1的文件 (合计8个声道),输出到绿色、橙色、黑色、及灰色插孔,与此同时声音控制面板正在播放一个22kHz、16bit的单声道声音。这个流被混合到KMixer,并在7.1扬声器中的两个前方声道播放。不幸的是,Windows XP系统中没有为系统声音设置单独的音量控制,因此他们可能发出很高的音量的声音,除非他们是以低于正常电平录制的。8 l% Y7 C& Z! {( ]
- w1 ?9 c2 K- X' J5 K, g. }
在另一个分离的使用Net Meeting的实时通讯流,A与B端口与一组头戴耳机连接。软件处理语音信号代替了以前miniport驱动程序和KMixer。
' H4 ^. r% h" u& _4 a* K0 p- i5 V+ n1 e; `# P$ F4 T
这只是许多实际应用中的其中一个,你会为系统中每一个可能使用的情景创建一个相似的图表。
+ Q5 V3 Y8 S, c; r. A7 {
8 _2 `' N3 R8 S[ 本帖最后由 gzXW 于 2007-3-12 20:49 编辑 ]
作者: 酷风    时间: 2007-3-8 19:45
没有中文的吗?那么长的英文原意看完的人数基本上等于零
作者: sd-iori    时间: 2007-3-9 22:30
:wacko: ,,,," o" h0 ~9 v8 B9 W, W4 t7 _
  M0 `& B' N+ q, Q$ T
E文的简单介绍文章还可以,,
# d# \& a$ O0 L
$ C) X' x0 @4 N# A, a- L技术类的,,就,,,,,,,
作者: gzXW    时间: 2007-3-9 22:50
没办法,技术类的大部只有英文版本。长篇大论,看的人不多没人想翻译。对付着看看吧
作者: guyyjp    时间: 2007-3-11 23:36
术语好像很多,第一段就看不懂,后面这么长,没心机看了
  T. M7 o. H5 o+ A1 x7 p比较关心dolby digital live方面的,这个有讲吗,有就再看看
作者: demo1    时间: 2007-3-12 02:21
把图搞大点啊,,
作者: davicom    时间: 2007-3-12 11:52
提示: 作者被禁止或删除 内容自动屏蔽
作者: gzXW    时间: 2007-3-12 13:44
闲着翻译一下大概意思
作者: gzXW    时间: 2007-3-12 20:50
蚂蚁搬家,一块一块翻译完成
作者: sd-iori    时间: 2007-3-12 21:15
原帖由 gzXW 于 2007-3-12 20:50 发表
' Z# x9 I% f. p& e! q5 v$ g蚂蚁搬家,一块一块翻译完成

  a5 {2 r& ]7 o0 Z0 B* D4 o3 P支持搂住,,,,
" y$ ~/ }2 h/ j1 I! u' g
! K$ r5 j! l( Q, d6 K建议上精华啦
作者: apexmfg    时间: 2007-3-13 09:40
說了那麼多
' `8 ?5 L# m# ]+ p! V4 ~辛苦了,
$ ?# N( }0 V  l7 o) M到底音質如何? 比 x-fi
作者: gzXW    时间: 2007-3-13 10:32
上精华了,谢谢斑竹的认可
作者: gzXW    时间: 2007-3-13 10:38
原帖由 apexmfg 于 2007-3-13 09:40 发表
4 X1 R$ j3 Z/ K5 m: V8 B: P5 A說了那麼多7 R  Q5 t* s4 ~, w3 U" o2 d: o, l9 W' t4 @
辛苦了,
! c+ O8 A9 R4 ]9 y$ K3 a到底音質如何? 比 x-fi

7 K7 p' c/ w. u0 ]
0 p2 f! C, y, U! n9 ?- V# u5 Y) T5 ~6 x0 t
HD Audio只是一个技术标准,对音质是没有具体的指标要求,音质好坏得看厂商的定位与设计。
: f! g! g6 L' O就如同市面上的CD机一样,大家遵从同一标准,但其中音质参差不一。
作者: dudu1521    时间: 2007-3-23 08:14
E文原文呢?
作者: gzXW    时间: 2007-3-27 11:46
原帖由 dudu1521 于 2007-3-23 08:14 发表
+ n3 U$ c. r# C5 {4 uE文原文呢?
( F) L' t! J, ], Q9 @7 e3 p% C  I

/ B& W0 \4 a6 Z
8 A3 B# w4 T# c8 C覆盖掉了:huh:
作者: sd-iori    时间: 2007-4-13 23:11
看了半天,,文章不是说HDAudio的驱动
7 @- w* G" i$ w7 G; t3 c, f5 o更多是说XP和Vista的驱动,,
$ m$ L: F( @9 x+ _, N! }8 L9 ]+ ^; x, \/ g
想问一下楼主,,在Vista里面,,
/ z, b- B% S1 d  u8 L8 s声卡怎样进行SRC???
作者: gzXW    时间: 2007-4-16 12:29
原帖由 sd-iori 于 2007-4-13 23:11 发表 " }9 P) b8 `. v0 {& F0 S. ]/ v
看了半天,,文章不是说HDAudio的驱动) h/ n+ B" E# g: Q$ g% \+ \
更多是说XP和Vista的驱动,,$ s0 g. E; q" A, {* t) ]  |0 P5 [
) w. a: r: n/ Q( G* j
想问一下楼主,,在Vista里面,,
- j( E- O7 B& I- {声卡怎样进行SRC???
8 C3 a1 S; n* H! {# l( ^/ I
0 \( N: j- k* H) ?$ Y3 v
这个细节不清楚。 在LFX、GFX、声卡驱动中都可以进行SRC。
9 @* Q" M) Z* W9 M' N- J: a  D! D7 v: C9 J1 a( {% W4 {  E
m$有人许诺说vista在音频子系统之间的传输采用浮点记录运算,加上新改进的SRC单元能提高音质。有人感受到没?
作者: sd-iori    时间: 2007-4-16 17:40
原帖由 gzXW 于 2007-4-16 12:29 发表 , R2 S2 ]3 l) A2 Z# v$ I6 E- J
3 z) E! V& k( N
; A) E# B* U2 a: I1 v0 o/ b2 A
这个细节不清楚。 在LFX、GFX、声卡驱动中都可以进行SRC。. I9 O; r+ n  R4 u3 U, |" I5 X
  |+ B4 H. _+ `3 O2 b! a1 N
m$有人许诺说vista在音频子系统之间的传输采用浮点记录运算,加上新改进的SRC单元能提高音质。有人感受到没?

, E( b: h3 x! e6 m8 {$ f:sweatingbullets: 最大的感受,,就是EAX废了,,
/ W2 \8 S' P# v/ c+ [! s7 u& J  L3 {, i
还好,,现在还不打算上Vista,,,
作者: gzXW    时间: 2007-4-16 20:01
原帖由 sd-iori 于 2007-4-16 17:40 发表 : d0 \6 J1 Q$ i/ J

5 `  T' q: w0 N. s& k8 x, n. i:sweatingbullets: 最大的感受,,就是EAX废了,,
* I2 Z* n  y/ \
- ]: f- L5 ~* c! y. K' p$ @% P还好,,现在还不打算上Vista,,,

) R3 u& z! \* {- ]3 b
8 n. r4 V+ v3 r/ f  I1 ?1 I
  h% y9 R/ C' {9 w- Z没废啊,eax可以通过openal来实现加速。 如果创新大度一点,做成软件模式的GFX大家免费使用也不错:lol:   不然大家很快会忘记它的
作者: sd-iori    时间: 2007-4-16 22:29
原帖由 gzXW 于 2007-4-16 20:01 发表 8 h* h- r' B1 b  D1 O

' N/ ?4 O3 Q- G" m9 k
$ |/ Z, I4 P# N4 x9 D9 L1 f2 [% T) q+ Q5 ~9 N' |7 A) L2 S, H# A
没废啊,eax可以通过openal来实现加速。 如果创新大度一点,做成软件模式的GFX大家免费使用也不错:lol:   不然大家很快会忘记它的
! C. N4 k. f) B
:sweatingbullets: 不是说,,要XFI才能支持吗??! q/ H$ k4 j; s: k- B
其实老觉得不解,,
/ x& ^, E: \; S7 {- n  dA2也支持OpenAl啊,,,




欢迎光临 POPPUR爱换 (https://we.poppur.com/) Powered by Discuz! X3.4