aosp15的audio hal的相关库情况介绍

0 阅读3分钟

原文地址:aosp15的audio hal的相关库情况介绍

背景:

本节重点来讲解一下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都是比较容易找到 在这里插入图片描述

更多framework干货,请关注下面的“千里马学框架"