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..7b15b14333d39d67e11d361d32b5075bdaf01e94 100644 | 
| --- a/webrtc/modules/audio_processing/include/audio_processing.h | 
| +++ b/webrtc/modules/audio_processing/include/audio_processing.h | 
| @@ -44,6 +44,24 @@ class LevelEstimator; | 
| class NoiseSuppression; | 
| class VoiceDetection; | 
| +// The struct below constitutes the new parameter scheme for the | 
| +// audio processing functionality. It is being introduced gradually and | 
| +// until it is fully introduced, it is prone to change. | 
| +// | 
| +// The parameters and behavior of the audio processing module is speficied | 
| 
 
hlundin-webrtc
2016/08/30 11:26:26
speficied -> specified
 
hlundin-webrtc
2016/08/30 11:26:26
is -> are
 
peah-webrtc
2016/08/30 17:05:58
Done.
 
peah-webrtc
2016/08/30 17:05:58
Done.
 
 | 
| +// by changing the default values in the ApmSettings struct. It is possible | 
| 
 
hlundin-webrtc
2016/08/30 11:26:26
The parameters and behavior are in fact specified
 
peah-webrtc
2016/08/30 17:05:57
Done.
 
 | 
| +// to verify the specified parameters by calling the IsOk method for each | 
| +// substruct. The settings are applied by passing the struct to the | 
| 
 
hlundin-webrtc
2016/08/30 11:26:26
What happens if I call ApmSettings::IsOk()? Will i
 
peah-webrtc
2016/08/30 17:05:57
Yes, I added a comment about that.
 
 | 
| +// ApplySettings | 
| 
 
hlundin-webrtc
2016/08/30 11:26:26
Line wrapping is odd.
 
peah-webrtc
2016/08/30 17:05:58
Done.
 
 | 
| +// method in the audio processing interface. | 
| +struct ApmSettings { | 
| 
 
the sun
2016/08/30 10:32:39
name this Config and put it inside the AudioProces
 
hlundin-webrtc
2016/08/30 11:26:26
+1
 
peah-webrtc
2016/08/30 17:05:57
Done.
 
peah-webrtc
2016/08/30 17:05:57
Done.
 
 | 
| + struct LevelControllerSettings { | 
| 
 
hlundin-webrtc
2016/08/30 11:26:26
Should the substructs' configs be declared here or
 
peah-webrtc
2016/08/30 17:05:57
I don't think that we should allow/require audio_p
 
 | 
| + bool enabled = false; | 
| + bool IsOk() const; | 
| + } level_controller; | 
| + bool IsOk() const; | 
| +}; | 
| + | 
| // Use to enable the extended filter mode in the AEC, along with robustness | 
| // measures around the reported system delays. It comes with a significant | 
| // increase in AEC complexity, but is much more robust to unreliable reported | 
| @@ -91,14 +109,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; | 
| 
 
the sun
2016/08/30 10:32:39
Don't forget to remove ConfigOptionID::kLevelContr
 
peah-webrtc
2016/08/30 17:05:57
Can we do that? There is a comment in common.h tha
 
 | 
| - 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 +215,11 @@ struct Intelligibility { | 
| // Usage example, omitting error checking: | 
| // AudioProcessing* apm = AudioProcessing::Create(0); | 
| // | 
| +// ApmSettings settings; | 
| +// settings.level_controller_settings.enable = true; | 
| +// RTC_DCHECK(settings.IsOk()); | 
| 
 
hlundin-webrtc
2016/08/30 11:26:26
The "user" should always verify the settings, not
 
peah-webrtc
2016/08/30 17:05:57
Good point! I edited it a bit. PTAL
 
the sun
2016/08/30 18:05:35
I disagree. We need to validate the config anyway,
 
peah-webrtc
2016/09/02 08:21:59
The argument by the other reviewer is that there a
 
hlundin-webrtc
2016/09/06 08:56:03
(Same comment as in later patch set, for completen
 
peah-webrtc
2016/09/07 05:42:59
Acknowledged.
 
 | 
| +// apm->ApplySettings(settings); | 
| +// | 
| // apm->high_pass_filter()->Enable(true); | 
| // | 
| // apm->echo_cancellation()->enable_drift_compensation(false); | 
| @@ -268,6 +283,8 @@ class AudioProcessing { | 
| NonlinearBeamformer* beamformer); | 
| virtual ~AudioProcessing() {} | 
| + virtual int ApplySettings(const ApmSettings& settings) = 0; | 
| 
 
the sun
2016/08/30 10:32:38
- ApplyConfig()
- Add TODO(peah) that this is temp
 
peah-webrtc
2016/08/30 17:05:57
Done.
 
 | 
| + | 
| // Initializes internal states, while retaining all user settings. This | 
| // should be called before beginning to process a new audio stream. However, | 
| // it is not necessary to call before processing the first stream after |