背景:
本节重点来讲解一下aosp15上面模拟器设备上audio相关hal库的情况,主要针对so的编译情况及对应源码目录情况进行详细介绍。
audio相关hal库介绍
hal对应的守护进程
模拟器上audio的hal其实有一个守护进程,这个守护进程就是hidl的服务端,因为audio目前还是使用hidl进行通讯,客户端一般是AudioFlinger。
emulator_x86_64:/vendor/lib64/hw # ps -A | grep audio
audioserver 294 1 47440 6180 binder_ioctl_write_read 0 S android.hardware.audio.service
这个android.hardware.audio.service进程对应的代码位置如下:
hardware/interfaces/audio/common/all-versions/default/service/Android.bp
核心代码主要就是这个service.cpp,当然还有肯定包含了很多的接口实现,不过一般这些实现都会有对应的so文件
hardware/interfaces/audio/common/all-versions/default/service/service.cpp

audio hal相关实现的so库情况,注意这些so运行一般都是在android.hardware.audio.service这个守护进程中
emulator_x86_64:/vendor/lib64/hw # ls | grep audio
android.hardware.audio.effect@7.0-impl.so --aosp默认实现effect相关的库
android.hardware.audio.legacy@7.1-impl.ranchu.so
--厂商实现的相关音频核心业务库不过这里是legacy即过期维护的,其实这个本质也是aosp原生的实现,具体文章稍后介绍
android.hardware.audio@7.1-impl.ranchu.so --厂商实现的相关音频核心业务库
audio.bluetooth.default.so --aosp默认实现bluetooth相关的库
audio.primary.default.so --aosp默认实现primary相关的库
audio.r_submix.default.so --aosp默认实现r_submix相关的库
audio相关的核心库主要分为2部分,一类一般带有“default”字符和没有带具体厂商设备名字“ranchu”,这些so代表aosp默认自带实现的,如果有厂商实现的so一般都是先用厂商的so。
default对应so的源码位置:
android.hardware.audio.effect@7.0-impl.so库对应的源码和bp文件
hardware/interfaces/audio/effect/all-versions/default/ —源码目录
hardware/interfaces/audio/effect/all-versions/default/Android.bp —对应的bp

android.hardware.audio.legacy@7.1-impl.ranchu.so 库对应的源码和bp文件
这个库相对比较特殊因为它带着厂商设备名字“ranchu”,所以自然寻找bp时候要去厂商相关的目录寻找
device/generic/goldfish/audio/Android.bp --对应的目标的bp文件

这里可以看到确实在厂商设备目标的Android.bp中有编译这样的so目标,但是它编译的依赖是:
android.hardware.audio@7.1-impl_default,这个default并没有在厂商设备目录下的bp中出现过,最后寻找发现居然是在默认hal的目录寻找到了:
hardware/interfaces/audio/core/all-versions/default/Android.bp

这个对应的源码就是如下:


android.hardware.audio@7.1-impl.ranchu.so 库对应的源码和bp文件
这个库就是纯正的厂商提供的hal库,相关源码都在厂商目录
device/generic/goldfish/audio/Android.bp -对应bp文件
对应的代码路径:device/generic/goldfish/audio/

其他几个都是default的so
audio.bluetooth.default.so --aosp默认实现bluetooth相关的库
bluetooth稍微特殊一点,因为源码不在hardware目录
代码路径:
packages/modules/Bluetooth/system/audio_bluetooth_hw/
bp路径
packages/modules/Bluetooth/system/audio_bluetooth_hw/Android.bp
audio.primary.default.so --aosp默认实现primary相关的库
代码路径:
hardware/libhardware/modules/audio/
bp路径
hardware/libhardware/modules/audio/Android.bp
audio.r_submix.default.so --aosp默认实现r_submix相关的库
代码路径:
hardware/libhardware/modules/audio_remote_submix/
bp路径
hardware/libhardware/modules/audio_remote_submix/Android.bp
aosp15版本hal的so和代码路径:
最重要的就是厂商实现的,其他default都是比较容易找到

1292

被折叠的 条评论
为什么被折叠?



