| Index: webrtc/modules/audio_processing/agc/circular_buffer.cc
|
| diff --git a/webrtc/modules/audio_processing/agc/circular_buffer.cc b/webrtc/modules/audio_processing/agc/circular_buffer.cc
|
| deleted file mode 100644
|
| index 8ecb76008f7de71e14234daa8524010caa883747..0000000000000000000000000000000000000000
|
| --- a/webrtc/modules/audio_processing/agc/circular_buffer.cc
|
| +++ /dev/null
|
| @@ -1,136 +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.
|
| - */
|
| -
|
| -#include "webrtc/modules/audio_processing/agc/circular_buffer.h"
|
| -
|
| -#include <assert.h>
|
| -#include <stdlib.h>
|
| -
|
| -namespace webrtc {
|
| -
|
| -AgcCircularBuffer::AgcCircularBuffer(int buffer_size)
|
| - : buffer_(new double[buffer_size]),
|
| - is_full_(false),
|
| - index_(0),
|
| - buffer_size_(buffer_size),
|
| - sum_(0) {}
|
| -
|
| -AgcCircularBuffer::~AgcCircularBuffer() {}
|
| -
|
| -void AgcCircularBuffer::Reset() {
|
| - is_full_ = false;
|
| - index_ = 0;
|
| - sum_ = 0;
|
| -}
|
| -
|
| -AgcCircularBuffer* AgcCircularBuffer::Create(int buffer_size) {
|
| - if (buffer_size <= 0)
|
| - return NULL;
|
| - return new AgcCircularBuffer(buffer_size);
|
| -}
|
| -
|
| -double AgcCircularBuffer::Oldest() const {
|
| - if (!is_full_)
|
| - return buffer_[0];
|
| - else
|
| - return buffer_[index_];
|
| -}
|
| -
|
| -double AgcCircularBuffer::Mean() {
|
| - double m;
|
| - if (is_full_) {
|
| - m = sum_ / buffer_size_;
|
| - } else {
|
| - if (index_ > 0)
|
| - m = sum_ / index_;
|
| - else
|
| - m = 0;
|
| - }
|
| - return m;
|
| -}
|
| -
|
| -void AgcCircularBuffer::Insert(double value) {
|
| - if (is_full_) {
|
| - sum_ -= buffer_[index_];
|
| - }
|
| - sum_ += value;
|
| - buffer_[index_] = value;
|
| - index_++;
|
| - if (index_ >= buffer_size_) {
|
| - is_full_ = true;
|
| - index_ = 0;
|
| - }
|
| -}
|
| -int AgcCircularBuffer::BufferLevel() {
|
| - if (is_full_)
|
| - return buffer_size_;
|
| - return index_;
|
| -}
|
| -
|
| -int AgcCircularBuffer::Get(int index, double* value) const {
|
| - int err = ConvertToLinearIndex(&index);
|
| - if (err < 0)
|
| - return -1;
|
| - *value = buffer_[index];
|
| - return 0;
|
| -}
|
| -
|
| -int AgcCircularBuffer::Set(int index, double value) {
|
| - int err = ConvertToLinearIndex(&index);
|
| - if (err < 0)
|
| - return -1;
|
| -
|
| - sum_ -= buffer_[index];
|
| - buffer_[index] = value;
|
| - sum_ += value;
|
| - return 0;
|
| -}
|
| -
|
| -int AgcCircularBuffer::ConvertToLinearIndex(int* index) const {
|
| - if (*index < 0 || *index >= buffer_size_)
|
| - return -1;
|
| -
|
| - if (!is_full_ && *index >= index_)
|
| - return -1;
|
| -
|
| - *index = index_ - 1 - *index;
|
| - if (*index < 0)
|
| - *index += buffer_size_;
|
| - return 0;
|
| -}
|
| -
|
| -int AgcCircularBuffer::RemoveTransient(int width_threshold,
|
| - double val_threshold) {
|
| - if (!is_full_ && index_ < width_threshold + 2)
|
| - return 0;
|
| -
|
| - int index_1 = 0;
|
| - int index_2 = width_threshold + 1;
|
| - double v = 0;
|
| - if (Get(index_1, &v) < 0)
|
| - return -1;
|
| - if (v < val_threshold) {
|
| - Set(index_1, 0);
|
| - int index;
|
| - for (index = index_2; index > index_1; index--) {
|
| - if (Get(index, &v) < 0)
|
| - return -1;
|
| - if (v < val_threshold)
|
| - break;
|
| - }
|
| - for (; index > index_1; index--) {
|
| - if (Set(index, 0.0) < 0)
|
| - return -1;
|
| - }
|
| - }
|
| - return 0;
|
| -}
|
| -
|
| -} // namespace webrtc
|
|
|