Add core multi-channel pipeline in AEC3

This CL adds basic the basic pipeline to support multi-channel
processing in AEC3.

Apart from that, it removes the 8 kHz processing support in several
places of the AEC3 code.

Bug: webrtc:10913
Change-Id: If5b75fa325ed0071deea94a7546cb4a7adf22137
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/150332
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29017}
This commit is contained in:
Per Åhgren
2019-08-30 08:54:09 +02:00
committed by Commit Bot
parent 01a49189af
commit f3a197e553
58 changed files with 1846 additions and 1137 deletions

View File

@ -22,6 +22,17 @@ EchoCanceller3Factory::EchoCanceller3Factory(const EchoCanceller3Config& config)
: config_(config) {}
std::unique_ptr<EchoControl> EchoCanceller3Factory::Create(int sample_rate_hz) {
return absl::make_unique<EchoCanceller3>(config_, sample_rate_hz);
return absl::make_unique<EchoCanceller3>(config_, sample_rate_hz,
/*num_render_channels=*/1,
/*num_capture_channels=*/1);
}
std::unique_ptr<EchoControl> EchoCanceller3Factory::Create(
int sample_rate_hz,
size_t num_render_channels,
size_t num_capture_channels) {
return absl::make_unique<EchoCanceller3>(
config_, sample_rate_hz, num_render_channels, num_capture_channels);
}
} // namespace webrtc

View File

@ -28,9 +28,16 @@ class RTC_EXPORT EchoCanceller3Factory : public EchoControlFactory {
// configuration.
explicit EchoCanceller3Factory(const EchoCanceller3Config& config);
// Creates an EchoCanceller3 running at the specified sampling rate.
// Creates an EchoCanceller3 running at the specified sampling rate using a
// mono setup
std::unique_ptr<EchoControl> Create(int sample_rate_hz) override;
// Creates an EchoCanceller3 running at the specified sampling rate and a
// specified number of channels.
std::unique_ptr<EchoControl> Create(int sample_rate_hz,
size_t num_render_channels,
size_t num_capture_channels) override;
private:
const EchoCanceller3Config config_;
};

View File

@ -48,6 +48,11 @@ class EchoControl {
class EchoControlFactory {
public:
virtual std::unique_ptr<EchoControl> Create(int sample_rate_hz) = 0;
virtual std::unique_ptr<EchoControl> Create(int sample_rate_hz,
size_t num_render_channels,
size_t num_capture_channels) {
return Create(sample_rate_hz);
}
virtual ~EchoControlFactory() = default;
};
} // namespace webrtc