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都是比较容易找到
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值