Pull out the PostFilter to its own NonlinearBeamformer API

This is done to avoid having a nonlinear component in the AEC path.
Now the linear delay and sum is run before the AEC and the postfilter after it.

This change landed originally at: https://codereview.webrtc.org/1982183002/

R=peah@webrtc.org
TBR=henrik.lundin@webrtc.org

Review URL: https://codereview.webrtc.org/2110593003 .

Cr-Commit-Position: refs/heads/master@{#13371}
This commit is contained in:
Alejandro Luebs
2016-07-01 17:19:09 -07:00
parent 1aa821980d
commit f4022ffa1a
13 changed files with 193 additions and 186 deletions

View File

@ -36,8 +36,7 @@ namespace webrtc {
class AgcManagerDirect;
class AudioConverter;
template<typename T>
class Beamformer;
class NonlinearBeamformer;
class AudioProcessingImpl : public AudioProcessing {
public:
@ -45,7 +44,7 @@ class AudioProcessingImpl : public AudioProcessing {
// Acquires both the render and capture locks.
explicit AudioProcessingImpl(const Config& config);
// AudioProcessingImpl takes ownership of beamformer.
AudioProcessingImpl(const Config& config, Beamformer<float>* beamformer);
AudioProcessingImpl(const Config& config, NonlinearBeamformer* beamformer);
virtual ~AudioProcessingImpl();
int Initialize() override;
int Initialize(int input_sample_rate_hz,