Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(179)

Unified Diff: webrtc/modules/audio_processing/residual_echo_detector.cc

Issue 2884593002: Moving the residual echo detector outside of band-scheme in APM (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/modules/audio_processing/residual_echo_detector.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/audio_processing/residual_echo_detector.cc
diff --git a/webrtc/modules/audio_processing/residual_echo_detector.cc b/webrtc/modules/audio_processing/residual_echo_detector.cc
index e95e0894bfc5d8f735243c8fdd4d6673cfba349f..b229d2e88f67847da0d313ea01dfbc48fde35f6d 100644
--- a/webrtc/modules/audio_processing/residual_echo_detector.cc
+++ b/webrtc/modules/audio_processing/residual_echo_detector.cc
@@ -13,13 +13,19 @@
#include <algorithm>
#include <numeric>
+#include "webrtc/base/atomicops.h"
#include "webrtc/modules/audio_processing/audio_buffer.h"
+#include "webrtc/modules/audio_processing/logging/apm_data_dumper.h"
#include "webrtc/system_wrappers/include/metrics.h"
namespace {
float Power(rtc::ArrayView<const float> input) {
- return std::inner_product(input.begin(), input.end(), input.begin(), 0.f);
+ if (input.size() == 0) {
+ return 0.f;
+ }
+ return std::inner_product(input.begin(), input.end(), input.begin(), 0.f) /
+ input.size();
}
constexpr size_t kLookbackFrames = 650;
@@ -33,8 +39,12 @@ constexpr size_t kAggregationBufferSize = 10 * 100;
namespace webrtc {
+int ResidualEchoDetector::instance_count_ = 0;
+
ResidualEchoDetector::ResidualEchoDetector()
- : render_buffer_(kRenderBufferSize),
+ : data_dumper_(
+ new ApmDataDumper(rtc::AtomicOps::Increment(&instance_count_))),
+ render_buffer_(kRenderBufferSize),
render_power_(kLookbackFrames),
render_power_mean_(kLookbackFrames),
render_power_std_dev_(kLookbackFrames),
@@ -45,6 +55,11 @@ ResidualEchoDetector::~ResidualEchoDetector() = default;
void ResidualEchoDetector::AnalyzeRenderAudio(
rtc::ArrayView<const float> render_audio) {
+ // Dump debug data assuming 48 kHz sample rate (if this assumption is not
+ // valid the dumped audio will need to be converted offline accordingly).
+ data_dumper_->DumpWav("ed_render", render_audio.size(), render_audio.data(),
+ 48000, 1);
+
if (render_buffer_.Size() == 0) {
frames_since_zero_buffer_size_ = 0;
} else if (frames_since_zero_buffer_size_ >= kRenderBufferSize) {
@@ -61,6 +76,11 @@ void ResidualEchoDetector::AnalyzeRenderAudio(
void ResidualEchoDetector::AnalyzeCaptureAudio(
rtc::ArrayView<const float> capture_audio) {
+ // Dump debug data assuming 48 kHz sample rate (if this assumption is not
+ // valid the dumped audio will need to be converted offline accordingly).
+ data_dumper_->DumpWav("ed_capture", capture_audio.size(),
+ capture_audio.data(), 48000, 1);
+
if (first_process_call_) {
// On the first process call (so the start of a call), we must flush the
// render buffer, otherwise the render data will be delayed.
@@ -140,13 +160,9 @@ void ResidualEchoDetector::Initialize() {
void ResidualEchoDetector::PackRenderAudioBuffer(
AudioBuffer* audio,
std::vector<float>* packed_buffer) {
- RTC_DCHECK_GE(160, audio->num_frames_per_band());
-
packed_buffer->clear();
- packed_buffer->insert(packed_buffer->end(),
- audio->split_bands_const_f(0)[kBand0To8kHz],
- (audio->split_bands_const_f(0)[kBand0To8kHz] +
- audio->num_frames_per_band()));
+ packed_buffer->insert(packed_buffer->end(), audio->channels_f()[0],
+ audio->channels_f()[0] + audio->num_frames());
}
} // namespace webrtc
« no previous file with comments | « webrtc/modules/audio_processing/residual_echo_detector.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698