-
DSP的作用
-
DSP主要是用于把pcm数据路由到外设,4个前端pcm设备可以和6个后端设备对应,每个后端DAI一般对应一个外设,前端pcm一般和hal层的user case一一对应;
一个前端pcm设备可以和多个后端设备对应,多个前端pcm数据也可以同时路由到多个后端设备;
| Front End PCMs | SoC DSP | Back End DAIs | Audio devices |
*************
PCM0 <------------> * * <----DAI0-----> Codec Headset
* *
PCM1 <------------> * * <----DAI1-----> Codec Speakers
* DSP *
PCM2 <------------> * * <----DAI2-----> MODEM
* *
PCM3 <------------> * * <----DAI3-----> BT
* *
* * <----DAI4-----> DMIC
* *
* * <----DAI5-----> FM
*************
-
- PCM数据在dsp中传输
DSP组成部分
ASM:
Audio Stream Manager流管理,可以简单理解为为FE(前端)操作的一部分,pcm数据通过q6asm发送apr包的方式和dsp互动,还包括对音频流的处理,如音效等;主要工作是音频的编解码和一部分音效;
ADM:
Audio Device Manager设备管理,包括device和路由矩阵;
-
device
做音频处理部分,主要是混音和调音,因为从ASM的输入音频是多个流的,但是输出只有一个,所以这里根据输出的channel数、采样率、位宽进行混音,合成一个和afe匹配的输出流。再就是调音,或者说是音效effect,这里各个厂商可以把自己需要的音效集成到这里;
2.routing
因为asoc使用的是dynamic pcm,既然是dynamic pcm,那么fe和be具体的连接工作就需要dsp去完成,所以dsp的driver必须告诉dsp应该怎么去连接,那么这个工作在msm8996平台上就是由be platform driver完成的,也就是msm-pcm-routing-v2.c这个文件,这个文件操作dsp的adm模块,所以adm是最终数据路由的执行者;进行路由的话,需要知道几件事,其实整个be platform driver就是围绕着三个问题展开的
①dsp接入了哪些数据
②dsp要把这些数据送到哪些端口
③每条数据需要经过什么处理算法
AFE:
可以简单理解成BE(后端)的末端操作部分,DSP设备的操作,把adm输出的数据流送给到codec,同时会进行一些音频处理