Audio 是整个 Android 平台非常重要的一个组成部分,负责音频数据的采集和输出、音频流的控制、音频设备的管理、音量调节等。
1. Audio整体架构
Application Framework
音频应用,Java实现,通过JNI与下层音频相关的原生框架进行交互,包含音频播放和音频录制。
JNI
Java实现的应用通过JNI来访问下层C++实现的原生框架。
Native Framework
提供与应用框架对应的原生实现,并且通过Binder IPC访问下层媒体服务器中特定的音频服务。
Binder IPC Proxies
提供跨进程边界的通信。
Media Server
提供音频处理相关的服务,如音频服务、音频策略、混音等,与下层HAL进行交互。
HAL
提供硬件抽象的接口,供媒体服务层的音频服务进行调用。
Linux kernel
音频的驱动与上层HAL和下层硬件进行交互,包括ALSA、OSS或者自定义的驱动。
2. Audio和MultiMedia混合架构
AudioTrack,负责音频数据的输出
AudioRecord,负责音频数据的采集
AudioSystem,负责音频事务的综合管理
AudioPolicy,音频策略的制定者,负责音频设备切换的策略选择、音量调节策略等
AudioFlinger,音频策略的执行者,负责输入输出流设备的管理、音频流数据的处理和传输
MultiMedia负责音视频的编解码,将解码后的数据通过AudioTrack输出,AudioRecord采集的数据由MultiMedia进行编码。
3. Audio详细架构
4. Audio文件视图
By HW ZCX





































苏公安网备 32011402010933号