Make LevelEstimation not a ProcessingComponent.

BUG=webrtc:5355

Review URL: https://codereview.webrtc.org/1523483002

Cr-Commit-Position: refs/heads/master@{#11033}
This commit is contained in:
solenberg
2015-12-15 11:39:38 -08:00
committed by Commit bot
parent 5e0218c66e
commit 949028fbf1
4 changed files with 50 additions and 77 deletions

View File

@ -11,83 +11,55 @@
#include "webrtc/modules/audio_processing/level_estimator_impl.h"
#include "webrtc/modules/audio_processing/audio_buffer.h"
#include "webrtc/modules/audio_processing/include/audio_processing.h"
#include "webrtc/modules/audio_processing/rms_level.h"
#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
namespace webrtc {
LevelEstimatorImpl::LevelEstimatorImpl(const AudioProcessing* apm,
rtc::CriticalSection* crit)
: ProcessingComponent(), crit_(crit) {
RTC_DCHECK(apm);
LevelEstimatorImpl::LevelEstimatorImpl(rtc::CriticalSection* crit)
: crit_(crit), rms_(new RMSLevel()) {
RTC_DCHECK(crit);
}
LevelEstimatorImpl::~LevelEstimatorImpl() {}
int LevelEstimatorImpl::ProcessStream(AudioBuffer* audio) {
void LevelEstimatorImpl::Initialize() {
rtc::CritScope cs(crit_);
rms_->Reset();
}
if (!is_component_enabled()) {
return AudioProcessing::kNoError;
void LevelEstimatorImpl::ProcessStream(AudioBuffer* audio) {
RTC_DCHECK(audio);
rtc::CritScope cs(crit_);
if (!enabled_) {
return;
}
RMSLevel* rms_level = static_cast<RMSLevel*>(handle(0));
for (int i = 0; i < audio->num_channels(); ++i) {
rms_level->Process(audio->channels_const()[i],
audio->num_frames());
for (int i = 0; i < audio->num_channels(); i++) {
rms_->Process(audio->channels_const()[i], audio->num_frames());
}
return AudioProcessing::kNoError;
}
int LevelEstimatorImpl::Enable(bool enable) {
rtc::CritScope cs(crit_);
return EnableComponent(enable);
if (enable && !enabled_) {
rms_->Reset();
}
enabled_ = enable;
return AudioProcessing::kNoError;
}
bool LevelEstimatorImpl::is_enabled() const {
rtc::CritScope cs(crit_);
return is_component_enabled();
return enabled_;
}
int LevelEstimatorImpl::RMS() {
rtc::CritScope cs(crit_);
if (!is_component_enabled()) {
if (!enabled_) {
return AudioProcessing::kNotEnabledError;
}
RMSLevel* rms_level = static_cast<RMSLevel*>(handle(0));
return rms_level->RMS();
return rms_->RMS();
}
// The ProcessingComponent implementation is pretty weird in this class since
// we have only a single instance of the trivial underlying component.
void* LevelEstimatorImpl::CreateHandle() const {
return new RMSLevel;
}
void LevelEstimatorImpl::DestroyHandle(void* handle) const {
delete static_cast<RMSLevel*>(handle);
}
int LevelEstimatorImpl::InitializeHandle(void* handle) const {
rtc::CritScope cs(crit_);
static_cast<RMSLevel*>(handle)->Reset();
return AudioProcessing::kNoError;
}
int LevelEstimatorImpl::ConfigureHandle(void* /*handle*/) const {
return AudioProcessing::kNoError;
}
int LevelEstimatorImpl::num_handles_required() const {
return 1;
}
int LevelEstimatorImpl::GetHandleError(void* /*handle*/) const {
return AudioProcessing::kUnspecifiedError;
}
} // namespace webrtc