Added a query function for whether submodules are enabled
that can be called from the render side without making APM singlethreaded. This CL is addressing the problems with high render-side call duration that were triggered by the CL https://codereview.webrtc.org/1844583003 BUG=webrtc:5736 Review URL: https://codereview.webrtc.org/1859243002 Cr-Commit-Position: refs/heads/master@{#12266}
This commit is contained in:
parent
15c51e355f
commit
dc2242d351
@ -1157,9 +1157,11 @@ bool AudioProcessingImpl::rev_synthesis_needed() const {
|
||||
bool AudioProcessingImpl::rev_analysis_needed() const {
|
||||
return formats_.rev_proc_format.sample_rate_hz() == kSampleRate32kHz &&
|
||||
(is_rev_processed() ||
|
||||
public_submodules_->echo_cancellation->is_enabled() ||
|
||||
public_submodules_->echo_control_mobile->is_enabled() ||
|
||||
public_submodules_->gain_control->is_enabled());
|
||||
public_submodules_->echo_cancellation
|
||||
->is_enabled_render_side_query() ||
|
||||
public_submodules_->echo_control_mobile
|
||||
->is_enabled_render_side_query() ||
|
||||
public_submodules_->gain_control->is_enabled_render_side_query());
|
||||
}
|
||||
|
||||
bool AudioProcessingImpl::render_check_rev_conversion_needed() const {
|
||||
|
||||
@ -275,6 +275,12 @@ int EchoCancellationImpl::Enable(bool enable) {
|
||||
return AudioProcessing::kNoError;
|
||||
}
|
||||
|
||||
bool EchoCancellationImpl::is_enabled_render_side_query() const {
|
||||
// TODO(peah): Add threadchecker.
|
||||
rtc::CritScope cs_render(crit_render_);
|
||||
return enabled_;
|
||||
}
|
||||
|
||||
bool EchoCancellationImpl::is_enabled() const {
|
||||
rtc::CritScope cs(crit_capture_);
|
||||
return enabled_;
|
||||
|
||||
@ -48,6 +48,11 @@ class EchoCancellationImpl : public EchoCancellation {
|
||||
bool is_extended_filter_enabled() const;
|
||||
bool is_aec3_enabled() const;
|
||||
|
||||
// Checks whether the module is enabled. Must only be
|
||||
// called from the render side of APM as otherwise
|
||||
// deadlocks may occur.
|
||||
bool is_enabled_render_side_query() const;
|
||||
|
||||
// Reads render side data that has been queued on the render call.
|
||||
// Called holding the capture lock.
|
||||
void ReadQueuedRenderData();
|
||||
|
||||
@ -278,6 +278,12 @@ int EchoControlMobileImpl::Enable(bool enable) {
|
||||
return AudioProcessing::kNoError;
|
||||
}
|
||||
|
||||
bool EchoControlMobileImpl::is_enabled_render_side_query() const {
|
||||
// TODO(peah): Add threadchecker.
|
||||
rtc::CritScope cs_render(crit_render_);
|
||||
return enabled_;
|
||||
}
|
||||
|
||||
bool EchoControlMobileImpl::is_enabled() const {
|
||||
rtc::CritScope cs(crit_capture_);
|
||||
return enabled_;
|
||||
|
||||
@ -43,6 +43,11 @@ class EchoControlMobileImpl : public EchoControlMobile {
|
||||
size_t num_reverse_channels,
|
||||
size_t num_output_channels);
|
||||
|
||||
// Checks whether the module is enabled. Must only be
|
||||
// called from the render side of APM as otherwise
|
||||
// deadlocks may occur.
|
||||
bool is_enabled_render_side_query() const;
|
||||
|
||||
// Reads render side data that has been queued on the render call.
|
||||
void ReadQueuedRenderData();
|
||||
|
||||
|
||||
@ -310,6 +310,12 @@ int GainControlImpl::Enable(bool enable) {
|
||||
return AudioProcessing::kNoError;
|
||||
}
|
||||
|
||||
bool GainControlImpl::is_enabled_render_side_query() const {
|
||||
// TODO(peah): Add threadchecker.
|
||||
rtc::CritScope cs(crit_render_);
|
||||
return enabled_;
|
||||
}
|
||||
|
||||
bool GainControlImpl::is_enabled() const {
|
||||
rtc::CritScope cs(crit_capture_);
|
||||
return enabled_;
|
||||
|
||||
@ -43,6 +43,11 @@ class GainControlImpl : public GainControl {
|
||||
bool is_limiter_enabled() const override;
|
||||
Mode mode() const override;
|
||||
|
||||
// Checks whether the module is enabled. Must only be
|
||||
// called from the render side of APM as otherwise
|
||||
// deadlocks may occur.
|
||||
bool is_enabled_render_side_query() const;
|
||||
|
||||
// Reads render side data that has been queued on the render call.
|
||||
void ReadQueuedRenderData();
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user