Chromium Code Reviews| Index: webrtc/modules/audio_processing/include/audio_processing.h |
| diff --git a/webrtc/modules/audio_processing/include/audio_processing.h b/webrtc/modules/audio_processing/include/audio_processing.h |
| index 09e5d5be1cba9b20a8b8210c690c3c23e1dc7709..16d11faf694d1d7140f531ac5c0c1887e9e42c62 100644 |
| --- a/webrtc/modules/audio_processing/include/audio_processing.h |
| +++ b/webrtc/modules/audio_processing/include/audio_processing.h |
| @@ -91,14 +91,6 @@ struct RefinedAdaptiveFilter { |
| bool enabled; |
| }; |
| -// Enables the adaptive level controller. |
| -struct LevelControl { |
| - LevelControl() : enabled(false) {} |
| - explicit LevelControl(bool enabled) : enabled(enabled) {} |
| - static const ConfigOptionID identifier = ConfigOptionID::kLevelControl; |
| - bool enabled; |
| -}; |
| - |
| // Enables delay-agnostic echo cancellation. This feature relies on internally |
| // estimated delays between the process and reverse streams, thus not relying |
| // on reported system delays. This configuration only applies to |
| @@ -205,6 +197,10 @@ struct Intelligibility { |
| // Usage example, omitting error checking: |
| // AudioProcessing* apm = AudioProcessing::Create(0); |
| // |
| +// AudioProcessing::Config config; |
| +// config.level_controller.enable = true; |
| +// apm->ApplyConfig(config) |
| +// |
| // apm->high_pass_filter()->Enable(true); |
| // |
| // apm->echo_cancellation()->enable_drift_compensation(false); |
| @@ -244,6 +240,19 @@ struct Intelligibility { |
| // |
| class AudioProcessing { |
| public: |
| + // The struct below constitutes the new parameter scheme for the |
| + // audio processing functionality. It is being introduced gradually and |
|
the sun
2016/09/07 15:49:39
drop "functionality" and use all 80 chars of each
peah-webrtc
2016/09/08 09:13:49
Done.
|
| + // until it is fully introduced, it is prone to change. |
|
the sun
2016/09/07 15:49:39
TODO(peah): Remove comment once new config scheme
peah-webrtc
2016/09/08 09:13:49
Done.
|
| + // |
| + // The parameters and behavior of the audio processing module are controlled |
| + // by changing the default values in the AudioProcessing::Config struct. |
| + // The config is applied by passing the struct to the ApplyConfig method. |
| + struct Config { |
| + struct LevelController { |
| + bool enabled = false; |
| + } level_controller; |
| + }; |
| + |
| // TODO(mgraczyk): Remove once all methods that use ChannelLayout are gone. |
| enum ChannelLayout { |
| kMono, |
| @@ -262,9 +271,9 @@ class AudioProcessing { |
| // be one instance for every incoming stream. |
| static AudioProcessing* Create(); |
| // Allows passing in an optional configuration at create-time. |
| - static AudioProcessing* Create(const Config& config); |
| + static AudioProcessing* Create(const webrtc::Config& config); |
| // Only for testing. |
| - static AudioProcessing* Create(const Config& config, |
| + static AudioProcessing* Create(const webrtc::Config& config, |
| NonlinearBeamformer* beamformer); |
| virtual ~AudioProcessing() {} |
| @@ -300,9 +309,13 @@ class AudioProcessing { |
| ChannelLayout output_layout, |
| ChannelLayout reverse_layout) = 0; |
| + // TODO(peah): This method is a temporary solution used to take control |
| + // over the parameters in the audio processing module and is likely to change. |
| + virtual void ApplyConfig(const Config& config) = 0; |
| + |
| // Pass down additional options which don't have explicit setters. This |
| // ensures the options are applied immediately. |
| - virtual void SetExtraOptions(const Config& config) = 0; |
| + virtual void SetExtraOptions(const webrtc::Config& config) = 0; |
| // TODO(ajm): Only intended for internal use. Make private and friend the |
| // necessary classes? |