注意:下面提到的Android版本是4.1(JellyBean)
回复可能已经晚了。然而,对于任何对dbaustista的问题感兴趣的人,请考虑以下内容:
AEC由AudioEffect类建模。因此,需要将AEC AudioEffect对象添加到RecordThread的“效果链”中。我相信AEC的实现内置于libaudioprocessing
库中。请参见下面的附加说明。
库
/system/etc/audio_effects.conf
libraries {
...
pre_processing {
path /system/lib/soundfx/libaudiopreprocessing.so
}
}
界面
media/AudioEffect.h
示例
下面的示例向您展示如何将一个AudioEffect对象添加到PlaybackThread中。类似的逻辑也可以应用于RecordThread,即将AEC对象添加到RecordThread的效果链中。
mediaframeworktest/functional/audio/MediaAudioEffectTest.java
AudioTrack track = new AudioTrack(
AudioManager.STREAM_MUSIC,
44100,
AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT,
AudioTrack.getMinBufferSize(44100,
AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT),
AudioTrack.MODE_STREAM)
assertNotNull(msg + ": could not create AudioTrack", track)
AudioEffect effect = new AudioEffect(AudioEffect.EFFECT_TYPE_ENV_REVERB,
AudioEffect.EFFECT_TYPE_NULL,
0,
0)
track.attachAuxEffect(effect.getId())
track.setAuxEffectSendLevel(1.0f)
AEC配置选项
待办事项:添加AEC的示例配置