webrtc/modules/audio_processing/test/echo_canceller_test_tools.h
Per Åhgren b441acf656 AEC3: Add support in the echo subtractor for handling multiple channels
This CL adds support in the echo subtractor for handling multiple
capture and render channels.

The changes have passed bitexactness tests for substantial set
of mono recordings.

Bug: webrtc:10913
Change-Id: Ib448c9edf172ebc31e8c28db7b2f2a389a53adb9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/155168
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29389}
2019-10-05 07:45:47 +00:00

47 lines
1.5 KiB
C++

/*
* Copyright (c) 2017 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 MODULES_AUDIO_PROCESSING_TEST_ECHO_CANCELLER_TEST_TOOLS_H_
#define MODULES_AUDIO_PROCESSING_TEST_ECHO_CANCELLER_TEST_TOOLS_H_
#include <algorithm>
#include <vector>
#include "api/array_view.h"
#include "rtc_base/random.h"
namespace webrtc {
// Randomizes the elements in a vector with values -32767.f:32767.f.
void RandomizeSampleVector(Random* random_generator, rtc::ArrayView<float> v);
// Randomizes the elements in a vector with values -amplitude:amplitude.
void RandomizeSampleVector(Random* random_generator,
rtc::ArrayView<float> v,
float amplitude);
// Class for delaying a signal a fixed number of samples.
template <typename T>
class DelayBuffer {
public:
explicit DelayBuffer(size_t delay) : buffer_(delay) {}
~DelayBuffer() = default;
// Produces a delayed signal copy of x.
void Delay(rtc::ArrayView<const T> x, rtc::ArrayView<T> x_delayed);
private:
std::vector<T> buffer_;
size_t next_insert_index_ = 0;
};
} // namespace webrtc
#endif // MODULES_AUDIO_PROCESSING_TEST_ECHO_CANCELLER_TEST_TOOLS_H_