From 737f4b8d12a44909814f8f481579a2e88adc834e Mon Sep 17 00:00:00 2001 From: peah Date: Thu, 10 Mar 2016 23:05:28 -0800 Subject: [PATCH] Removed the ProcessingComponent class BUG= Review URL: https://codereview.webrtc.org/1772553002 Cr-Commit-Position: refs/heads/master@{#11950} --- webrtc/modules/audio_processing/BUILD.gn | 3 +- .../audio_processing/audio_processing.gypi | 3 +- .../audio_processing/audio_processing_impl.cc | 27 ----- .../audio_processing/echo_cancellation_impl.h | 2 +- .../echo_control_mobile_impl.h | 2 +- .../audio_processing/gain_control_impl.h | 2 +- .../intelligibility_enhancer.h | 2 +- .../audio_processing/processing_component.cc | 111 ------------------ .../audio_processing/processing_component.h | 69 ----------- .../render_queue_item_verifier.h | 36 ++++++ 10 files changed, 42 insertions(+), 215 deletions(-) delete mode 100644 webrtc/modules/audio_processing/processing_component.cc delete mode 100644 webrtc/modules/audio_processing/processing_component.h create mode 100644 webrtc/modules/audio_processing/render_queue_item_verifier.h diff --git a/webrtc/modules/audio_processing/BUILD.gn b/webrtc/modules/audio_processing/BUILD.gn index 6f5a046f8b..3b49745dd6 100644 --- a/webrtc/modules/audio_processing/BUILD.gn +++ b/webrtc/modules/audio_processing/BUILD.gn @@ -86,8 +86,7 @@ source_set("audio_processing") { "logging/aec_logging_file_handling.h", "noise_suppression_impl.cc", "noise_suppression_impl.h", - "processing_component.cc", - "processing_component.h", + "render_queue_item_verifier.h", "rms_level.cc", "rms_level.h", "splitting_filter.cc", diff --git a/webrtc/modules/audio_processing/audio_processing.gypi b/webrtc/modules/audio_processing/audio_processing.gypi index 7a043581c4..77f0a14af1 100644 --- a/webrtc/modules/audio_processing/audio_processing.gypi +++ b/webrtc/modules/audio_processing/audio_processing.gypi @@ -96,8 +96,7 @@ 'logging/aec_logging_file_handling.h', 'noise_suppression_impl.cc', 'noise_suppression_impl.h', - 'processing_component.cc', - 'processing_component.h', + 'render_queue_item_verifier.h', 'rms_level.cc', 'rms_level.h', 'splitting_filter.cc', diff --git a/webrtc/modules/audio_processing/audio_processing_impl.cc b/webrtc/modules/audio_processing/audio_processing_impl.cc index 37a824b404..67dcd9004a 100644 --- a/webrtc/modules/audio_processing/audio_processing_impl.cc +++ b/webrtc/modules/audio_processing/audio_processing_impl.cc @@ -33,7 +33,6 @@ #include "webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer.h" #include "webrtc/modules/audio_processing/level_estimator_impl.h" #include "webrtc/modules/audio_processing/noise_suppression_impl.h" -#include "webrtc/modules/audio_processing/processing_component.h" #include "webrtc/modules/audio_processing/transient/transient_suppressor.h" #include "webrtc/modules/audio_processing/voice_detection_impl.h" #include "webrtc/modules/include/module_common_types.h" @@ -101,7 +100,6 @@ struct AudioProcessingImpl::ApmPrivateSubmodules { explicit ApmPrivateSubmodules(Beamformer* beamformer) : beamformer(beamformer) {} // Accessed internally from capture or during initialization - std::list component_list; std::unique_ptr> beamformer; std::unique_ptr agc_manager; }; @@ -197,13 +195,6 @@ AudioProcessingImpl::~AudioProcessingImpl() { private_submodules_->agc_manager.reset(); // Depends on gain_control_. public_submodules_->gain_control_for_experimental_agc.reset(); - while (!private_submodules_->component_list.empty()) { - ProcessingComponent* component = - private_submodules_->component_list.front(); - component->Destroy(); - delete component; - private_submodules_->component_list.pop_front(); - } #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP if (debug_dump_.debug_file->Open()) { @@ -308,14 +299,6 @@ int AudioProcessingImpl::InitializeLocked() { fwd_audio_buffer_channels, formats_.api_format.output_stream().num_frames())); - // Initialize all components. - for (auto item : private_submodules_->component_list) { - int err = item->Initialize(); - if (err != kNoError) { - return err; - } - } - InitializeGainController(); InitializeEchoCanceller(); InitializeEchoControlMobile(); @@ -416,9 +399,6 @@ void AudioProcessingImpl::SetExtraOptions(const Config& config) { // Run in a single-threaded manner when setting the extra options. rtc::CritScope cs_render(&crit_render_); rtc::CritScope cs_capture(&crit_capture_); - for (auto item : private_submodules_->component_list) { - item->SetExtraOptions(config); - } public_submodules_->echo_cancellation->SetExtraOptions(config); @@ -1131,13 +1111,6 @@ bool AudioProcessingImpl::is_data_processed() const { return true; } - // All of the private submodules modify the data. - for (auto item : private_submodules_->component_list) { - if (item->is_component_enabled()) { - return true; - } - } - // The capture data is otherwise unchanged. return false; } diff --git a/webrtc/modules/audio_processing/echo_cancellation_impl.h b/webrtc/modules/audio_processing/echo_cancellation_impl.h index 935e7209a8..dccef332a3 100644 --- a/webrtc/modules/audio_processing/echo_cancellation_impl.h +++ b/webrtc/modules/audio_processing/echo_cancellation_impl.h @@ -17,7 +17,7 @@ #include "webrtc/base/criticalsection.h" #include "webrtc/common_audio/swap_queue.h" #include "webrtc/modules/audio_processing/include/audio_processing.h" -#include "webrtc/modules/audio_processing/processing_component.h" +#include "webrtc/modules/audio_processing/render_queue_item_verifier.h" namespace webrtc { diff --git a/webrtc/modules/audio_processing/echo_control_mobile_impl.h b/webrtc/modules/audio_processing/echo_control_mobile_impl.h index 6f2c28dec0..f565ab225e 100644 --- a/webrtc/modules/audio_processing/echo_control_mobile_impl.h +++ b/webrtc/modules/audio_processing/echo_control_mobile_impl.h @@ -17,7 +17,7 @@ #include "webrtc/base/criticalsection.h" #include "webrtc/common_audio/swap_queue.h" #include "webrtc/modules/audio_processing/include/audio_processing.h" -#include "webrtc/modules/audio_processing/processing_component.h" +#include "webrtc/modules/audio_processing/render_queue_item_verifier.h" namespace webrtc { diff --git a/webrtc/modules/audio_processing/gain_control_impl.h b/webrtc/modules/audio_processing/gain_control_impl.h index 54b8ea7920..b5fe1e33ec 100644 --- a/webrtc/modules/audio_processing/gain_control_impl.h +++ b/webrtc/modules/audio_processing/gain_control_impl.h @@ -19,7 +19,7 @@ #include "webrtc/base/thread_annotations.h" #include "webrtc/common_audio/swap_queue.h" #include "webrtc/modules/audio_processing/include/audio_processing.h" -#include "webrtc/modules/audio_processing/processing_component.h" +#include "webrtc/modules/audio_processing/render_queue_item_verifier.h" namespace webrtc { diff --git a/webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer.h b/webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer.h index c857661473..940b9c53e4 100644 --- a/webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer.h +++ b/webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer.h @@ -19,7 +19,7 @@ #include "webrtc/common_audio/channel_buffer.h" #include "webrtc/common_audio/swap_queue.h" #include "webrtc/modules/audio_processing/intelligibility/intelligibility_utils.h" -#include "webrtc/modules/audio_processing/processing_component.h" +#include "webrtc/modules/audio_processing/render_queue_item_verifier.h" #include "webrtc/modules/audio_processing/vad/voice_activity_detector.h" namespace webrtc { diff --git a/webrtc/modules/audio_processing/processing_component.cc b/webrtc/modules/audio_processing/processing_component.cc deleted file mode 100644 index 7abd8e2100..0000000000 --- a/webrtc/modules/audio_processing/processing_component.cc +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#include "webrtc/modules/audio_processing/processing_component.h" - -#include - -#include "webrtc/modules/audio_processing/include/audio_processing.h" - -namespace webrtc { - -ProcessingComponent::ProcessingComponent() - : initialized_(false), - enabled_(false), - num_handles_(0) {} - -ProcessingComponent::~ProcessingComponent() { - assert(initialized_ == false); -} - -int ProcessingComponent::Destroy() { - while (!handles_.empty()) { - DestroyHandle(handles_.back()); - handles_.pop_back(); - } - initialized_ = false; - - return AudioProcessing::kNoError; -} - -int ProcessingComponent::EnableComponent(bool enable) { - if (enable && !enabled_) { - enabled_ = enable; // Must be set before Initialize() is called. - - int err = Initialize(); - if (err != AudioProcessing::kNoError) { - enabled_ = false; - return err; - } - } else { - enabled_ = enable; - } - - return AudioProcessing::kNoError; -} - -bool ProcessingComponent::is_component_enabled() const { - return enabled_; -} - -void* ProcessingComponent::handle(size_t index) const { - assert(index < num_handles_); - return handles_[index]; -} - -size_t ProcessingComponent::num_handles() const { - return num_handles_; -} - -int ProcessingComponent::Initialize() { - if (!enabled_) { - return AudioProcessing::kNoError; - } - - num_handles_ = num_handles_required(); - if (num_handles_ > handles_.size()) { - handles_.resize(num_handles_, NULL); - } - - assert(handles_.size() >= num_handles_); - for (size_t i = 0; i < num_handles_; i++) { - if (handles_[i] == NULL) { - handles_[i] = CreateHandle(); - if (handles_[i] == NULL) { - return AudioProcessing::kCreationFailedError; - } - } - - int err = InitializeHandle(handles_[i]); - if (err != AudioProcessing::kNoError) { - return GetHandleError(handles_[i]); - } - } - - initialized_ = true; - return Configure(); -} - -int ProcessingComponent::Configure() { - if (!initialized_) { - return AudioProcessing::kNoError; - } - - assert(handles_.size() >= num_handles_); - for (size_t i = 0; i < num_handles_; i++) { - int err = ConfigureHandle(handles_[i]); - if (err != AudioProcessing::kNoError) { - return GetHandleError(handles_[i]); - } - } - - return AudioProcessing::kNoError; -} -} // namespace webrtc diff --git a/webrtc/modules/audio_processing/processing_component.h b/webrtc/modules/audio_processing/processing_component.h deleted file mode 100644 index 577f1570ad..0000000000 --- a/webrtc/modules/audio_processing/processing_component.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#ifndef WEBRTC_MODULES_AUDIO_PROCESSING_PROCESSING_COMPONENT_H_ -#define WEBRTC_MODULES_AUDIO_PROCESSING_PROCESSING_COMPONENT_H_ - -#include - -#include "webrtc/common.h" - -namespace webrtc { - -// Functor to use when supplying a verifier function for the queue item -// verifcation. -template -class RenderQueueItemVerifier { - public: - explicit RenderQueueItemVerifier(size_t minimum_capacity) - : minimum_capacity_(minimum_capacity) {} - - bool operator()(const std::vector& v) const { - return v.capacity() >= minimum_capacity_; - } - - private: - size_t minimum_capacity_; -}; - -class ProcessingComponent { - public: - ProcessingComponent(); - virtual ~ProcessingComponent(); - - virtual int Initialize(); - virtual void SetExtraOptions(const Config& config) {} - virtual int Destroy(); - - bool is_component_enabled() const; - - protected: - virtual int Configure(); - int EnableComponent(bool enable); - void* handle(size_t index) const; - size_t num_handles() const; - - private: - virtual void* CreateHandle() const = 0; - virtual int InitializeHandle(void* handle) const = 0; - virtual int ConfigureHandle(void* handle) const = 0; - virtual void DestroyHandle(void* handle) const = 0; - virtual size_t num_handles_required() const = 0; - virtual int GetHandleError(void* handle) const = 0; - - std::vector handles_; - bool initialized_; - bool enabled_; - size_t num_handles_; -}; - -} // namespace webrtc - -#endif // WEBRTC_MODULES_AUDIO_PROCESSING_PROCESSING_COMPONENT_H__ diff --git a/webrtc/modules/audio_processing/render_queue_item_verifier.h b/webrtc/modules/audio_processing/render_queue_item_verifier.h new file mode 100644 index 0000000000..a7fbbb42db --- /dev/null +++ b/webrtc/modules/audio_processing/render_queue_item_verifier.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + +#ifndef WEBRTC_MODULES_AUDIO_PROCESSING_RENDER_QUEUE_ITEM_VERIFIER_H_ +#define WEBRTC_MODULES_AUDIO_PROCESSING_RENDER_QUEUE_ITEM_VERIFIER_H_ + +#include + +namespace webrtc { + +// Functor to use when supplying a verifier function for the queue item +// verifcation. +template +class RenderQueueItemVerifier { + public: + explicit RenderQueueItemVerifier(size_t minimum_capacity) + : minimum_capacity_(minimum_capacity) {} + + bool operator()(const std::vector& v) const { + return v.capacity() >= minimum_capacity_; + } + + private: + size_t minimum_capacity_; +}; + +} // namespace webrtc + +#endif // WEBRTC_MODULES_AUDIO_PROCESSING_RENDER_QUEUE_ITEM_VERIFIER_H__