[V2X]音频数据流图
Playback / Recording / Voice三种场景的音频数据流框图硬件层BP 侧 (SPF on Modem DSP)AP ↔ BP 边界AP 侧 (AudioReach)Voice 专用 (VCPM)SPF 容器 (gen_cntr)APM 音频处理管理器GPR 接收ALSA / KernelAGM 层PAL 层① Playback PCMpcm_writepcm_read② Recording PCM控制: 图配置App / TelSDKpal_stream_open/write/readStreamPCMSessionAlsaPcm / SessionAlsaVoicegraph_open/startgraph_write → gsl_write(SHMEM)pcm_write / pcm_read虚拟 FE PCMgpr-lite.cgpr_send_pkt → rpmsgaudio-pkt.c共享内存映射snd-soc-dummy-dai虚拟 DAIGPR 共享内存 Ring BufferSHMEM_ENDPOINTglink modem_apps控制命令 数据通知gpr_lx.capm_gpr_cmd_handlerCREATE/OPEN/START/STOPapm_graph_dbrt_proxy读/写共享内存模块链gain → MFC → MBDRC → IIRAudioIFLPAIF I2S 驱动VCPM 语音容器VOICE_FLUENCE_SMECNSEC NSModem BasebandAMR/EVS 编解码PRI/SEC/TERT MI2S_RX播放PRI/SEC/TERT MI2S_TX录音Codec (ES8311/AK7759)DAC / ADCSpeaker / HandsetMicNetwork三种场景对比┌─────────────────────────────────────────────────────────────────────────────┐ │ 音频数据流三种模式对比 │ ├─────────────┬──────────────────────┬──────────────────────────────────────┤ │ 场景 │ 数据是否过 AP 内存 │ 数据通道 │ ├─────────────┼──────────────────────┼──────────────────────────────────────┤ │ Playback │ ✅ 必过 │ App → pcm_write → GPR共享内存 │ │ (播放) │ │ → rt_proxy → SPF模块链 → I2S → Codec │ ├─────────────┼──────────────────────┼──────────────────────────────────────┤ │ Recording │ ✅ 必过 │ Mic → Codec → I2S → SPF模块链 │ │ (录音) │ │ → rt_proxy → GPR共享内存 → pcm_read │ ├─────────────┼──────────────────────┼──────────────────────────────────────┤ │ Voice Call │ ❌ 不过 │ Mic → Codec → I2S → LPASS/Modem │ │ (通话) │ (AP仅发配置命令) │ → 网络 (全在 Modem 域内闭环) │ └─────────────┴──────────────────────┴──────────────────────────────────────┘分层架构简图┌─────────────────────────────────────────────────────────────────┐ │ Application Layer TelSDK / 第三方 App │ ├─────────────────────────────────────────────────────────────────┤ │ PAL (策略层) StreamPCM / SessionAlsaVoice │ │ resourcemanager.xml 设备路由 │ ├─────────────────────────────────────────────────────────────────┤ │ AGM (图管理层) graph_open/write ACDB GKV/CKV │ ├─────────────────────────────────────────────────────────────────┤ │ ALSA / Kernel (AP) 虚拟 FE PCM gpr-lite audio-pkt │ ├═════════════════════════════╪═══════════════════════════════════┤ ← AP/BP 边界 │ GPR 共享内存 glink SHMEM_ENDPOINT / modem_apps │ ├═════════════════════════════╪═══════════════════════════════════┤ │ GPR (BP) gpr_lx.c 接收 │ ├─────────────────────────────────────────────────────────────────┤ │ APM (图管理) apm_gpr_cmd_handler 生命周期管理 │ ├─────────────────────────────────────────────────────────────────┤ │ SPF 容器 gen_cntr / VCPM 模块链 │ │ rt_proxy / gain / MFC / AudioIF │ ├─────────────────────────────────────────────────────────────────┤ │ AudioIF / LPAIF I2S BCLK/WS/DATA 硬件接口控制 │ ├─────────────────────────────────────────────────────────────────┤ │ Codec (外接) ES8311 / AK7759 DAC/ADC │ ├─────────────────────────────────────────────────────────────────┤ │ 物理设备 Speaker / Mic / Handset / Headset │ └─────────────────────────────────────────────────────────────────┘设备路由MI2S 接口分配┌──────────────┐ │ LPASS I2S │ └──────┬───────┘ ┌───────────────┼───────────────┐ ▼ ▼ ▼ PRI_MI2S SEC_MI2S TERT_MI2S (PRIMARY) (SECONDARY) (TERTIARY) │ │ │ ┌──────┴──────┐ ┌──────┴──────┐ ┌──────┴──────┐ │ ES8311 │ │ NAU8810 │ │ ES8311 │ │ Speaker │ │ Handset │ │ Headphone │ │ Speaker Mic │ │ Handset Mic │ │ Headset Mic │ └─────────────┘ └─────────────┘ └─────────────┘ AUXPCM ─── Bluetooth SCO 通话