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 |
23 void ByteQueue::Push(const uint8* data, int size) { | 28 void ByteQueue::Push(const uint8* data, int size) { |
24 DCHECK(data); | 29 DCHECK(data); |
25 DCHECK_GT(size, 0); | 30 DCHECK_GT(size, 0); |
26 | 31 |
27 size_t size_needed = used_ + size; | 32 size_t size_needed = used_ + size; |
28 | 33 |
29 // Check to see if we need a bigger buffer. | 34 // Check to see if we need a bigger buffer. |
30 if (size_needed > size_) { | 35 if (size_needed > size_) { |
31 size_t new_size = 2 * size_; | 36 size_t new_size = 2 * size_; |
32 while (size_needed > new_size && new_size > size_) | 37 while (size_needed > new_size && new_size > size_) |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 // Move the offset back to 0 if we have reached the end of the buffer. | 75 // Move the offset back to 0 if we have reached the end of the buffer. |
71 if (offset_ == size_) { | 76 if (offset_ == size_) { |
72 DCHECK_EQ(used_, 0); | 77 DCHECK_EQ(used_, 0); |
73 offset_ = 0; | 78 offset_ = 0; |
74 } | 79 } |
75 } | 80 } |
76 | 81 |
77 uint8* ByteQueue::front() const { return buffer_.get() + offset_; } | 82 uint8* ByteQueue::front() const { return buffer_.get() + offset_; } |
78 | 83 |
79 } // namespace media | 84 } // namespace media |
OLD | NEW |