Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(816)

Unified Diff: webrtc/modules/audio_processing/agc/agc_manager_direct.cc

Issue 2543753006: AGC: Route clipping parameter from webrtc::Config to AGC (Closed)
Patch Set: Fix a typo Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/audio_processing/agc/agc_manager_direct.cc
diff --git a/webrtc/modules/audio_processing/agc/agc_manager_direct.cc b/webrtc/modules/audio_processing/agc/agc_manager_direct.cc
index f8fc310c57569aa28dab3a1d440bcc09292f72e7..70a0e1f2b2d1339db45ea4e8b51e2b04310f5374 100644
--- a/webrtc/modules/audio_processing/agc/agc_manager_direct.cc
+++ b/webrtc/modules/audio_processing/agc/agc_manager_direct.cc
@@ -27,8 +27,6 @@ namespace webrtc {
namespace {
-// Lowest the microphone level can be lowered due to clipping.
-const int kClippedLevelMin = 170;
// Amount the microphone level is lowered with every clipping event.
const int kClippedLevelStep = 15;
// Proportion of clipped samples required to declare a clipping event.
@@ -115,7 +113,8 @@ class DebugFile {
AgcManagerDirect::AgcManagerDirect(GainControl* gctrl,
VolumeCallbacks* volume_callbacks,
- int startup_min_level)
+ int startup_min_level,
+ int clipped_level_min)
: agc_(new Agc()),
gctrl_(gctrl),
volume_callbacks_(volume_callbacks),
@@ -130,14 +129,15 @@ AgcManagerDirect::AgcManagerDirect(GainControl* gctrl,
check_volume_on_next_process_(true), // Check at startup.
startup_(true),
startup_min_level_(ClampLevel(startup_min_level)),
+ clipped_level_min_(clipped_level_min),
file_preproc_(new DebugFile("agc_preproc.pcm")),
- file_postproc_(new DebugFile("agc_postproc.pcm")) {
-}
+ file_postproc_(new DebugFile("agc_postproc.pcm")) {}
AgcManagerDirect::AgcManagerDirect(Agc* agc,
GainControl* gctrl,
VolumeCallbacks* volume_callbacks,
- int startup_min_level)
+ int startup_min_level,
+ int clipped_level_min)
: agc_(agc),
gctrl_(gctrl),
volume_callbacks_(volume_callbacks),
@@ -152,9 +152,9 @@ AgcManagerDirect::AgcManagerDirect(Agc* agc,
check_volume_on_next_process_(true), // Check at startup.
startup_(true),
startup_min_level_(ClampLevel(startup_min_level)),
+ clipped_level_min_(clipped_level_min),
file_preproc_(new DebugFile("agc_preproc.pcm")),
- file_postproc_(new DebugFile("agc_postproc.pcm")) {
-}
+ file_postproc_(new DebugFile("agc_postproc.pcm")) {}
AgcManagerDirect::~AgcManagerDirect() {}
@@ -218,14 +218,14 @@ void AgcManagerDirect::AnalyzePreProcess(int16_t* audio,
<< clipped_ratio;
// Always decrease the maximum level, even if the current level is below
// threshold.
- SetMaxLevel(std::max(kClippedLevelMin, max_level_ - kClippedLevelStep));
+ SetMaxLevel(std::max(clipped_level_min_, max_level_ - kClippedLevelStep));
RTC_HISTOGRAM_BOOLEAN("WebRTC.Audio.AgcClippingAdjustmentAllowed",
- level_ - kClippedLevelStep >= kClippedLevelMin);
- if (level_ > kClippedLevelMin) {
+ level_ - kClippedLevelStep >= clipped_level_min_);
+ if (level_ > clipped_level_min_) {
// Don't try to adjust the level if we're already below the limit. As
// a consequence, if the user has brought the level above the limit, we
// will still not react until the postproc updates the level.
- SetLevel(std::max(kClippedLevelMin, level_ - kClippedLevelStep));
+ SetLevel(std::max(clipped_level_min_, level_ - kClippedLevelStep));
// Reset the AGC since the level has changed.
agc_->Reset();
}
@@ -301,13 +301,15 @@ void AgcManagerDirect::SetLevel(int new_level) {
}
void AgcManagerDirect::SetMaxLevel(int level) {
- RTC_DCHECK_GE(level, kClippedLevelMin);
+ RTC_DCHECK_GE(level, clipped_level_min_);
max_level_ = level;
// Scale the |kSurplusCompressionGain| linearly across the restricted
// level range.
- max_compression_gain_ = kMaxCompressionGain + std::floor(
- (1.f * kMaxMicLevel - max_level_) / (kMaxMicLevel - kClippedLevelMin) *
- kSurplusCompressionGain + 0.5f);
+ max_compression_gain_ =
+ kMaxCompressionGain + std::floor((1.f * kMaxMicLevel - max_level_) /
+ (kMaxMicLevel - clipped_level_min_) *
+ kSurplusCompressionGain +
+ 0.5f);
LOG(LS_INFO) << "[agc] max_level_=" << max_level_
<< ", max_compression_gain_=" << max_compression_gain_;
}

Powered by Google App Engine
This is Rietveld 408576698