AudioDeviceModule(ADM)是 WebRTC 对物理音频设备的抽象层。它把"麦克风采集、扬声器播放、3.5mm/USB/蓝牙设备切换、AGC、MIC 静音"等细节封装到一组接口后,让上层在 Windows/Linux/macOS/iOS/Android 之间可以无差异使用。理解 ADM 是写好"跨平台音频 + 3A 链路"的基础,也是排查"杂音、延迟、蓝牙不工作、设备热插拔"等问题的入口。
1. ADM 接口体系、平台实现与内部流程
接口总览
ADM 主要接口位于modules/audio_device/include/:
| 接口 | 职责 |
|---|---|
AudioDeviceModule | 主接口,单例,控制采集/播放生命周期 |
AudioDeviceGeneric | 平台无关子模块基类,各平台继承实现 |
AudioDeviceBuffer | 与 3A/APM 的共享缓冲区,采集/播放双端共用 |
AudioTransport | 采集回调Recorded |