mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-19 08:37:54 +01:00

This CL does *not* change the behavior of the AGC2 adaptive digital controller - bitexactness verified with audioproc_f on a collection of AEC dumps and Wav files (42 recordings in total). Tested: compiled Chrome with this patch and made an appr.tc test call Bug: webrtc:7494 Change-Id: Ia8a9f6fbc3a3459b888a2eed87e108f0d39cfe99 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/233520 Commit-Queue: Alessio Bazzica <alessiob@webrtc.org> Reviewed-by: Sam Zackrisson <saza@webrtc.org> Cr-Commit-Position: refs/heads/main@{#35140}
57 lines
2.2 KiB
C++
57 lines
2.2 KiB
C++
/*
|
|
* Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#ifndef MODULES_AUDIO_PROCESSING_AGC2_AGC2_COMMON_H_
|
|
#define MODULES_AUDIO_PROCESSING_AGC2_AGC2_COMMON_H_
|
|
|
|
namespace webrtc {
|
|
|
|
constexpr float kMinFloatS16Value = -32768.0f;
|
|
constexpr float kMaxFloatS16Value = 32767.0f;
|
|
constexpr float kMaxAbsFloatS16Value = 32768.0f;
|
|
|
|
// Minimum audio level in dBFS scale for S16 samples.
|
|
constexpr float kMinLevelDbfs = -90.31f;
|
|
|
|
constexpr int kFrameDurationMs = 10;
|
|
constexpr int kSubFramesInFrame = 20;
|
|
constexpr int kMaximalNumberOfSamplesPerChannel = 480;
|
|
|
|
// Adaptive digital gain applier settings.
|
|
|
|
// At what limiter levels should we start decreasing the adaptive digital gain.
|
|
constexpr float kLimiterThresholdForAgcGainDbfs = -1.0f;
|
|
|
|
// This is the threshold for speech. Speech frames are used for updating the
|
|
// speech level, measuring the amount of speech, and decide when to allow target
|
|
// gain changes.
|
|
constexpr float kVadConfidenceThreshold = 0.95f;
|
|
|
|
// Number of milliseconds of speech frames to observe to make the estimator
|
|
// confident.
|
|
constexpr float kLevelEstimatorTimeToConfidenceMs = 400;
|
|
constexpr float kLevelEstimatorLeakFactor =
|
|
1.0f - 1.0f / kLevelEstimatorTimeToConfidenceMs;
|
|
|
|
// Saturation Protector settings.
|
|
constexpr float kSaturationProtectorInitialHeadroomDb = 20.0f;
|
|
constexpr int kSaturationProtectorBufferSize = 4;
|
|
|
|
// Number of interpolation points for each region of the limiter.
|
|
// These values have been tuned to limit the interpolated gain curve error given
|
|
// the limiter parameters and allowing a maximum error of +/- 32768^-1.
|
|
constexpr int kInterpolatedGainCurveKneePoints = 22;
|
|
constexpr int kInterpolatedGainCurveBeyondKneePoints = 10;
|
|
constexpr int kInterpolatedGainCurveTotalPoints =
|
|
kInterpolatedGainCurveKneePoints + kInterpolatedGainCurveBeyondKneePoints;
|
|
|
|
} // namespace webrtc
|
|
|
|
#endif // MODULES_AUDIO_PROCESSING_AGC2_AGC2_COMMON_H_
|