基于紫光展锐平台的音频调用到hal层逻辑

1、数据流程图

AudioPolicyServiceAudioFlinger的创建:

这两个服务都在audioserver中启动,文件路径:

frameworks/av/media/audioserver/main_audioserver.cpp

AudioFlingerAudioPolicyService的创建,到output的打开,以及AudioFlinger开始往底层写入数据的具体流程如下图:

audio_hifi
audio_hw
DevicesFactoryHalLocal
AudioPolicyManager
AudioFlinger
AudioPolicyService
1 instantiate
2 instantiate
3
4
5
mDevicesFactoryHal->openDevice
audio_hw_device_open
outHwDev->openOutputStream
outputStream->open
打开输出流,可以向其中写入内容
1
2
3
1
2
3
out_hifi_write
start_hifi_output_stream
adev_open
adev_open_output_stream
out_write
start_output_stream
openDevice
load_audio_interface
AudioPolicyManager构造
initialize
onNewAudioModulesAvailableInt
AudioFlinger构造
loadHwModule
openOutput
openOutput_l
findSuitableHwDev_l
threadLoop_write
AudioPolicyService构造
createAudioPolicyManager
main_audioserver
AudioHwDeice::openOutputStream
AudioStreamOut::open
pcm_open
pcm_mmap_write

上面就是整个音频调用到hal层的具体流程,其中需要注意以下几点:

  1. 当前打开的是hifi还是priamry,也就是adev_open_output_stream的时候有没有进入hifi分支,决定了后面调用out_hifi_write还是调用out_write
  2. 如果当前选择的outputhifi,则会走audio_hifi这条通路;如果outputprimary则会走audio_hw通路
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值