Home | History | Annotate | Download | only in aec
      1 /*
      2  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 #ifndef WEBRTC_MODULES_AUDIO_PROCESSING_AEC_ECHO_CANCELLATION_INTERNAL_H_
     12 #define WEBRTC_MODULES_AUDIO_PROCESSING_AEC_ECHO_CANCELLATION_INTERNAL_H_
     13 
     14 #include "webrtc/modules/audio_processing/aec/aec_core.h"
     15 #include "webrtc/modules/audio_processing/utility/ring_buffer.h"
     16 
     17 typedef struct {
     18   int delayCtr;
     19   int sampFreq;
     20   int splitSampFreq;
     21   int scSampFreq;
     22   float sampFactor;  // scSampRate / sampFreq
     23   short skewMode;
     24   int bufSizeStart;
     25   int knownDelay;
     26   int rate_factor;
     27 
     28   short initFlag;  // indicates if AEC has been initialized
     29 
     30   // Variables used for averaging far end buffer size
     31   short counter;
     32   int sum;
     33   short firstVal;
     34   short checkBufSizeCtr;
     35 
     36   // Variables used for delay shifts
     37   short msInSndCardBuf;
     38   short filtDelay;  // Filtered delay estimate.
     39   int timeForDelayChange;
     40   int startup_phase;
     41   int checkBuffSize;
     42   short lastDelayDiff;
     43 
     44 #ifdef WEBRTC_AEC_DEBUG_DUMP
     45   FILE* bufFile;
     46   FILE* delayFile;
     47   FILE* skewFile;
     48 #endif
     49 
     50   // Structures
     51   void* resampler;
     52 
     53   int skewFrCtr;
     54   int resample;  // if the skew is small enough we don't resample
     55   int highSkewCtr;
     56   float skew;
     57 
     58   RingBuffer* far_pre_buf;  // Time domain far-end pre-buffer.
     59 
     60   int lastError;
     61 
     62   int farend_started;
     63 
     64   AecCore* aec;
     65 } aecpc_t;
     66 
     67 #endif  // WEBRTC_MODULES_AUDIO_PROCESSING_AEC_ECHO_CANCELLATION_INTERNAL_H_
     68