高通 AudioReach 框架简介

AudioReach 是高通 SoC DSP 的信号处理框架,它本身运行于 DSP。AudioReach 是高通下一代音频 SDK 的必要组成部分,并将被部署在后续的高通芯片中。在 Linux/Android 端,创建 ASoC 驱动程序对 AudioReach 框架进行配置。AudioReach 及其 ASoC 驱动程序中,利用 ASoC Topology 技术将音频处理组件拓扑结构图加载进 DSP 中,随后拓扑结构图由 AudioReach 内的 APM(Audio Processing Manager,音频处理管理器)服务管理,来 prepare/start/stop。

AudioReach 及其 ASoC 驱动程序的简化高层块图如下:

___________________________________________________________
|                 CPU (Application Processor)               |
|  +---------+          +---------+         +---------+     |
|  |  q6apm  |          |  q6apm  |         | q6afe   |     |
|  |   dais  | <------> |         | <-----> | bedais  |     |
|  +---------+          +---------+         +---------+     |
|                            ^  ^                           |
|                            |  |           +---------+     |
|  +---------+               v  +---------->|topology |     |
|  | q6prm   |          +---------+         |         |     |
|  |         |<-------->|   GPR   |         +---------+     |
|  +---------+          +---------+                         |
|                            ^                              |
|____________________________|______________________________|
                             |  
                             | RPMSG (IPC over GLINK)              
 ____________________________|______________________________
|                            |                              |
|    +-----------------------+                              |
|    |                       |                              |
|    v                       v              q6 (Audio DSP)  |
|+-----+    +----------------------------------+            |
|| PRM |    | APM (Audio Processing Manager)   |            |
|+-----+    |  . Graph Management              |            |  
|           |  . Command Handing               |            |  
|           |  . Event Management              |            |  
|           |  ...                             |            |  
|           +----------------------------------+            |  
|                            ^                              |
|____________________________|______________________________|
                             |  
                             |   LPASS AIF
 ____________________________|______________________________
|                            |            Audio I/O         |
|                            v                              |
|   +--------------------------------------------------+    |
|    |                Audio devices                     |   |
|    | CODEC | HDMI-TX | PCM  | SLIMBUS | I2S |MI2S |...|   |
|    |                                                  |   |
|    +--------------------------------------------------+   |
|___________________________________________________________|

AudioReach 具有子图、容器和模块结构。每个子图可以有 N 个容器,每个容器可以有 N 个模块,且它们之间的连接可以是线性的或非线性的。一个音频功能可以被实现为一个或多个连接的子图。模块之间还存在控制/事件路径,可以在构建图时将其连接起来,以实现模块之间的各种控制机制。子图、容器和模块的这些概念在 ASoC 拓扑中表示。

这是一个简单的 I2S 图,在单个子图 (1) 中包含一个写入共享内存和一个音量控制模块,其中包含一个容器 (1) 和 5 个模块。

____________________________________________________________
 |                        Sub-Graph [1]                       |
 |  _______________________________________________________   |
 | |                       Container [1]                   |  |
 | | [WR_SH] -> [PCM DEC] -> [PCM CONV] -> [VOL]-> [I2S-EP]|  |
 | |_______________________________________________________|  |
 |____________________________________________________________|

现在该图被分成两个子图以实现 dpcm,如下所示:

 ________________________________________________    _________________
|                Sub-Graph [1]                   |  |  Sub-Graph [2]  |
|  ____________________________________________  |  |  _____________  |
| |              Container [1]                 | |  | |Container [2]| |
| | [WR_SH] -> [PCM DEC] -> [PCM CONV] -> [VOL]| |  | |   [I2S-EP]  | |
| |____________________________________________| |  | |_____________| |
|________________________________________________|  |_________________|

                                                      _________________
                                                    |  Sub-Graph [3]  |
                                                    |  _____________  |
                                                    | |Container [3]| |
                                                    | |  [DMA-EP]   | |
                                                    | |_____________| |
                                                    |_________________|

在最新的 Linux 内核代码 (v6.6.7) 中 AudioReach 的 Linux ASoC 驱动代码 sound/soc/qcom/qdsp6。AudioReach 的 Linux ASoC 驱动仍然在不断的发展完善中,如 2023 的 patch 添加了对 compress-offload 接口的支持。

从实现上,AudioReach 的 Linux ASoC 驱动是 AudioReach 能力的代理,或者适配器,它通过核间通信机制和 DSP 上运行的 AudioReach 通信,对于 Linux 内核,它实现 ASoC 的 PCM 和 compress 接口,向用户空间提供访问音频能力必不可少设备文件等接口。

除了运行于 DSP 的 AudioReach 和它的 Linux ASoC 驱动程序,拓扑配置是整个子系统运行的另一个组成部分,Audioreach 的拓扑配置文件可以参考 Audioreach Topology

参考文档
ASoC: qcom: Add AudioReach support
ASoC: qcom: Add AudioReach support
Forums - Audio development platform with AudioReach support
ASoC: qcom: audioreach: add compress offload support

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值