Android音频框架总结

1、AudioFlinger:接收多个APP的数据,合并下发;是策略的执行者,例如具体如何与音频设备通信,如何维护现有系统中的音频设备,以及多个音频流的混音如何处理等等都得由它来完 成。

AudioFlinger主要包含3个主要的子模块:AudioHwDevice、PlaybackThread/RecordThread、PlaybackTrack/RecordTrack。(这里暂时不提音效子模块)

AudioHwDevice是一种抽象,并不是指扬声器、听筒、耳机这种真实的物理设备,而是指不同的Audio HAL module,比如primary module、a2dp module等,也可以理解成是音频框架层定义的一种虚拟设备。它与Audio HAL层的DeviceHal是对应的关系。

PlaybackThread/RecordThread是由AudioFlinger启动的负责音频数据传输的线程,播放和录制的核心流程都在这里面实现。它与Audio HAL层的StreamHal是对应的关系。

PlaybackTrack/RecordTrack对应的是API层的AudioTrack/RecordTrack,它相当于是服务端。

2、AudioPolicyService:决定选择哪个设备输出,接上耳机用耳机,接上蓝牙设备用蓝牙;是策略的制定者,比如什么时候打开音频接口设备、某种Stream类型的音频对应什么设备等等。

APS包含3个核心的子模块:AudioPolicyService、AudioPolicyManager和Engine。

Engine负责存储设备路由策略和音量大小配置;

AudioPolicyManager负责设备路由和音量控制的具体实现;

AudioPolicyService负责对外提供Binder接口和其它模块进行交互;

3、AudioTrack:一个代理,APP 通过AudioTrack(binder通信,分Java层和C++层) 来访问AudioFlinger。

4、底层结构

相关推荐
REDcker9 天前
WebCodecs VideoDecoder 的 hardwareAcceleration 使用
前端·音视频·实时音视频·直播·webcodecs·videodecoder
gihigo19989 天前
基于TCP协议实现视频采集与通信
网络协议·tcp/ip·音视频
山河君9 天前
四麦克风声源定位实战:基于 GCC-PHAT + 最小二乘法实现 DOA
算法·音视频·语音识别·信号处理·最小二乘法·tdoa
音视频牛哥10 天前
Android平台RTMP/RTSP超低延迟直播播放器开发详解——基于SmartMediaKit深度实践
android·人工智能·计算机视觉·音视频·rtmp播放器·安卓rtmp播放器·rtmp直播播放器
qq_4162764210 天前
通用音频表征的对比学习
学习·音视频
美狐美颜sdk10 天前
Android全局美颜sdk实现方案详解
人工智能·音视频·美颜sdk·视频美颜sdk·美狐美颜sdk
EasyDSS10 天前
私有化部署EasyDSS视频点播能力:全链路视频技术赋能,打造企业级视听新体验
音视频·hls·m3u8·点播技术·智能转码
qq_4162764210 天前
DeLoRes——一种通用的音频表征学习新方法(DeLoRes(基于 Barlow Twins 的冗余最小化方法)
学习·音视频
Q_45828386810 天前
从定位到视频:808 + 1078 在各行业的落地实践
音视频
山顶望月川10 天前
实测MiniMax-Hailuo-02:当“开工大吉“变成“无字天书“,国产AI视频模型的能与之不能
人工智能·音视频