| Index: media/base/decoder_buffer_queue.cc
|
| diff --git a/media/base/decoder_buffer_queue.cc b/media/base/decoder_buffer_queue.cc
|
| index d0486cbf93965932bcbf7108f24cd947f79c499c..26ba9f4e69ba7b5071599dbf1c9019f22d366df9 100644
|
| --- a/media/base/decoder_buffer_queue.cc
|
| +++ b/media/base/decoder_buffer_queue.cc
|
| @@ -5,13 +5,15 @@
|
| #include "media/base/decoder_buffer_queue.h"
|
|
|
| #include "base/logging.h"
|
| +#include "base/numerics/safe_conversions.h"
|
| #include "media/base/buffers.h"
|
| #include "media/base/decoder_buffer.h"
|
|
|
| namespace media {
|
|
|
| DecoderBufferQueue::DecoderBufferQueue()
|
| - : earliest_valid_timestamp_(kNoTimestamp()) {
|
| + : earliest_valid_timestamp_(kNoTimestamp()),
|
| + data_size_(0) {
|
| }
|
|
|
| DecoderBufferQueue::~DecoderBufferQueue() {}
|
| @@ -21,6 +23,10 @@ void DecoderBufferQueue::Push(const scoped_refptr<DecoderBuffer>& buffer) {
|
|
|
| queue_.push_back(buffer);
|
|
|
| + // TODO(damienv): Remove the cast here and in every place in this file
|
| + // when DecoderBuffer::data_size is modified to return a size_t.
|
| + data_size_ += base::checked_cast<size_t, int>(buffer->data_size());
|
| +
|
| // TODO(scherkus): FFmpeg returns some packets with no timestamp after
|
| // seeking. Fix and turn this into CHECK(). See http://crbug.com/162192
|
| if (buffer->timestamp() == kNoTimestamp()) {
|
| @@ -49,6 +55,11 @@ scoped_refptr<DecoderBuffer> DecoderBufferQueue::Pop() {
|
| scoped_refptr<DecoderBuffer> buffer = queue_.front();
|
| queue_.pop_front();
|
|
|
| + size_t buffer_data_size =
|
| + base::checked_cast<size_t, int>(buffer->data_size());
|
| + DCHECK_LE(buffer_data_size, data_size_);
|
| + data_size_ -= buffer_data_size;
|
| +
|
| if (!in_order_queue_.empty() &&
|
| in_order_queue_.front().get() == buffer.get()) {
|
| in_order_queue_.pop_front();
|
| @@ -59,6 +70,7 @@ scoped_refptr<DecoderBuffer> DecoderBufferQueue::Pop() {
|
|
|
| void DecoderBufferQueue::Clear() {
|
| queue_.clear();
|
| + data_size_ = 0;
|
| in_order_queue_.clear();
|
| earliest_valid_timestamp_ = kNoTimestamp();
|
| }
|
|
|