提醒一下,纯个人笔记,你完全可能看晕
六、HAL层
6-1、Audio HAL层,其实包括了audio.xxx.so 和 audiopolicy.so等。从前述的总框架图,也有写,代码库路径也有写。
具体运行时so对象图,对于audio.xxx.so部分,参考“Android系统Audio框架介绍”最后一张图。如下:
Paste_Image.png
6-2、对audio.primary.so库,对于Audio HAL框架的实现分析
Audio HAL层架构定义: hardware\libhardware\include\hardware\audio.h
厂商实现:以Anroid4.1.1版为例,audio.primary.grouper.so库为例, 代码位置device\asus\grouper\audio\audio_hw.c
//Audio HAL层架构中audio_module 的定义,继承hw_module_t,其实没有任何扩展
struct audio_module {
struct hw_module_t common;
};
// 厂商audio_module 的实现,关键是open函数赋值,其作用是打开该设备,返回audio_hw_device 结构体对象,但在这份实现中,返回是audio_device对象,即audio_hw_device子类
struct audio_module HAL_MODULE_INFO_SYM = {
.common = {
.tag = HARDWARE_MODULE_TAG,
.module_api_version = AUDIO_MODULE_API_VERSION_0_1,
.hal_api_version = HARDWARE_HAL_API_VERSION,
.id = AUDIO_HARDWARE_MODULE_ID,
.name = "Grouper audio HW HAL",
.author = "The Android Open Source Project",
.methods