 Chromium Code Reviews
 Chromium Code Reviews Issue 1678813002:
  Moved the GainControlForNewAGC class to a separate file.  (Closed) 
  Base URL: https://chromium.googlesource.com/external/webrtc.git@master
    
  
    Issue 1678813002:
  Moved the GainControlForNewAGC class to a separate file.  (Closed) 
  Base URL: https://chromium.googlesource.com/external/webrtc.git@master| Index: webrtc/modules/audio_processing/gain_control_for_new_agc.h | 
| diff --git a/webrtc/modules/audio_processing/gain_control_for_new_agc.h b/webrtc/modules/audio_processing/gain_control_for_new_agc.h | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..5e8f8aceb5cf876982854e5e159a79b91a274999 | 
| --- /dev/null | 
| +++ b/webrtc/modules/audio_processing/gain_control_for_new_agc.h | 
| @@ -0,0 +1,66 @@ | 
| +/* | 
| + * Copyright (c) 2016 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 WEBRTC_MODULES_AUDIO_PROCESSING_GAIN_CONTROL_FOR_NEW_AGC_H_ | 
| +#define WEBRTC_MODULES_AUDIO_PROCESSING_GAIN_CONTROL_FOR_NEW_AGC_H_ | 
| + | 
| +#include "webrtc/base/constructormagic.h" | 
| +#include "webrtc/modules/audio_processing/agc/agc_manager_direct.h" | 
| +#include "webrtc/modules/audio_processing/gain_control_impl.h" | 
| 
the sun
2016/02/08 09:21:39
include not needed?
 
peah-webrtc
2016/02/08 13:01:12
It is needed for GainControlImpl, right? Or do you
 
the sun
2016/02/08 14:18:11
Yes, forward declare GainControl. To me it looks l
 
peah-webrtc
2016/02/09 09:11:15
Done.
 | 
| +#include "webrtc/modules/audio_processing/include/audio_processing.h" | 
| + | 
| +namespace webrtc { | 
| + | 
| +// This class has two main functionalities: | 
| 
the sun
2016/02/08 09:21:39
functinoalities -> purposes
 
peah-webrtc
2016/02/08 13:01:12
Done.
 | 
| +// | 
| +// 1) It is returned instead of the real GainControl after the new AGC has been | 
| +// enabled in order to prevent an outside user from overriding compression | 
| +// settings. It doesn't do anything in its implementation, except for | 
| +// delegating the const methods and Enable calls to the real GainControl, so | 
| +// AGC can still be disabled. | 
| +// | 
| +// 2) It is injected into AgcManagerDirect and implements volume callbacks for | 
| +// getting and setting the volume level. It just caches this value to be used | 
| +// in VoiceEngine later. | 
| +class GainControlForNewAgc : public GainControl, public VolumeCallbacks { | 
| 
the sun
2016/02/08 09:21:39
Names with "new" and "old" in them will soon be ob
 
peah-webrtc
2016/02/08 13:01:12
Good point. I exchanged it with "Experimental" AGC
 
the sun
2016/02/08 14:18:11
Yes, thanks!
 
peah-webrtc
2016/02/09 09:11:15
Acknowledged.
 | 
| + public: | 
| + explicit GainControlForNewAgc(GainControlImpl* gain_control); | 
| + | 
| + // GainControl implementation. | 
| + int Enable(bool enable) override; | 
| + bool is_enabled() const override; | 
| + int set_stream_analog_level(int level) override; | 
| + int stream_analog_level() override; | 
| + int set_mode(Mode mode) override; | 
| + Mode mode() const override; | 
| + int set_target_level_dbfs(int level) override; | 
| + int target_level_dbfs() const override; | 
| + int set_compression_gain_db(int gain) override; | 
| + int compression_gain_db() const override; | 
| + int enable_limiter(bool enable) override; | 
| + bool is_limiter_enabled() const override; | 
| + int set_analog_level_limits(int minimum, int maximum) override; | 
| + int analog_level_minimum() const override; | 
| + int analog_level_maximum() const override; | 
| + bool stream_is_saturated() const override; | 
| + | 
| + void SetMicVolume(int volume) override; | 
| 
the sun
2016/02/08 09:21:39
// VolumeCallbacks implementation.
?
 
peah-webrtc
2016/02/08 13:01:12
Done.
 | 
| + int GetMicVolume() override; | 
| + | 
| + private: | 
| + GainControl* real_gain_control_; | 
| 
the sun
2016/02/08 09:21:39
GainControlImpl?
and you can forward declare it.
 
peah-webrtc
2016/02/08 13:01:12
This is a bit tricky. As it is currently implement
 
the sun
2016/02/08 14:18:11
Typically the reason for making a virtual method p
 
peah-webrtc
2016/02/09 09:11:15
Maybe I got this wrong, but the problem I see is t
 
the sun
2016/02/09 11:49:55
No, sorry, you got it right; I was just bad at exp
 | 
| + int volume_; | 
| + | 
| + RTC_DISALLOW_COPY_AND_ASSIGN(GainControlForNewAgc); | 
| +}; | 
| + | 
| +} // namespace webrtc | 
| + | 
| +#endif // WEBRTC_MODULES_AUDIO_PROCESSING_GAIN_CONTROL_FOR_NEW_AGC_H_ |