blob: eff7133c44b23bd810d8209c05585d6c1354a4f9 [file] [log] [blame]
solenberg76377c52017-02-21 00:54:31 -08001/*
2 * Copyright (c) 2017 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_MEDIA_ENGINE_APM_HELPERS_H_
12#define WEBRTC_MEDIA_ENGINE_APM_HELPERS_H_
13
solenberg76377c52017-02-21 00:54:31 -080014namespace webrtc {
15
16class AudioProcessing;
17class AudioDeviceModule;
18
solenberg22818a52017-03-16 01:20:23 -070019enum EcModes {
20 kEcConference, // Conferencing default (aggressive AEC).
21 kEcAecm, // AEC mobile.
22};
23
24struct AgcConfig {
25 unsigned short targetLeveldBOv;
26 unsigned short digitalCompressionGaindB;
27 bool limiterEnable;
28};
29
solenberg76377c52017-02-21 00:54:31 -080030namespace apm_helpers {
31
32AgcConfig GetAgcConfig(AudioProcessing* apm);
33void SetAgcConfig(AudioProcessing* apm,
34 const AgcConfig& config);
35void SetAgcStatus(AudioProcessing* apm,
36 AudioDeviceModule* adm,
solenberg22818a52017-03-16 01:20:23 -070037 bool enable);
solenberg76377c52017-02-21 00:54:31 -080038void SetEcStatus(AudioProcessing* apm,
39 bool enable,
40 EcModes mode);
41void SetEcMetricsStatus(AudioProcessing* apm, bool enable);
42void SetAecmMode(AudioProcessing* apm, bool enable_cng);
43void SetNsStatus(AudioProcessing* apm, bool enable);
44void SetTypingDetectionStatus(AudioProcessing* apm, bool enable);
45
46} // namespace apm_helpers
47} // namespace webrtc
48
49#endif // WEBRTC_MEDIA_ENGINE_APM_HELPERS_H_