mixer_paths.xml 作用音频通路配置
在qcom平台上, DSP 连接着 FE, 和 BE;
其中 FE对应着一个 PCM设备,可以看做是一个usecase;
其中 BE对应着一个DAI, DAI连接着具体的audio device;
FE最终所对应audio device有很多个可选,具体的对应关系 需要通过配置 音频通路来配置;
简单理解:连接usecase 和 device 并打开该通路上的控件;
同时mixer_paths.xml 还提供mixer 各个控件的初始化配置;mixer ctrl 初始化audio route
mixer_pahts.xml 中根据usecase设置ctl控件,以deep-buffer-playback 为例:
<path name="deep-buffer-playback speaker">
<ctl name="QUAT_MI2S_RX Audio Mixer MultiMedia1" value="1" />
</path>
<path name="deep-buffer-playback headphones">
<ctl name="TERT_MI2S_RX Audio Mixer MultiMedia1" value="1" />
</path>
<path name="deep-buffer-playback earphones">
<ctl name="QUAT_MI2S_RX Audio Mixer MultiMedia1" value="1" />
</path>
这些通路其实就是连接 usecase、device 之间的路由。比如 “deep-buffer-playback speaker” 是连接 deep-buffer-playback FE PCM、speaker Device 之间的路由,打开 “deep-buffer-playback speaker”,则把 deep-buffer-playback FE PCM 和 speaker Device 连接起来;关闭 “deep-buffer-playback speaker”,则断开 deep-buffer-playback FE PCM 和 speaker Device 的连接。
路由控件名称一般是: $BE_DAI Audio Mixer
F
E
P
C
M
,录制类型的路由控件名称一般是:
FE_PCM,录制类型的路由控件名称一般是:
FEPCM,录制类型的路由控件名称一般是:FE_PCM Audio Mixer $BE_DAI,这很容易分辨。deep-buffer-playback 连接 speaker
例如 “deep-buffer-playback speaker” 通路中的路由控件:
<ctl name="QUAT_MI2S_RX Audio Mixer MultiMedia1" value="1" />
MultiMedia1:deep_buffer usacase 对应的 FE PCM
QUAT_MI2S_RX:speaker device 所连接的 BE DAI
Audio Mixer:表示 DSP 路由功能
value:1 表示连接,0 表示断开连接
为了使得声音从 speaker 端点输出,需要打开 AIF1、DAC1、SPKOUT 这些部件,并把它们串联起来,这样音频数据才能顺着这条路径(AIF1>DAC1>SPKOUT>SPEAKER)一路输出到 speaker。
mixer_pahts.xml 中看 speaker 通路的通路配置:
<path name="speaker">
<ctl name="SPKL DAC1 Switch" value="1" />
<ctl name="DAC1L AIF1RX1 Switch" value="1" />
<ctl name="DAC1R AIF1RX2 Switch" value="1" />
</path>