/* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.media.audiofx; /** * Acoustic Echo Canceler (AEC). *
Acoustic Echo Canceler (AEC) is an audio pre-processing which removes the contribution of the * signal received from the remote party from the captured audio signal. *
AEC is used by voice communication applications (voice chat, video conferencing, SIP calls) * where the presence of echo with significant delay in the signal received from the remote party * is highly disturbing. AEC is often used in conjunction with noise suppression (NS). *
An application creates an AcousticEchoCanceler object to instantiate and control an AEC * engine in the audio capture path. *
To attach the AcousticEchoCanceler to a particular {@link android.media.AudioRecord}, * specify the audio session ID of this AudioRecord when constructing the AcousticEchoCanceler. * The audio session is retrieved by calling * {@link android.media.AudioRecord#getAudioSessionId()} on the AudioRecord instance. *
On some devices, an AEC can be inserted by default in the capture path by the platform * according to the {@link android.media.MediaRecorder.AudioSource} used. The application can * query which pre-processings are currently applied to an AudioRecord instance by calling * {@link android.media.audiofx.AudioEffect#queryPreProcessings(int)} with the audio session of the * AudioRecord. *
See {@link android.media.audiofx.AudioEffect} class for more details on * controlling audio effects. * @hide */ public class AcousticEchoCanceler extends AudioEffect { private final static String TAG = "AcousticEchoCanceler"; /** * Class constructor. *
The application must catch exceptions when creating an AcousticEchoCanceler as the * constructor is not guarantied to succeed: *