• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_VOICE_ENGINE_VOE_AUDIO_PROCESSING_IMPL_H
12 #define WEBRTC_VOICE_ENGINE_VOE_AUDIO_PROCESSING_IMPL_H
13 
14 #include "webrtc/voice_engine/include/voe_audio_processing.h"
15 
16 #include "webrtc/voice_engine/shared_data.h"
17 
18 namespace webrtc {
19 
20 class VoEAudioProcessingImpl : public VoEAudioProcessing {
21  public:
22   virtual int SetNsStatus(bool enable, NsModes mode = kNsUnchanged);
23 
24   virtual int GetNsStatus(bool& enabled, NsModes& mode);
25 
26   virtual int SetAgcStatus(bool enable, AgcModes mode = kAgcUnchanged);
27 
28   virtual int GetAgcStatus(bool& enabled, AgcModes& mode);
29 
30   virtual int SetAgcConfig(AgcConfig config);
31 
32   virtual int GetAgcConfig(AgcConfig& config);
33 
34   virtual int SetRxNsStatus(int channel,
35                             bool enable,
36                             NsModes mode = kNsUnchanged);
37 
38   virtual int GetRxNsStatus(int channel, bool& enabled, NsModes& mode);
39 
40   virtual int SetRxAgcStatus(int channel,
41                              bool enable,
42                              AgcModes mode = kAgcUnchanged);
43 
44   virtual int GetRxAgcStatus(int channel, bool& enabled, AgcModes& mode);
45 
46   virtual int SetRxAgcConfig(int channel, AgcConfig config);
47 
48   virtual int GetRxAgcConfig(int channel, AgcConfig& config);
49 
50   virtual int SetEcStatus(bool enable, EcModes mode = kEcUnchanged);
51   virtual int GetEcStatus(bool& enabled, EcModes& mode);
52   virtual int EnableDriftCompensation(bool enable);
53   virtual bool DriftCompensationEnabled();
54 
55   virtual void SetDelayOffsetMs(int offset);
56   virtual int DelayOffsetMs();
57 
58   virtual int SetAecmMode(AecmModes mode = kAecmSpeakerphone,
59                           bool enableCNG = true);
60 
61   virtual int GetAecmMode(AecmModes& mode, bool& enabledCNG);
62 
63   virtual int EnableHighPassFilter(bool enable);
64   virtual bool IsHighPassFilterEnabled();
65 
66   virtual int RegisterRxVadObserver(int channel,
67                                     VoERxVadCallback& observer);
68 
69   virtual int DeRegisterRxVadObserver(int channel);
70 
71   virtual int VoiceActivityIndicator(int channel);
72 
73   virtual int SetEcMetricsStatus(bool enable);
74 
75   virtual int GetEcMetricsStatus(bool& enabled);
76 
77   virtual int GetEchoMetrics(int& ERL, int& ERLE, int& RERL, int& A_NLP);
78 
79   virtual int GetEcDelayMetrics(int& delay_median, int& delay_std);
80 
81   virtual int StartDebugRecording(const char* fileNameUTF8);
82   virtual int StartDebugRecording(FILE* file_handle);
83 
84   virtual int StopDebugRecording();
85 
86   virtual int SetTypingDetectionStatus(bool enable);
87 
88   virtual int GetTypingDetectionStatus(bool& enabled);
89 
90   virtual int TimeSinceLastTyping(int &seconds);
91 
92   // TODO(niklase) Remove default argument as soon as libJingle is updated!
93   virtual int SetTypingDetectionParameters(int timeWindow,
94                                            int costPerTyping,
95                                            int reportingThreshold,
96                                            int penaltyDecay,
97                                            int typeEventDelay = 0);
98 
99   virtual void EnableStereoChannelSwapping(bool enable);
100   virtual bool IsStereoChannelSwappingEnabled();
101 
102  protected:
103   VoEAudioProcessingImpl(voe::SharedData* shared);
104   virtual ~VoEAudioProcessingImpl();
105 
106  private:
107   bool _isAecMode;
108   voe::SharedData* _shared;
109 };
110 
111 }  // namespace webrtc
112 
113 #endif  // WEBRTC_VOICE_ENGINE_VOE_AUDIO_PROCESSING_IMPL_H
114