sipxmedialib  Version 3.3
FilterBank.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2006-2007 SIPez LLC.
3 // Licensed to SIPfoundry under a Contributor Agreement.
4 //
5 // Copyright (C) 2004-2007 SIPfoundry Inc.
6 // Licensed by SIPfoundry under the LGPL license.
7 //
8 // Copyright (C) 2004-2006 Pingtel Corp. All rights reserved.
9 // Licensed to SIPfoundry under a Contributor Agreement.
10 //
11 // $$
13 
14 #ifndef _FilterBank_ /* [ */
15 #define _FilterBank_
16 
17 #include "mp/dsplib.h"
18 
19 #define MAX_NUM_TAPS 40
20 
22 int nrand();
23 int myrand();
24 
25 int Get1000log10(int);
26 int FFTError(int *, int *, int);
27 
28 void TestDft(); // for testing of 80 point FFT for subband structure
29 void getdft80tables();
31 void FFT8CtoC(icomplex *);
32 void FFT16RtoC(icomplex *);
33 void FFT16CtoR(icomplex *);
34 void GetDft40Tables();
35 void FFT80RtoC(icomplex *);
36 void FFT80CtoR(icomplex *);
37 void FFT40CtoC(icomplex *);
38 void FFT5CtoC(icomplex *);
39 
40 void FFT16CtoC(icomplex *); // will be used for wideband
41 void FFT80CtoC(icomplex *); // will be used for wideband
42 
44 
46 {
47 /* //////////////////////////// PUBLIC //////////////////////////////////// */
48 public:
49 
50 
52 
53 
54 
55 
56 /* ============================ CREATORS ================================== */
58 
59  FilterBank();
60  //:Constructor
61 
62 virtual
63  ~FilterBank();
64  //:Destructor
65 
66 
67 private:
68 
69  #define M 40 /* decimation ratio */
70  #define LOW_BAND 1
71  #define HIGH_BAND 39
72  #define NUM_BANDS_PROCESSED ((HIGH_BAND - LOW_BAND) + 1)
73  #define ECDL_SIZE (NUM_BANDS_PROCESSED*MAX_NUM_TAPS) // Unnecessarily large
74 
75 
77  icomplex ECDL[ECDL_SIZE]; // DEBUG!!! Determine size later.
78 
79 
80  int DoubletalkDetection(icomplex [][M+1], icomplex [][M+1], int [], int []);
82  void SubbandECLoop(icomplex [][M+1], icomplex [][M+1], int [], int [], int []);
83 
84  void FilterBankInit();
85  void FilterBankReinit();
86 
87  static void TwoFrameFilterBankAnalysis(icomplex [][M+1], int [], int [], int [], int);
88  void EchoSuppress(icomplex [][M+1], int [], int [], int [], int);
89  static void ComplexCoefUpdate(icomplex *, icomplex *, icomplex *, int);
90 
92 
93 };
94 
95 
96 #endif /* _FilterBank_ ] */
void ComputeLoudspeakerFade()
Definition: FilterBank.cpp:1947
void DoFilterBank(MpAudioSample *, MpAudioSample *)
Definition: FilterBank.cpp:515
int Get1000log10(int)
Definition: dft.cpp:598
int DoubletalkDetection(icomplex[][M+1], icomplex[][M+1], int[], int[])
Definition: FilterBank.cpp:1762
FilterBank()
Definition: FilterBank.cpp:130
virtual ~FilterBank()
Definition: FilterBank.cpp:137
void FFT8CtoC(icomplex *)
void EchoSuppress(icomplex[][M+1], int[], int[], int[], int)
Definition: FilterBank.cpp:2547
void FilterBankInit()
Definition: FilterBank.cpp:434
static void ComplexCoefUpdate(icomplex *, icomplex *, icomplex *, int)
Definition: FilterBank.cpp:2842
#define NUM_BANDS_PROCESSED
Definition: FilterBank.h:72
void FFT80CtoC(icomplex *)
Definition: dsplib.h:75
#define MAX_NUM_TAPS
Definition: FilterBank.h:19
icomplex ECDL[ECDL_SIZE]
Definition: FilterBank.h:77
void FFT5CtoC(icomplex *)
int16_t MpAudioSample
Definition: MpTypes.h:44
int FFTError(int *, int *, int)
void FilterBankReinit()
Definition: FilterBank.cpp:305
void FFT80RtoC(icomplex *)
void TestDft()
Definition: dft.cpp:93
icomplex EchoCancellerCoef[NUM_BANDS_PROCESSED][MAX_NUM_TAPS]
Definition: FilterBank.h:76
int myrand()
Definition: dft.cpp:1865
#define M
Definition: FilterBank.h:69
int nrand()
Definition: dft.cpp:1859
Definition: FilterBank.h:45
void FFT16RtoC(icomplex *)
void SubbandECLoop(icomplex[][M+1], icomplex[][M+1], int[], int[], int[])
Definition: FilterBank.cpp:2044
void FFT40CtoC(icomplex *)
#define ECDL_SIZE
Definition: FilterBank.h:73
void getdft80tables()
Definition: dft.cpp:1392
void FFT80CtoR(icomplex *)
static void TwoFrameFilterBankAnalysis(icomplex[][M+1], int[], int[], int[], int)
Definition: FilterBank.cpp:1667
void GetDft40Tables()
Definition: dft.cpp:821
void FFT16CtoC(icomplex *)
void ComplexInnerProduct(icomplex *, icomplex *, icomplex *, int)
Definition: FilterBank.cpp:2788
void FFT16CtoR(icomplex *)