1c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh/* 2c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh * Copyrightm (C) 2010 The Android Open Source Project 3c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh * 4c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh * Licensed under the Apache License, Version 2.0 (the "License"); 5c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh * you may not use this file except in compliance with the License. 6c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh * You may obtain a copy of the License at 7c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh * 8c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh * http://www.apache.org/licenses/LICENSE-2.0 9c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh * 10c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh * Unless required by applicable law or agreed to in writing, software 11c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh * distributed under the License is distributed on an "AS IS" BASIS, 12c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh * See the License for the specific language governing permissions and 14c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh * limitations under the License. 15c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh */ 16c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh 17c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh#ifndef __ECHO_SUPPRESSOR_H__ 18c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh#define __ECHO_SUPPRESSOR_H__ 19c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh 20c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh#include <stdint.h> 21c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh 22c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yehclass EchoSuppressor 23c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh{ 24c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yehpublic: 25c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh // The sampleCount must be power of 2. 262e85359f74a5280ee733d35ff5f63b3943140632Chia-chi Yeh EchoSuppressor(int sampleCount, int tailLength); 27c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh ~EchoSuppressor(); 28c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh void run(int16_t *playbacked, int16_t *recorded); 29c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh 30c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yehprivate: 312e85359f74a5280ee733d35ff5f63b3943140632Chia-chi Yeh int mShift; 32c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh int mScale; 33c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh int mSampleCount; 34c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh int mWindowSize; 35c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh int mTailLength; 36c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh int mRecordLength; 37c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh int mRecordOffset; 38c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh 392e85359f74a5280ee733d35ff5f63b3943140632Chia-chi Yeh uint16_t *mXs; 402e85359f74a5280ee733d35ff5f63b3943140632Chia-chi Yeh uint32_t *mXSums; 412e85359f74a5280ee733d35ff5f63b3943140632Chia-chi Yeh uint32_t *mX2Sums; 422e85359f74a5280ee733d35ff5f63b3943140632Chia-chi Yeh uint16_t *mXRecords; 43c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh 442e85359f74a5280ee733d35ff5f63b3943140632Chia-chi Yeh uint32_t mYSum; 452e85359f74a5280ee733d35ff5f63b3943140632Chia-chi Yeh uint32_t mY2Sum; 462e85359f74a5280ee733d35ff5f63b3943140632Chia-chi Yeh uint32_t *mYRecords; 472e85359f74a5280ee733d35ff5f63b3943140632Chia-chi Yeh uint32_t *mY2Records; 48c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh 492e85359f74a5280ee733d35ff5f63b3943140632Chia-chi Yeh uint32_t *mXYSums; 502e85359f74a5280ee733d35ff5f63b3943140632Chia-chi Yeh uint32_t *mXYRecords; 512e85359f74a5280ee733d35ff5f63b3943140632Chia-chi Yeh 522e85359f74a5280ee733d35ff5f63b3943140632Chia-chi Yeh int32_t mLastX; 532e85359f74a5280ee733d35ff5f63b3943140632Chia-chi Yeh int32_t mLastY; 542e85359f74a5280ee733d35ff5f63b3943140632Chia-chi Yeh 552e85359f74a5280ee733d35ff5f63b3943140632Chia-chi Yeh float mWeight; 56c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh}; 57c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh 58c7092775516e15983053a58b3b43ff3eb58ac46fChia-chi Yeh#endif 59