/usr/include/ptclib/paec.h is in libpt-dev 2.10.11~dfsg-2.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | /*
* paec.h
*
* Open Phone Abstraction Library (OPAL)
* Formally known as the Open H323 project.
*
* Copyright (c) 2004 Post Increment
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.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.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Open Phone Abstraction Library.
*
* The author of this code is Damien Sandras
*
* rewritten amd made generic ptlib by Simon Horne
*
* Contributor(s): Miguel Rodriguez Perez
*
* $Revision: 21788 $
* $Author: rjongbloed $
* $Date: 2008-12-11 23:42:13 -0600 (Thu, 11 Dec 2008) $
*/
#ifndef PTLIB_PAEC_H
#define PTLIB_PAEC_H
#ifdef P_USE_PRAGMA
#pragma interface
#endif
#include <ptclib/qchannel.h>
/** This class implements Acoustic Echo Cancellation
* The principal is to copy to a buffer incoming audio.
* after it has been decoded and when recording the audio
* to remove the echo pattern from the incoming audio
* prior to sending to the enooder..
*/
PQUEUE(ReceiveTimeQueue, PTimeInterval);
struct SpeexEchoState;
struct SpeexPreprocessState;
class PAec : public PObject
{
PCLASSINFO(PAec, PObject);
public:
/**@name Construction */
//@{
/**Create a new canceler.
*/
PAec(int _clock = 8000, int _sampletime = 30);
~PAec();
//@}
/**@@name Basic operations */
//@{
/**Recording Channel. Should be called prior to encoding audio
*/
void Send(BYTE * buffer, unsigned & length);
/**Playing Channel Should be called after decoding and prior to playing.
*/
void Receive(BYTE * buffer, unsigned & length);
//@}
protected:
PMutex readwritemute;
PQueueChannel *echo_chan;
SpeexEchoState *echoState;
SpeexPreprocessState *preprocessState;
int clockrate; // Frame Rate default 8000hz for narrowband audio
int bufferTime; // Time between receiving and Transmitting
PInt64 minbuffer; // minbuffer (in milliseconds)
PInt64 maxbuffer; // maxbuffer (in milliseconds)
int sampleTime; // Length of each sample
ReceiveTimeQueue rectime; // Queue of timestamps for ensure read/write in sync
PTimeInterval lastTimeStamp; // LastTimeStamp of recieved data
PBoolean receiveReady;
void *ref_buf;
void *echo_buf;
void *e_buf;
void *noise;
};
#endif // PTLIB_PAEC_H
// End Of File ///////////////////////////////////////////////////////////////
|