注:以下で参照されているAndroidのバージョンは4.1(JellyBean)です。
応答が遅すぎる可能性があります。ただし、dbaustistaの質問への回答に関心がある場合は、次のことを検討してください。
AECはAudioEffectクラスによってモデル化されています。したがって、AECAudioEffectオブジェクトを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構成オプション
TODO:AECの構成例を追加