1 协议,其他章节会详细介绍。
第2章 Linux 音频框架
音频系统存在一个问题,这不仅仅是偶尔无法工作而已。真正的问题在于它过于繁杂
了。
如果你坐下来在一张纸上试着画出那些在从一个音乐文件中读取音频信息,再从你的扬声
器中播放出来这一过程中所用到的技术之间的关系的话,你就会很清楚地看到它就像打结
的意大利面一样乱了。
这个问题的原因在于音频处理从本质上就要比其他的技术更复杂。声音从某个地方输入你
的 电脑,又从另一个地方输出。如果我们画出一个用来描述将你的电脑和网络上其他
的电脑连接起来的网络架构的 -B 模型,我们看到的是分明的层次,每一层都有它自己的
进程作用域和功能。
层与层之间很少有重合,因此你绝对不会碰到在第 层的最终用户进程和在第 层的原始
比特流的电子脉冲相混淆的情况。
然而这种情况恰恰在 音频架构中存在。这个架构中甚至没有一个明确定义的最底层,
各种音频技术在内核和你的硬件里各自为政。
和网络模型相比, 的音频结构更像是地壳,较低的层偶尔会爆发到表面,引发混乱痛
苦,而较高的表面发生移动,取代原本是隐藏的根本技术。
比如 -7 #" 协议原本应该在内核层直接和你的硬件对话,但现在成了一个建立在
上的复杂层。 本身有一个内核层的堆栈和一个给程序员使用的更高级的 B,用
以将驱动程序和硬件属性配合起来播放环绕立体声或者处理 ; 编码。
当大部分发行版把 "# 和 $%& !' & 置于顶层时,你最终就得到了一个会发生像 !
"& ! 错误这样的潜在破坏的不稳定的混乱系统。
2.1.ALSA
输入< "#I(!)*I$%& !' &I. I,IJ,
输出<1!&"C!& I-