AGC2 dummy module: fixed gain param, APM integration, audioproc_f adaptation
In preparation of coming CLs that will add an AGC interface to make the
gain controller injectable.
This CL simplifies AGC2 (dummy sub-module of audioproc_f) since it only
implements the fixed digital mode with hard-clipping - i.e., no limiter
is used.
The AGC2 config now includes the fixed gain to apply and audioproc_f
has been adapted accordingly.
Finally, this CL slightly simplifies the AGC2 integration into APM.
This CL is a continuation of https://codereview.webrtc.org/2995043002/
Bug: webrtc:7494
Change-Id: I3d554ea4dc6208928352059feb14987edabf14c7
Reviewed-on: https://webrtc-review.googlesource.com/4661
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Per Ã…hgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20278}diff --git a/modules/audio_processing/agc2/gain_controller2.h b/modules/audio_processing/agc2/gain_controller2.h
index 9ab8656..1170687 100644
--- a/modules/audio_processing/agc2/gain_controller2.h
+++ b/modules/audio_processing/agc2/gain_controller2.h
@@ -14,7 +14,6 @@
#include <memory>
#include <string>
-#include "modules/audio_processing/agc2/digital_gain_applier.h"
#include "modules/audio_processing/include/audio_processing.h"
#include "rtc_base/constructormagic.h"
@@ -26,28 +25,26 @@
// Gain Controller 2 aims to automatically adjust levels by acting on the
// microphone gain and/or applying digital gain.
//
-// It temporarily implements a hard-coded gain mode only.
+// Temporarily implements a fixed gain mode with hard-clipping.
class GainController2 {
public:
- explicit GainController2(int sample_rate_hz);
+ GainController2();
~GainController2();
- int sample_rate_hz() { return sample_rate_hz_; }
-
+ void Initialize(int sample_rate_hz);
void Process(AudioBuffer* audio);
+ void ApplyConfig(const AudioProcessing::Config::GainController2& config);
static bool Validate(const AudioProcessing::Config::GainController2& config);
static std::string ToString(
const AudioProcessing::Config::GainController2& config);
private:
- int sample_rate_hz_;
- std::unique_ptr<ApmDataDumper> data_dumper_;
- DigitalGainApplier digital_gain_applier_;
static int instance_count_;
- // TODO(alessiob): Remove once a meaningful gain controller mode is
- // implemented.
- const float gain_;
+ std::unique_ptr<ApmDataDumper> data_dumper_;
+ int sample_rate_hz_;
+ float fixed_gain_;
+
RTC_DISALLOW_COPY_AND_ASSIGN(GainController2);
};