DSP

8926音频播放流程

2019-07-13 19:55发布

一、   android本身对播放流程就有一个很完善的控制,能够很好的理解AudioTrack服务的运作,对于理解和解决下行数据的处理有个很好的指导作用。 AudioRecord和AudioTrack是音频上行和下行的两大重要服务,本文主要针对下行AudioTrack服务进行流程的详细说明。AudioTrack服务启动之后会把数据传给AudioFlinger,之后会传给hal,最后会传给DSP到声卡然后播放出来。       二、具体代码流程如下:

AudioTrack::set           AudioSystem::getOutput
         
aps->getOutput
         
mpAudioPolic->get_output()
          qap -> policy.get_output=ap_get_output                                    
                  
Qap->apm->getOutput()
         
Class AudioPolicyInterface
{audio_io_handle_t getOutput()}
         
Class AudioPolicyManagerBase:public AudioPolicyInterface
         
Class AudioPolicyManagerALSA:public AudioPolicyManagerBase
         
AudioPolicyManager::getOutput
         
Class AudioPolicyClinetInterface
{openOutput()}
         
Class AudioPolicyCompatClien:public AudioPolicyClinetInterface
         
AudioPolicyCompatClien::openOutput()
         
mServiceOps->open_output_on_module()
         
Open_output : aps_open_output
(AudioPolicyService.cpp)
         
Af->openOutput()
         
AduioFlinger::openOutput
         
hwDevHal->open_output_stream
         
Qadev->device.open_output_stream
=adev_open_output_stream
         
qadev->hwif->openOutputStream
         
AudioHardwareALSA::openOutputStream