summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/webrtc/modules/audio_coding/neteq4/audio_vector.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/webrtc/modules/audio_coding/neteq4/audio_vector.cc')
-rw-r--r--chromium/third_party/webrtc/modules/audio_coding/neteq4/audio_vector.cc165
1 files changed, 0 insertions, 165 deletions
diff --git a/chromium/third_party/webrtc/modules/audio_coding/neteq4/audio_vector.cc b/chromium/third_party/webrtc/modules/audio_coding/neteq4/audio_vector.cc
deleted file mode 100644
index cbd46163068..00000000000
--- a/chromium/third_party/webrtc/modules/audio_coding/neteq4/audio_vector.cc
+++ /dev/null
@@ -1,165 +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_coding/neteq4/audio_vector.h"
-
-#include <assert.h>
-
-#include <algorithm>
-
-#include "webrtc/typedefs.h"
-
-namespace webrtc {
-
-void AudioVector::Clear() {
- first_free_ix_ = 0;
-}
-
-void AudioVector::CopyFrom(AudioVector* copy_to) const {
- if (copy_to) {
- copy_to->Reserve(Size());
- assert(copy_to->capacity_ >= Size());
- memcpy(copy_to->array_.get(), array_.get(), Size() * sizeof(int16_t));
- copy_to->first_free_ix_ = first_free_ix_;
- }
-}
-
-void AudioVector::PushFront(const AudioVector& prepend_this) {
- size_t insert_length = prepend_this.Size();
- Reserve(Size() + insert_length);
- memmove(&array_[insert_length], &array_[0], Size() * sizeof(int16_t));
- memcpy(&array_[0], &prepend_this.array_[0], insert_length * sizeof(int16_t));
- first_free_ix_ += insert_length;
-}
-
-void AudioVector::PushFront(const int16_t* prepend_this, size_t length) {
- // Same operation as InsertAt beginning.
- InsertAt(prepend_this, length, 0);
-}
-
-void AudioVector::PushBack(const AudioVector& append_this) {
- PushBack(append_this.array_.get(), append_this.Size());
-}
-
-void AudioVector::PushBack(const int16_t* append_this, size_t length) {
- Reserve(Size() + length);
- memcpy(&array_[first_free_ix_], append_this, length * sizeof(int16_t));
- first_free_ix_ += length;
-}
-
-void AudioVector::PopFront(size_t length) {
- if (length >= Size()) {
- // Remove all elements.
- Clear();
- } else {
- size_t remaining_samples = Size() - length;
- memmove(&array_[0], &array_[length], remaining_samples * sizeof(int16_t));
- first_free_ix_ -= length;
- }
-}
-
-void AudioVector::PopBack(size_t length) {
- // Never remove more than what is in the array.
- length = std::min(length, Size());
- first_free_ix_ -= length;
-}
-
-void AudioVector::Extend(size_t extra_length) {
- Reserve(Size() + extra_length);
- memset(&array_[first_free_ix_], 0, extra_length * sizeof(int16_t));
- first_free_ix_ += extra_length;
-}
-
-void AudioVector::InsertAt(const int16_t* insert_this,
- size_t length,
- size_t position) {
- Reserve(Size() + length);
- // Cap the position at the current vector length, to be sure the iterator
- // does not extend beyond the end of the vector.
- position = std::min(Size(), position);
- int16_t* insert_position_ptr = &array_[position];
- size_t samples_to_move = Size() - position;
- memmove(insert_position_ptr + length, insert_position_ptr,
- samples_to_move * sizeof(int16_t));
- memcpy(insert_position_ptr, insert_this, length * sizeof(int16_t));
- first_free_ix_ += length;
-}
-
-void AudioVector::InsertZerosAt(size_t length,
- size_t position) {
- Reserve(Size() + length);
- // Cap the position at the current vector length, to be sure the iterator
- // does not extend beyond the end of the vector.
- position = std::min(capacity_, position);
- int16_t* insert_position_ptr = &array_[position];
- size_t samples_to_move = Size() - position;
- memmove(insert_position_ptr + length, insert_position_ptr,
- samples_to_move * sizeof(int16_t));
- memset(insert_position_ptr, 0, length * sizeof(int16_t));
- first_free_ix_ += length;
-}
-
-void AudioVector::OverwriteAt(const int16_t* insert_this,
- size_t length,
- size_t position) {
- // Cap the insert position at the current array length.
- position = std::min(Size(), position);
- Reserve(position + length);
- memcpy(&array_[position], insert_this, length * sizeof(int16_t));
- if (position + length > Size()) {
- // Array was expanded.
- first_free_ix_ += position + length - Size();
- }
-}
-
-void AudioVector::CrossFade(const AudioVector& append_this,
- size_t fade_length) {
- // Fade length cannot be longer than the current vector or |append_this|.
- assert(fade_length <= Size());
- assert(fade_length <= append_this.Size());
- fade_length = std::min(fade_length, Size());
- fade_length = std::min(fade_length, append_this.Size());
- size_t position = Size() - fade_length;
- // Cross fade the overlapping regions.
- // |alpha| is the mixing factor in Q14.
- // TODO(hlundin): Consider skipping +1 in the denominator to produce a
- // smoother cross-fade, in particular at the end of the fade.
- int alpha_step = 16384 / (static_cast<int>(fade_length) + 1);
- int alpha = 16384;
- for (size_t i = 0; i < fade_length; ++i) {
- alpha -= alpha_step;
- array_[position + i] = (alpha * array_[position + i] +
- (16384 - alpha) * append_this[i] + 8192) >> 14;
- }
- assert(alpha >= 0); // Verify that the slope was correct.
- // Append what is left of |append_this|.
- size_t samples_to_push_back = append_this.Size() - fade_length;
- if (samples_to_push_back > 0)
- PushBack(&append_this[fade_length], samples_to_push_back);
-}
-
-const int16_t& AudioVector::operator[](size_t index) const {
- return array_[index];
-}
-
-int16_t& AudioVector::operator[](size_t index) {
- return array_[index];
-}
-
-void AudioVector::Reserve(size_t n) {
- if (capacity_ < n) {
- scoped_ptr<int16_t[]> temp_array(new int16_t[n]);
- memcpy(temp_array.get(), array_.get(), Size() * sizeof(int16_t));
- array_.swap(temp_array);
- capacity_ = n;
- }
-}
-
-} // namespace webrtc