| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/base/byte_queue.h" | 5 #include "media/base/byte_queue.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 | 8 |
| 9 namespace media { | 9 namespace media { |
| 10 | 10 |
| 11 // Default starting size for the queue. | 11 // Default starting size for the queue. |
| 12 enum { kDefaultQueueSize = 1024 }; | 12 enum { kDefaultQueueSize = 1024 }; |
| 13 | 13 |
| 14 ByteQueue::ByteQueue() | 14 ByteQueue::ByteQueue() |
| 15 : buffer_(new uint8[kDefaultQueueSize]), | 15 : buffer_(new uint8[kDefaultQueueSize]), |
| 16 size_(kDefaultQueueSize), | 16 size_(kDefaultQueueSize), |
| 17 offset_(0), | 17 offset_(0), |
| 18 used_(0) { | 18 used_(0) { |
| 19 } | 19 } |
| 20 | 20 |
| 21 ByteQueue::~ByteQueue() {} | 21 ByteQueue::~ByteQueue() {} |
| 22 | 22 |
| 23 void ByteQueue::Reset() { | |
| 24 offset_ = 0; | |
| 25 used_ = 0; | |
| 26 } | |
| 27 | |
| 28 void ByteQueue::Push(const uint8* data, int size) { | 23 void ByteQueue::Push(const uint8* data, int size) { |
| 29 DCHECK(data); | 24 DCHECK(data); |
| 30 DCHECK_GT(size, 0); | 25 DCHECK_GT(size, 0); |
| 31 | 26 |
| 32 size_t size_needed = used_ + size; | 27 size_t size_needed = used_ + size; |
| 33 | 28 |
| 34 // Check to see if we need a bigger buffer. | 29 // Check to see if we need a bigger buffer. |
| 35 if (size_needed > size_) { | 30 if (size_needed > size_) { |
| 36 size_t new_size = 2 * size_; | 31 size_t new_size = 2 * size_; |
| 37 while (size_needed > new_size && new_size > size_) | 32 while (size_needed > new_size && new_size > size_) |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 75 // Move the offset back to 0 if we have reached the end of the buffer. | 70 // Move the offset back to 0 if we have reached the end of the buffer. |
| 76 if (offset_ == size_) { | 71 if (offset_ == size_) { |
| 77 DCHECK_EQ(used_, 0); | 72 DCHECK_EQ(used_, 0); |
| 78 offset_ = 0; | 73 offset_ = 0; |
| 79 } | 74 } |
| 80 } | 75 } |
| 81 | 76 |
| 82 uint8* ByteQueue::front() const { return buffer_.get() + offset_; } | 77 uint8* ByteQueue::front() const { return buffer_.get() + offset_; } |
| 83 | 78 |
| 84 } // namespace media | 79 } // namespace media |
| OLD | NEW |