Index: webrtc/modules/audio_processing/audio_processing_impl.cc |
diff --git a/webrtc/modules/audio_processing/audio_processing_impl.cc b/webrtc/modules/audio_processing/audio_processing_impl.cc |
index 48f23b18563754d2db7159042cf5eee2fa525c96..0f34d44715184177c91f3138304403b7dd5d2d87 100644 |
--- a/webrtc/modules/audio_processing/audio_processing_impl.cc |
+++ b/webrtc/modules/audio_processing/audio_processing_impl.cc |
@@ -89,7 +89,7 @@ struct AudioProcessingImpl::ApmPublicSubmodules { |
EchoCancellationImpl* echo_cancellation; |
EchoControlMobileImpl* echo_control_mobile; |
GainControlImpl* gain_control; |
- HighPassFilterImpl* high_pass_filter; |
+ rtc::scoped_ptr<HighPassFilterImpl> high_pass_filter; |
LevelEstimatorImpl* level_estimator; |
NoiseSuppressionImpl* noise_suppression; |
VoiceDetectionImpl* voice_detection; |
@@ -243,8 +243,8 @@ AudioProcessingImpl::AudioProcessingImpl(const Config& config, |
new EchoControlMobileImpl(this, &crit_render_, &crit_capture_); |
public_submodules_->gain_control = |
new GainControlImpl(this, &crit_capture_, &crit_capture_); |
- public_submodules_->high_pass_filter = |
- new HighPassFilterImpl(this, &crit_capture_); |
+ public_submodules_->high_pass_filter.reset( |
+ new HighPassFilterImpl(&crit_capture_)); |
public_submodules_->level_estimator = |
new LevelEstimatorImpl(this, &crit_capture_); |
public_submodules_->noise_suppression = |
@@ -261,8 +261,6 @@ AudioProcessingImpl::AudioProcessingImpl(const Config& config, |
private_submodules_->component_list.push_back( |
public_submodules_->gain_control); |
private_submodules_->component_list.push_back( |
- public_submodules_->high_pass_filter); |
- private_submodules_->component_list.push_back( |
public_submodules_->level_estimator); |
private_submodules_->component_list.push_back( |
public_submodules_->noise_suppression); |
@@ -406,6 +404,8 @@ int AudioProcessingImpl::InitializeLocked() { |
InitializeIntelligibility(); |
+ InitializeHighPassFilter(); |
+ |
#ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
if (debug_dump_.debug_file->Open()) { |
int err = WriteInitMessage(); |
@@ -767,7 +767,7 @@ int AudioProcessingImpl::ProcessStreamLocked() { |
ca->set_num_channels(1); |
} |
- RETURN_ON_ERR(public_submodules_->high_pass_filter->ProcessCaptureAudio(ca)); |
+ public_submodules_->high_pass_filter->ProcessCaptureAudio(ca); |
RETURN_ON_ERR(public_submodules_->gain_control->AnalyzeCaptureAudio(ca)); |
RETURN_ON_ERR(public_submodules_->noise_suppression->AnalyzeCaptureAudio(ca)); |
RETURN_ON_ERR(public_submodules_->echo_cancellation->ProcessCaptureAudio(ca)); |
@@ -1147,7 +1147,7 @@ GainControl* AudioProcessingImpl::gain_control() const { |
HighPassFilter* AudioProcessingImpl::high_pass_filter() const { |
// Adding a lock here has no effect as it allows any access to the submodule |
// from the returned pointer. |
- return public_submodules_->high_pass_filter; |
+ return public_submodules_->high_pass_filter.get(); |
} |
LevelEstimator* AudioProcessingImpl::level_estimator() const { |
@@ -1293,6 +1293,12 @@ void AudioProcessingImpl::InitializeIntelligibility() { |
} |
} |
+void AudioProcessingImpl::InitializeHighPassFilter() { |
+ int channels = num_output_channels(); |
peah-webrtc
2015/12/08 14:52:27
Why are the number of output channels and sample r
the sun
2015/12/08 15:08:05
Done.
|
+ int sample_rate_hz = proc_sample_rate_hz(); |
+ public_submodules_->high_pass_filter->Initialize(channels, sample_rate_hz); |
+} |
+ |
void AudioProcessingImpl::MaybeUpdateHistograms() { |
static const int kMinDiffDelayMs = 60; |