Android Audio实战——混音重采样空数据(九)

        在 Android 11 的项目中,多媒体与语音混音时,出现了有异响的情况。从 dump 看是由于语音数据出现卡顿,并且结合 Log 内容可以看到出现此问题是由于在重采样时,获取缓冲区数据出现 underrun,造成重采样出现空数据。所以接下来需要分析混音流程中重采样产生 underrun 的原因。

一、混音重采样流程

        对于混音流程我们从 MixerThread::prepareTracks_l() 开始看,该函数主要用于准备和配置音频轨道(tracks),以便它们可以被混音器(mixer)处理。

1、Threads.cpp

源码位置:/frameworks/av/services/audioflinger/Threads.cpp

AudioFlinger::PlaybackThread::mixer_state AudioFlinger::MixerThread::prepareTracks_l(
        Vector< sp > *tracksToRemove)
{
    ……
    for (size_t i=0 ; iframe

你可能感兴趣的:(Android,Audio,android,Audio开发)