Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(236)

Unified Diff: webrtc/modules/audio_processing/audio_processing_impl.cc

Issue 1422013002: Preparational work for an upcoming addition of a threadchecking scheme for APM (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@bundling_of_state_CL
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 b98aad23da37cd98b4df153234ea1f2980ef78d4..d6795a518705b54c6627caaeb4fe62e9ff2bbcec 100644
--- a/webrtc/modules/audio_processing/audio_processing_impl.cc
+++ b/webrtc/modules/audio_processing/audio_processing_impl.cc
@@ -222,13 +222,16 @@ AudioProcessingImpl::AudioProcessingImpl(const Config& config,
beamformer_(beamformer),
array_geometry_(config.Get<Beamforming>().array_geometry),
intelligibility_enabled_(config.Get<Intelligibility>().enabled) {
- echo_cancellation_ = new EchoCancellationImpl(this, crit_);
+ echo_cancellation_ =
+ new EchoCancellationImpl(this, crit_, &render_thread_, &capture_thread_);
component_list_.push_back(echo_cancellation_);
- echo_control_mobile_ = new EchoControlMobileImpl(this, crit_);
+ echo_control_mobile_ =
+ new EchoControlMobileImpl(this, crit_, &render_thread_, &capture_thread_);
component_list_.push_back(echo_control_mobile_);
- gain_control_ = new GainControlImpl(this, crit_);
+ gain_control_ =
+ new GainControlImpl(this, crit_, &render_thread_, &capture_thread_);
component_list_.push_back(gain_control_);
high_pass_filter_ = new HighPassFilterImpl(this, crit_);
@@ -237,15 +240,18 @@ AudioProcessingImpl::AudioProcessingImpl(const Config& config,
level_estimator_ = new LevelEstimatorImpl(this, crit_);
component_list_.push_back(level_estimator_);
- noise_suppression_ = new NoiseSuppressionImpl(this, crit_);
+ noise_suppression_ = new NoiseSuppressionImpl(this, crit_, &capture_thread_);
component_list_.push_back(noise_suppression_);
- voice_detection_ = new VoiceDetectionImpl(this, crit_);
+ voice_detection_ = new VoiceDetectionImpl(this, crit_, &capture_thread_);
component_list_.push_back(voice_detection_);
gain_control_for_new_agc_.reset(new GainControlForNewAgc(gain_control_));
SetExtraOptions(config);
+
+ render_thread_.DetachFromThread();
+ capture_thread_.DetachFromThread();
kwiberg-webrtc 2015/10/26 13:57:56 Move these as high up as possible, so that you nev
peah-webrtc 2015/11/05 11:47:33 I'm not convinced this is the right thing to do. I
kwiberg-webrtc 2015/11/08 09:50:51 Yes, that's exactly the sort of behavior you prote
}
AudioProcessingImpl::~AudioProcessingImpl() {
@@ -452,7 +458,6 @@ int AudioProcessingImpl::InitializeLocked(const ProcessingConfig& config) {
return InitializeLocked();
}
-
void AudioProcessingImpl::SetExtraOptions(const Config& config) {
CriticalSectionScoped crit_scoped(crit_);
for (auto item : component_list_) {
@@ -488,6 +493,7 @@ int AudioProcessingImpl::num_output_channels() const {
void AudioProcessingImpl::set_output_will_be_muted(bool muted) {
CriticalSectionScoped lock(crit_);
+ RTC_DCHECK(capture_thread_.CalledOnValidThread());
output_will_be_muted_ = muted;
if (agc_manager_.get()) {
agc_manager_->SetCaptureMuted(output_will_be_muted_);
@@ -503,6 +509,7 @@ int AudioProcessingImpl::ProcessStream(const float* const* src,
ChannelLayout output_layout,
float* const* dest) {
CriticalSectionScoped crit_scoped(crit_);
+ RTC_DCHECK(capture_thread_.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));
@@ -524,6 +531,7 @@ int AudioProcessingImpl::ProcessStream(const float* const* src,
const StreamConfig& output_config,
float* const* dest) {
CriticalSectionScoped crit_scoped(crit_);
+ RTC_DCHECK(capture_thread_.CalledOnValidThread());
if (!src || !dest) {
return kNullPointerError;
}
@@ -575,6 +583,7 @@ int AudioProcessingImpl::ProcessStream(const float* const* src,
int AudioProcessingImpl::ProcessStream(AudioFrame* frame) {
CriticalSectionScoped crit_scoped(crit_);
+ RTC_DCHECK(capture_thread_.CalledOnValidThread());
echo_cancellation_->ReadQueuedRenderData();
echo_control_mobile_->ReadQueuedRenderData();
gain_control_->ReadQueuedRenderData();
@@ -719,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_.CalledOnValidThread());
const StreamConfig reverse_config = {
rev_sample_rate_hz, ChannelsFromLayout(layout), LayoutHasKeyboard(layout),
};
@@ -733,6 +743,7 @@ int AudioProcessingImpl::ProcessReverseStream(
const StreamConfig& reverse_input_config,
const StreamConfig& reverse_output_config,
float* const* dest) {
+ RTC_DCHECK(render_thread_.CalledOnValidThread());
RETURN_ON_ERR(
AnalyzeReverseStream(src, reverse_input_config, reverse_output_config));
if (is_rev_processed()) {
@@ -791,6 +802,7 @@ int AudioProcessingImpl::AnalyzeReverseStream(
}
int AudioProcessingImpl::ProcessReverseStream(AudioFrame* frame) {
+ RTC_DCHECK(render_thread_.CalledOnValidThread());
RETURN_ON_ERR(AnalyzeReverseStream(frame));
if (is_rev_processed()) {
render_audio_->InterleaveTo(frame, true);
@@ -800,6 +812,7 @@ int AudioProcessingImpl::ProcessReverseStream(AudioFrame* frame) {
}
int AudioProcessingImpl::AnalyzeReverseStream(AudioFrame* frame) {
+ RTC_DCHECK(render_thread_.CalledOnValidThread());
CriticalSectionScoped crit_scoped(crit_);
if (frame == NULL) {
return kNullPointerError;
@@ -877,6 +890,7 @@ int AudioProcessingImpl::ProcessReverseStreamLocked() {
}
int AudioProcessingImpl::set_stream_delay_ms(int delay) {
+ RTC_DCHECK(capture_thread_.CalledOnValidThread());
Error retval = kNoError;
was_stream_delay_set_ = true;
delay += delay_offset_ms_;
@@ -897,6 +911,7 @@ int AudioProcessingImpl::set_stream_delay_ms(int delay) {
}
int AudioProcessingImpl::stream_delay_ms() const {
+ RTC_DCHECK(capture_thread_.CalledOnValidThread());
return stream_delay_ms_;
}
@@ -905,15 +920,18 @@ bool AudioProcessingImpl::was_stream_delay_set() const {
}
void AudioProcessingImpl::set_stream_key_pressed(bool key_pressed) {
+ RTC_DCHECK(capture_thread_.CalledOnValidThread());
key_pressed_ = key_pressed;
}
void AudioProcessingImpl::set_delay_offset_ms(int offset) {
+ RTC_DCHECK(capture_thread_.CalledOnValidThread());
CriticalSectionScoped crit_scoped(crit_);
delay_offset_ms_ = offset;
}
int AudioProcessingImpl::delay_offset_ms() const {
+ RTC_DCHECK(capture_thread_.CalledOnValidThread());
return delay_offset_ms_;
}

Powered by Google App Engine
This is Rietveld 408576698