Index: webrtc/modules/audio_processing/test/aec_dump_based_simulator.cc |
diff --git a/webrtc/modules/audio_processing/test/aec_dump_based_simulator.cc b/webrtc/modules/audio_processing/test/aec_dump_based_simulator.cc |
index d1cd48424a1cfcb3708c170f2a1a91d866f35887..9e7aad0420b79347f25d96f95747ab990206a8c7 100644 |
--- a/webrtc/modules/audio_processing/test/aec_dump_based_simulator.cc |
+++ b/webrtc/modules/audio_processing/test/aec_dump_based_simulator.cc |
@@ -8,7 +8,9 @@ |
* be found in the AUTHORS file in the root of the source tree. |
*/ |
+#include <algorithm> |
#include <iostream> |
+#include <utility> |
#include "webrtc/modules/audio_processing/test/aec_dump_based_simulator.h" |
@@ -68,8 +70,7 @@ AecDumpBasedSimulator::AecDumpBasedSimulator(const SimulationSettings& settings) |
AecDumpBasedSimulator::~AecDumpBasedSimulator() = default; |
void AecDumpBasedSimulator::PrepareProcessStreamCall( |
- const webrtc::audioproc::Stream& msg, |
- bool* set_stream_analog_level_called) { |
+ const webrtc::audioproc::Stream& msg) { |
if (msg.has_input_data()) { |
// Fixed interface processing. |
// Verify interface invariance. |
@@ -158,13 +159,15 @@ void AecDumpBasedSimulator::PrepareProcessStreamCall( |
// TODO(peah): Add support for controlling the analog level via the |
// command-line. |
- if (msg.has_level()) { |
- RTC_CHECK_EQ(AudioProcessing::kNoError, |
- ap_->gain_control()->set_stream_analog_level(msg.level())); |
- *set_stream_analog_level_called = true; |
- } else { |
- *set_stream_analog_level_called = false; |
- } |
+ RTC_CHECK(msg.has_level()); // Level is always logged in AEC dumps. |
peah-webrtc
2017/05/02 21:27:32
It is probably fine, but I haven't checked the pro
|
+ // When the analog gain is simulated, use the gain suggested by AGC instead of |
+ // that stored in the AEC dump. |
+ RTC_CHECK_EQ(AudioProcessing::kNoError, |
+ ap_->gain_control()->set_stream_analog_level( |
peah-webrtc
2017/05/02 21:27:32
What about putting the set_stream_analog_level cal
|
+ settings_.simulate_mic_gain ? |
+ last_specified_microphone_level_ : msg.level())); |
+ // TODO(aleloi): If settings_.simulate_mic_gain, set undo level to |
peah-webrtc
2017/05/02 21:27:33
It would be good to have FakeRecordingDevice as pa
|
+ // |msg.level()| via FakeRecordingDevice::NotifyAudioDeviceLevel(). |
} |
void AecDumpBasedSimulator::VerifyProcessStreamBitExactness( |
@@ -562,14 +565,19 @@ void AecDumpBasedSimulator::HandleMessage(const webrtc::audioproc::Init& msg) { |
void AecDumpBasedSimulator::HandleMessage( |
const webrtc::audioproc::Stream& msg) { |
- bool set_stream_analog_level_called = false; |
- PrepareProcessStreamCall(msg, &set_stream_analog_level_called); |
+ PrepareProcessStreamCall(msg); |
ProcessStream(interface_used_ == InterfaceType::kFixedInterface); |
- if (set_stream_analog_level_called) { |
+ if (settings_.simulate_mic_gain) { |
+ // Store analog level for the next analyzed frame. |
+ last_specified_microphone_level_ = |
+ ap_->gain_control()->stream_analog_level(); |
peah-webrtc
2017/05/02 21:27:32
What about putting the stream_analog_level call in
|
+ // TODO(aleloi): Set the returned value into a FakeRecordingDevice instance |
+ // via FakeRecordingDevice::set_analog_level() instead of using |
+ // last_specified_microphone_level_. |
+ } else { |
// Call stream analog level to ensure that any side-effects are triggered. |
(void)ap_->gain_control()->stream_analog_level(); |
} |
- |
VerifyProcessStreamBitExactness(msg); |
} |