PulseAudio 是深度系统的音频管理框架,是应用程序音频能力的代理。当音频数据在应用程序和硬件之间传递时,它会对数据执行高级处理操作。只有通过PulseAudio声卡配置文件将声卡信息正确映射到PulseAudio,系统才能正确使用声卡。后面会用 PA 缩写来表示 PulseAudio。本文将介绍以下两个目录和一个文件,因为这些都与PA中声卡的配置密切相关。

两个目录:

$ ls /usr/share/pulseaudio/alsa-mixer/profile-sets/

图像.png

$ ls /usr/share/pulseaudio/alsa-mixer/paths/

图像.png

一份文件:

/lib/udev/rules.d/90-pulseaudio.rules

目录: /usr/share/pulseaudio/alsa-mixer/profile-sets/ 在这个目录下,配置文件指定如何打开音频设备和要使用的混音器路径。 Default.conf 是核心文件,是 PA 的 ALSA 后端的默认配置文件定义。此文件用于所有非 Fallback 的特殊映射声卡(适用于大多数声卡)。

如果需要给设备分配不同于这个default.conf配置文件的配置,需要专门为设备设置udev属性PULSE_PROFILE_SET,或者使用“profile_set”参数指定新添加的加载 PA 的 module-alsa-card 模块文档时的配置文件配置。

那么这个新添加的配置文件集中有什么?简而言之,在这个文件中所做的是映射 ALSA 设备在 PA 中的暴露方式。

具体来说,使用哪个ALSA设备字符串打开设备,使用哪个通道映射,使用哪个mixer路径,这个叫做“映射”,很多映射可以在profile中绑定在一起,然后直接显示在用户界面作为声卡信息。

如果声卡选择了配置文件,并将映射分配给配置文件,则将创建接收器或源。

如下图,映射名称为analog-stereo,ALSA设备字符串device-strings为front:%f,通道映射为left,right,mixer路径为paths-output和paths-input。这两条路径将导致 PA 创建一个接收器或源(即音频输出端口或输入端口)。

图像.png

2.目录 /usr/share/pulseaudio/alsa-mixer/paths/

该目录下存放的文件就是上一节提到的混音器路径。这些路径对应于配置文件集中映射的路径输出和路径输入所指向的内容。

例如,对于一个映射的paths-output项中的analog-output-lineout,对应的mixer路径文件为analog-output-lineout.conf,其描述的关键字description-key为analog-output-lineout。如下所示:

图像.png

PA 的工作原理是从上到下遍历该目录中的混音器路径,并检查其中的混音器元素描述的内容是否存在,如果存在,则将其添加到 PA 控制的混音器元素中,并保持其读取顺序。作为音频设备的所有有效路径都将表示为接收器或源,通常称为端口。

3.声卡配置文件示例

profile集中提到的default.conf,对于大部分声卡来说,这个profile可以满足适配,但是有些声卡需要特殊配置,需要使用新添加的profile文件,假设新的配置文件命名为special-snd-card.conf,当然可以添加新的mixer路径,那么如何保证声卡可以关联到新添加的profile和mixer路径呢?以下步骤可以帮助完成这项工作:

1)配置/lib/udev/rules.d/90-pulseaudio.rules文件

  1. 添加配置文件

将 special-snd-card.conf 文件复制到 profile-sets 目录。

$ cp special-snd-card.conf /usr/share/pulseaudio/alsa-mixer/profile-sets

图像.png

3)添加混音器路径

在paths目录下添加special-snd-card.conf文件对应的路径配置文件。

$ vim /usr/share/pulseaudio/alsa-mixer/paths/special-snd-card.conf

图像.png

4.声卡配置文件调用逻辑

以上简单介绍了声卡配置的两个目录和一个文件。接下来,我们需要将这些文件用示意图连接起来,连接它们的关系。下图中有三个红色文字,分别对应这里的两个目录和一个文件。

trigger 90-pulseaudio.rule: 会为 PULSE_PROFILE_SET 赋值,假设是前面描述的 special-snd-card.conf。加载配置文件:加载 special-snd-card.conf。加载混合器路径:加载special-snd-card.conf文件中的相关路径。

图像.png

通过上面的示意图,我们可以对PA声卡配置文件有一个初步的了解,有助于我们平时工作中分析和处理音频问题。将来,我们将更新配置文件和混音器路径配置文件的内部详细信息。深入分析,特别是profile中映射的device-strings关键字与声卡的映射关系,以及各个mixer路径的各个元素的含义等,敬请期待!

欢迎使用深度操作系统!

Logo

更多推荐