bool AudioMixer::isMultichannelCapable = false;//是否支持大于两路的音频
//downmix effect,用于处理大于两路音频的特效,主要是做向下变换
effect_descriptor_t AudioMixer::dwnmFxDesc;
// Ensure mConfiguredNames bitmask is initialized properly on all architectures.
// The value of 1 << x is undefined in C when x >= 32.
// 1、初始化state_t对象mState,最多保存32个track,对应thread中的track对象
// 2、加载支持的effect lib和effect
// 3、通过类型EFFECT_UIID_DOWNMIX寻找处理多路音频特效的downmix effect对象
AudioMixer::AudioMixer(size_t frameCount, uint32_t sampleRate, uint32_t maxNumTracks)
: mTrackNames(0), mConfiguredNames((maxNumTracks >= 32 ? 0 : 1 << maxNumTracks) - 1),
mSampleRate(sampleRate)
{
// AudioMixer is not yet capable of multi-channel beyond stereo
COMPILE_TIME_ASSERT_FUNCTION_SCOPE(2 == MAX_NUM_CHANNELS);
ALOG_ASSERT(maxNumTracks <= MAX_NUM_TRACKS, "maxNumTracks %u > MAX_NUM_TRACKS %u",
maxNumTra
Audio笔记之AudioMixer
最新推荐文章于 2024-07-24 18:06:11 发布
AudioMixer类主要用于处理音频混音,特别是针对立体声的处理。它不支持超过两路的音频,但在代码中寻找并尝试使用downmix effect来处理多路音频。在初始化时,它会加载所有效果库并查找类型为EFFECT_UIID_DOWNMIX的特效,以支持多通道内容。当找到downmix effect时,AudioMixer标记为能处理多通道音频。此外,getTrackName函数用于根据sessionId获取或分配一个新的track,而deleteTrackName则用于释放已分配的track。
摘要由CSDN通过智能技术生成