OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
277 // Returns the number of elements in this AudioVector. | 277 // Returns the number of elements in this AudioVector. |
278 size_t AudioVector::Size() const { | 278 size_t AudioVector::Size() const { |
279 return (end_index_ + capacity_ - begin_index_) % capacity_; | 279 return (end_index_ + capacity_ - begin_index_) % capacity_; |
280 } | 280 } |
281 | 281 |
282 // Returns true if this AudioVector is empty. | 282 // Returns true if this AudioVector is empty. |
283 bool AudioVector::Empty() const { | 283 bool AudioVector::Empty() const { |
284 return begin_index_ == end_index_; | 284 return begin_index_ == end_index_; |
285 } | 285 } |
286 | 286 |
287 const int16_t& AudioVector::operator[](size_t index) const { | |
288 return array_[(begin_index_ + index) % capacity_]; | |
289 } | |
290 | |
291 int16_t& AudioVector::operator[](size_t index) { | |
292 return array_[(begin_index_ + index) % capacity_]; | |
293 } | |
294 | |
295 void AudioVector::Reserve(size_t n) { | 287 void AudioVector::Reserve(size_t n) { |
296 if (capacity_ > n) | 288 if (capacity_ > n) |
297 return; | 289 return; |
298 const size_t length = Size(); | 290 const size_t length = Size(); |
299 // Reserve one more sample to remove the ambiguity between empty vector and | 291 // Reserve one more sample to remove the ambiguity between empty vector and |
300 // full vector. Therefore |begin_index_| == |end_index_| indicates empty | 292 // full vector. Therefore |begin_index_| == |end_index_| indicates empty |
301 // vector, and |begin_index_| == (|end_index_| + 1) % capacity indicates | 293 // vector, and |begin_index_| == (|end_index_| + 1) % capacity indicates |
302 // full vector. | 294 // full vector. |
303 std::unique_ptr<int16_t[]> temp_array(new int16_t[n + 1]); | 295 std::unique_ptr<int16_t[]> temp_array(new int16_t[n + 1]); |
304 CopyTo(length, 0, temp_array.get()); | 296 CopyTo(length, 0, temp_array.get()); |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 if (remaining_zero_length > 0) | 377 if (remaining_zero_length > 0) |
386 memset(&array_[capacity_ - remaining_zero_length], 0, | 378 memset(&array_[capacity_ - remaining_zero_length], 0, |
387 remaining_zero_length * sizeof(int16_t)); | 379 remaining_zero_length * sizeof(int16_t)); |
388 begin_index_ = (begin_index_ + capacity_ - length) % capacity_; | 380 begin_index_ = (begin_index_ + capacity_ - length) % capacity_; |
389 | 381 |
390 if (position > 0) | 382 if (position > 0) |
391 PushFront(temp_array.get(), position); | 383 PushFront(temp_array.get(), position); |
392 } | 384 } |
393 | 385 |
394 } // namespace webrtc | 386 } // namespace webrtc |
OLD | NEW |