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