上一篇文章我们修改了在 Android 11 中适配 7.1.4 声道的相关常量定义及部分代码,这里我们来看一下另外两个部分重要逻辑的修改及优化。
在音频处理过程中,经常需要将不同采样率的音频统一到相同的采样率,以便进行进一步处理。而在 AudioMixer 中,很可能会使用 AudioResampler 来统一不同音频流的采样率。
- AudioMixer 主要负责混合多个音频流,调整音量,处理声道等。同时需要处理来自不同采样率的音频流。
- AudioResampler 专门负责采样率转换,例如,将 44.1 kHz 的音频转换为 48 kHz 的音频。
一、音频混合器
AudioMixerOps 定义了一组音频混音器的操作接口。而 AudioMixerBase 混音器实现类继承自 AudioMixerOps 实现了对应接口,它提供了基本的音频混音器功能,并且可以被进一步继承和扩展。这里主要参考 Android 12 的源码对其进行修改并优化。
1、AudioMixerOps.h
源码位置:/frameworks/av/media/libaudioprocessing/AudioMixerOps.h