高通 AudioReach 框架簡介

AudioReach 是高通 SoC DSP 的信號(hào)處理框架,它本身運(yùn)行于 DSP。AudioReach 是高通下一代音頻 SDK 的必要組成部分,并將被部署在后續(xù)的高通芯片中。在 Linux/Android 端,創(chuàng)建 ASoC 驅(qū)動(dòng)程序?qū)?AudioReach 框架進(jìn)行配置。AudioReach 及其 ASoC 驅(qū)動(dòng)程序中,利用 ASoC Topology 技術(shù)將音頻處理組件拓?fù)浣Y(jié)構(gòu)圖加載進(jìn) DSP 中,隨后拓?fù)浣Y(jié)構(gòu)圖由 AudioReach 內(nèi)的 APM(Audio Processing Manager,音頻處理管理器)服務(wù)管理,來 prepare/start/stop。

AudioReach 及其 ASoC 驅(qū)動(dòng)程序的簡化高層塊圖如下:

___________________________________________________________
|                 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 具有子圖、容器和模塊結(jié)構(gòu)。每個(gè)子圖可以有 N 個(gè)容器,每個(gè)容器可以有 N 個(gè)模塊,且它們之間的連接可以是線性的或非線性的。一個(gè)音頻功能可以被實(shí)現(xiàn)為一個(gè)或多個(gè)連接的子圖。模塊之間還存在控制/事件路徑,可以在構(gòu)建圖時(shí)將其連接起來,以實(shí)現(xiàn)模塊之間的各種控制機(jī)制。子圖、容器和模塊的這些概念在 ASoC 拓?fù)渲斜硎尽?/p>

這是一個(gè)簡單的 I2S 圖,在單個(gè)子圖 (1) 中包含一個(gè)寫入共享內(nèi)存和一個(gè)音量控制模塊,其中包含一個(gè)容器 (1) 和 5 個(gè)模塊。

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

現(xiàn)在該圖被分成兩個(gè)子圖以實(shí)現(xiàn) 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 內(nèi)核代碼 (v6.6.7) 中 AudioReach 的 Linux ASoC 驅(qū)動(dòng)代碼 sound/soc/qcom/qdsp6。AudioReach 的 Linux ASoC 驅(qū)動(dòng)仍然在不斷的發(fā)展完善中,如 2023 的 patch 添加了對(duì) compress-offload 接口的支持。

從實(shí)現(xiàn)上,AudioReach 的 Linux ASoC 驅(qū)動(dòng)是 AudioReach 能力的代理,或者適配器,它通過核間通信機(jī)制和 DSP 上運(yùn)行的 AudioReach 通信,對(duì)于 Linux 內(nèi)核,它實(shí)現(xiàn) ASoC 的 PCM 和 compress 接口,向用戶空間提供訪問音頻能力必不可少設(shè)備文件等接口。

除了運(yùn)行于 DSP 的 AudioReach 和它的 Linux ASoC 驅(qū)動(dòng)程序,拓?fù)渑渲檬钦麄€(gè)子系統(tǒng)運(yùn)行的另一個(gè)組成部分,Audioreach 的拓?fù)渑渲梦募梢詤⒖?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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容