音频系统驱动
Audio系统结构
重点了解内容:
- AudioFlinger
- AudioPolicy
- AudioTrack
以上三个最好使用Demo形式明确其数据流流动形式。
总通信方式大致如下:
Android音频系统的核心
是Audio系统
- Audio Java Part
与Audio相关的包是android.media
- Audio JNI Part
生成libandroid_runtime.so
- Audio 框架
Media库中的一部分,直接被编译成libmedia.so文件,提供了Audio部分接口。包括基于Binder的IPC机制
- Audio Flinger
被编译成 libaudioflinger.so,Audio的本地服务部分
- Audio硬件抽象层接口
作为Audio系统本地框架层和驱动程序接口
Audio系统层次
- Audio本地框架类
libmedia.so文件其中一part,为上层提供接口,由下层去实现
- AudioFlinger
继承libmedia接口,提供实现库libaudioflinger.so
- JNI
使用JNI和Java对上层提供接口,JNI通过libmedia库中接口进行实现
- Audio硬件抽象层
提供硬件接口,供AudioFlinger进行调用。
注:
Audio系统不涉及编解码环节,只负责软硬件间交互的作用,所以通常以PCM进行数据传输。