/* * 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; // Number of milliseconds to wait to periodically reset the VAD. constexpr int kVadResetPeriodMs = 1500; // Speech probability threshold to detect speech activity. constexpr float kVadConfidenceThreshold = 0.95f; // Minimum number of adjacent speech frames having a sufficiently high speech // probability to reliably detect speech activity. constexpr int kAdjacentSpeechFramesThreshold = 12; // 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_