Index: webrtc/modules/audio_processing/test/audio_processing_simulator.cc |
diff --git a/webrtc/modules/audio_processing/test/audio_processing_simulator.cc b/webrtc/modules/audio_processing/test/audio_processing_simulator.cc |
index 778b347091d82a9270a2904e8c4d329061df60c2..89667223ee471d07cb8fb4b15e61aa1f45b53afa 100644 |
--- a/webrtc/modules/audio_processing/test/audio_processing_simulator.cc |
+++ b/webrtc/modules/audio_processing/test/audio_processing_simulator.cc |
@@ -61,9 +61,30 @@ void CopyToAudioFrame(const ChannelBuffer<float>& src, AudioFrame* dest) { |
AudioProcessingSimulator::AudioProcessingSimulator( |
const SimulationSettings& settings) |
- : settings_(settings) {} |
+ : settings_(settings) { |
+ if (settings_.red_graph_output_filename && |
+ settings_.red_graph_output_filename->size() > 0) { |
+ residual_echo_likelihood_graph_.open(*settings_.red_graph_output_filename); |
+ residual_echo_likelihood_graph_ << "import numpy as np" << std::endl |
peah-webrtc
2016/11/10 10:47:10
Would it be possible to abstract this printout int
ivoc
2016/11/10 15:36:08
Ok, done.
|
+ << "import matplotlib.pyplot as plt" |
+ << std::endl |
+ << "y = np.array(["; |
+ } |
+} |
-AudioProcessingSimulator::~AudioProcessingSimulator() = default; |
+AudioProcessingSimulator::~AudioProcessingSimulator() { |
+ if (residual_echo_likelihood_graph_.is_open()) { |
+ residual_echo_likelihood_graph_ << "])" << std::endl |
peah-webrtc
2016/11/10 10:47:09
Would it be possible to abstract this printout int
ivoc
2016/11/10 15:36:08
Done.
|
+ << "x = np.arange(len(y))*.01" << std::endl |
+ << "plt.plot(x, y)" << std::endl |
+ << "plt.ylabel('Echo likelihood')" |
+ << std::endl |
+ << "plt.xlabel('Time (s)')" << std::endl |
+ << "plt.ylim([0,1])" << std::endl |
+ << "plt.show()" << std::endl; |
+ residual_echo_likelihood_graph_.close(); |
+ } |
+} |
AudioProcessingSimulator::ScopedTimer::~ScopedTimer() { |
int64_t interval = rtc::TimeNanos() - start_time_; |
@@ -90,6 +111,11 @@ void AudioProcessingSimulator::ProcessStream(bool fixed_interface) { |
buffer_writer_->Write(*out_buf_); |
} |
+ if (residual_echo_likelihood_graph_.is_open()) { |
+ auto stats = ap_->GetStatistics(); |
+ residual_echo_likelihood_graph_ << stats.residual_echo_likelihood << ", "; |
+ } |
+ |
++num_process_stream_calls_; |
} |
@@ -245,6 +271,9 @@ void AudioProcessingSimulator::CreateAudioProcessor() { |
!settings_.use_extended_filter || *settings_.use_extended_filter)); |
config.Set<DelayAgnostic>(new DelayAgnostic(!settings_.use_delay_agnostic || |
*settings_.use_delay_agnostic)); |
+ if (settings_.use_red) { |
+ apm_config.residual_echo_detector.enabled = *settings_.use_red; |
+ } |
ap_.reset(AudioProcessing::Create(config)); |
RTC_CHECK(ap_); |