一、AudioHAL介绍
AudioHAL的上层为AudioFlinger,AudioHAL下层为TiniAlsa(Android下一个简约的Alsa版本)。
AudioHAL分为两部分:
一部分为各种音频设备,每种音频设备由一个独立的库文件实现:如audio.a2dp.default.so(管理蓝牙a2dp音频),audio.usb.default.so(管理usb外接的音频),audio.primary.default.so(管理设备上的大部分音频)。
另一部分为厂家自己实现的音频策略,Android下提供了默认一套音频策略,当厂家有特殊的音频策略时,可以在这部分修改实现。
AudioHAL的核心文件是audio_hw.c,AudioHAL内部采样各种结构体管理AudioStream,如下为高通AudioHAL的结构体图:
二、AudioHAL相关接口
IDevice.hal
IDevicesFactory.hal
IPrimaryDevice
IStream
IStreamIn
IStreamOut
IStreamOutCallback
IStreamOutEventCallback
IStreamOutLatencyModeCallback