注意:下面引用的 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 的效果链。
媒体框架测试/功能/音频/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 配置选项
TODO:添加 AEC 的示例配置