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、底层结构

相关推荐
眠りたいです6 小时前
Qt音频播放器项目实践:文件过滤、元数据提取与动态歌词显示实现
c++·qt·ui·音视频·媒体·qt5·mime
FreeDw资源库13 小时前
功能强大!开源免费的视频翻译、音视频转录工具
音视频·音视频翻译
早睡身体好~2 天前
【lubancat】鲁班猫4实现开机后自动播放视频
音视频·linux开发
小幽余生不加糖2 天前
电路方案分析(二十二)适用于音频应用的25-50W反激电源方案
人工智能·笔记·学习·音视频
胡耀超2 天前
DataOceanAI Dolphin(ffmpeg音频转化教程) 多语言(中国方言)语音识别系统部署与应用指南
python·深度学习·ffmpeg·音视频·语音识别·多模态·asr
shix .2 天前
bilibili视频总结
音视频
lovep12 天前
音频-文本对比学习:LARGE-SCALE CONTRASTIVE LANGUAGE-AUDIO PRETRAINING论文翻译和理解
音视频·glap·音频理解·音频对比学习·laion-audio·音频检索
codelancera3 天前
ffmpeg-调整视频分辨率
ffmpeg·音视频
天向上3 天前
手机端的音视频界面或者图片文档界面共享给大屏
智能手机·音视频·多平台·手机投屏·多屏互动
ECC&SM94 天前
Video_AVI_Packet(1)
笔记·音视频