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 f4977d4b01f8a507545dc46ccc17a16a1ea60c43..3821e390e41b559462c16ead39f004c3a8ab541f 100644 |
--- a/webrtc/modules/audio_processing/audio_processing_impl.cc |
+++ b/webrtc/modules/audio_processing/audio_processing_impl.cc |
@@ -223,13 +223,19 @@ AudioProcessingImpl::AudioProcessingImpl(const Config& config, |
array_geometry_(config.Get<Beamforming>().array_geometry), |
target_direction_(config.Get<Beamforming>().target_direction), |
intelligibility_enabled_(config.Get<Intelligibility>().enabled) { |
- echo_cancellation_ = new EchoCancellationImpl(this, crit_); |
+ render_thread_checker_.DetachFromThread(); |
+ capture_thread_checker_.DetachFromThread(); |
+ |
+ echo_cancellation_ = |
+ new EchoCancellationImpl(this, crit_, &render_thread_checker_); |
component_list_.push_back(echo_cancellation_); |
- echo_control_mobile_ = new EchoControlMobileImpl(this, crit_); |
+ echo_control_mobile_ = |
+ new EchoControlMobileImpl(this, crit_, &render_thread_checker_); |
component_list_.push_back(echo_control_mobile_); |
- gain_control_ = new GainControlImpl(this, crit_); |
+ gain_control_ = new GainControlImpl(this, crit_, &render_thread_checker_, |
+ &capture_thread_checker_); |
component_list_.push_back(gain_control_); |
high_pass_filter_ = new HighPassFilterImpl(this, crit_); |
@@ -453,7 +459,6 @@ int AudioProcessingImpl::InitializeLocked(const ProcessingConfig& config) { |
return InitializeLocked(); |
} |
- |
void AudioProcessingImpl::SetExtraOptions(const Config& config) { |
CriticalSectionScoped crit_scoped(crit_); |
for (auto item : component_list_) { |
@@ -489,6 +494,7 @@ int AudioProcessingImpl::num_output_channels() const { |
void AudioProcessingImpl::set_output_will_be_muted(bool muted) { |
CriticalSectionScoped lock(crit_); |
+ RTC_DCHECK(capture_thread_checker_.CalledOnValidThread()); |
output_will_be_muted_ = muted; |
if (agc_manager_.get()) { |
agc_manager_->SetCaptureMuted(output_will_be_muted_); |
@@ -504,6 +510,7 @@ int AudioProcessingImpl::ProcessStream(const float* const* src, |
ChannelLayout output_layout, |
float* const* dest) { |
CriticalSectionScoped crit_scoped(crit_); |
+ RTC_DCHECK(capture_thread_checker_.CalledOnValidThread()); |
StreamConfig input_stream = shared_state_.api_format_.input_stream(); |
input_stream.set_sample_rate_hz(input_sample_rate_hz); |
input_stream.set_num_channels(ChannelsFromLayout(input_layout)); |
@@ -525,6 +532,7 @@ int AudioProcessingImpl::ProcessStream(const float* const* src, |
const StreamConfig& output_config, |
float* const* dest) { |
CriticalSectionScoped crit_scoped(crit_); |
+ RTC_DCHECK(capture_thread_checker_.CalledOnValidThread()); |
if (!src || !dest) { |
return kNullPointerError; |
} |
@@ -720,6 +728,7 @@ int AudioProcessingImpl::AnalyzeReverseStream(const float* const* data, |
size_t samples_per_channel, |
int rev_sample_rate_hz, |
ChannelLayout layout) { |
+ RTC_DCHECK(render_thread_checker_.CalledOnValidThread()); |
const StreamConfig reverse_config = { |
rev_sample_rate_hz, ChannelsFromLayout(layout), LayoutHasKeyboard(layout), |
}; |
@@ -734,6 +743,7 @@ int AudioProcessingImpl::ProcessReverseStream( |
const StreamConfig& reverse_input_config, |
const StreamConfig& reverse_output_config, |
float* const* dest) { |
+ RTC_DCHECK(render_thread_checker_.CalledOnValidThread()); |
RETURN_ON_ERR( |
AnalyzeReverseStream(src, reverse_input_config, reverse_output_config)); |
if (is_rev_processed()) { |
@@ -792,6 +802,7 @@ int AudioProcessingImpl::AnalyzeReverseStream( |
} |
int AudioProcessingImpl::ProcessReverseStream(AudioFrame* frame) { |
+ RTC_DCHECK(render_thread_checker_.CalledOnValidThread()); |
RETURN_ON_ERR(AnalyzeReverseStream(frame)); |
if (is_rev_processed()) { |
render_audio_->InterleaveTo(frame, true); |
@@ -801,6 +812,7 @@ int AudioProcessingImpl::ProcessReverseStream(AudioFrame* frame) { |
} |
int AudioProcessingImpl::AnalyzeReverseStream(AudioFrame* frame) { |
+ RTC_DCHECK(render_thread_checker_.CalledOnValidThread()); |
CriticalSectionScoped crit_scoped(crit_); |
if (frame == NULL) { |
return kNullPointerError; |
@@ -910,11 +922,13 @@ void AudioProcessingImpl::set_stream_key_pressed(bool key_pressed) { |
} |
void AudioProcessingImpl::set_delay_offset_ms(int offset) { |
+ RTC_DCHECK(capture_thread_checker_.CalledOnValidThread()); |
CriticalSectionScoped crit_scoped(crit_); |
delay_offset_ms_ = offset; |
} |
int AudioProcessingImpl::delay_offset_ms() const { |
+ RTC_DCHECK(capture_thread_checker_.CalledOnValidThread()); |
return delay_offset_ms_; |
} |