00001 /* 00002 * paec.h 00003 * 00004 * Open Phone Abstraction Library (OPAL) 00005 * Formally known as the Open H323 project. 00006 * 00007 * Copyright (c) 2004 Post Increment 00008 * 00009 * The contents of this file are subject to the Mozilla Public License 00010 * Version 1.0 (the "License"); you may not use this file except in 00011 * compliance with the License. You may obtain a copy of the License at 00012 * http://www.mozilla.org/MPL/ 00013 * 00014 * Software distributed under the License is distributed on an "AS IS" 00015 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 00016 * the License for the specific language governing rights and limitations 00017 * under the License. 00018 * 00019 * The Original Code is Open Phone Abstraction Library. 00020 * 00021 * The author of this code is Damien Sandras 00022 * 00023 * rewritten amd made generic ptlib by Simon Horne 00024 * 00025 * Contributor(s): Miguel Rodriguez Perez 00026 * 00027 * $Log: paec.h,v $ 00028 * Revision 1.2 2006/02/26 09:27:49 shorne 00029 * Renamed AEC class name, moved to seperate library 00030 * 00031 * Revision 1.1 2006/01/26 08:05:03 shorne 00032 * Added AEC support 00033 * 00034 */ 00035 00036 #ifndef __OPAL_ECHOCANCEL_H 00037 #define __OPAL_ECHOCANCEL_H 00038 00039 #ifdef P_USE_PRAGMA 00040 #pragma interface 00041 #endif 00042 00043 #include <ptclib/qchannel.h> 00044 00053 struct SpeexEchoState; 00054 struct SpeexPreprocessState; 00055 class PAec : public PObject 00056 { 00057 PCLASSINFO(PAec, PObject); 00058 public: 00059 00064 PAec(); 00065 ~PAec(); 00067 00072 void Send(BYTE * buffer, unsigned & length); 00073 00076 void Receive(BYTE * buffer, unsigned & length); 00078 00079 protected: 00080 00081 PQueueChannel *echo_chan; 00082 SpeexEchoState *echoState; 00083 SpeexPreprocessState *preprocessState; 00084 short *ref_buf; 00085 short *echo_buf; 00086 short *e_buf; 00087 float *noise; 00088 00089 }; 00090 00091 #endif // __OPAL_ECHOCANCEL_H 00092