Corresponds to upstream commit 524e9b043e7e86fd72353b987c9d5f6a1ebf83e1 Update notes: * Pull in third party license file * Replace .gypi files with BUILD.gn to keep track of what changes upstream * Bunch of new filse pulled in as dependencies * Won't build yet due to changes needed on top of these
112 lines
2.7 KiB
C++
112 lines
2.7 KiB
C++
/*
|
|
* 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 <assert.h>
|
|
|
|
#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(int index) const {
|
|
assert(index < num_handles_);
|
|
return handles_[index];
|
|
}
|
|
|
|
int ProcessingComponent::num_handles() const {
|
|
return num_handles_;
|
|
}
|
|
|
|
int ProcessingComponent::Initialize() {
|
|
if (!enabled_) {
|
|
return AudioProcessing::kNoError;
|
|
}
|
|
|
|
num_handles_ = num_handles_required();
|
|
if (num_handles_ > static_cast<int>(handles_.size())) {
|
|
handles_.resize(num_handles_, NULL);
|
|
}
|
|
|
|
assert(static_cast<int>(handles_.size()) >= num_handles_);
|
|
for (int 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(static_cast<int>(handles_.size()) >= num_handles_);
|
|
for (int i = 0; i < num_handles_; i++) {
|
|
int err = ConfigureHandle(handles_[i]);
|
|
if (err != AudioProcessing::kNoError) {
|
|
return GetHandleError(handles_[i]);
|
|
}
|
|
}
|
|
|
|
return AudioProcessing::kNoError;
|
|
}
|
|
} // namespace webrtc
|