| Index: media/filters/source_buffer_stream.cc
|
| diff --git a/media/filters/source_buffer_stream.cc b/media/filters/source_buffer_stream.cc
|
| index faba8ec9d1e8d75832cd3ce30296e4c7b766397a..a94d125ccd5fd9cd1c1d0ead99417e9b4315b025 100644
|
| --- a/media/filters/source_buffer_stream.cc
|
| +++ b/media/filters/source_buffer_stream.cc
|
| @@ -348,7 +348,9 @@ bool SourceBufferStream::Append(const BufferQueue& buffers) {
|
|
|
| SetSelectedRangeIfNeeded(next_buffer_timestamp);
|
|
|
| - GarbageCollectIfNeeded();
|
| + if (!GarbageCollectIfNeeded()) {
|
| + LOG(WARNING) << "Buffer capacity exceeded after append";
|
| + }
|
|
|
| DVLOG(1) << __FUNCTION__ << " " << GetStreamTypeName()
|
| << ": done. ranges_=" << RangesToString(ranges_);
|
| @@ -583,7 +585,7 @@ void SourceBufferStream::SetConfigIds(const BufferQueue& buffers) {
|
| }
|
| }
|
|
|
| -void SourceBufferStream::GarbageCollectIfNeeded() {
|
| +bool SourceBufferStream::GarbageCollectIfNeeded() {
|
| // Compute size of |ranges_|.
|
| int ranges_size = 0;
|
| for (RangeList::iterator itr = ranges_.begin(); itr != ranges_.end(); ++itr)
|
| @@ -591,7 +593,7 @@ void SourceBufferStream::GarbageCollectIfNeeded() {
|
|
|
| // Return if we're under or at the memory limit.
|
| if (ranges_size <= memory_limit_)
|
| - return;
|
| + return true;
|
|
|
| int bytes_to_free = ranges_size - memory_limit_;
|
|
|
| @@ -614,6 +616,8 @@ void SourceBufferStream::GarbageCollectIfNeeded() {
|
| DVLOG(2) << __FUNCTION__ << " " << GetStreamTypeName() << ": After GC"
|
| << " bytes_freed=" << bytes_freed
|
| << " ranges_=" << RangesToString(ranges_);
|
| +
|
| + return (bytes_to_free - bytes_freed <= 0);
|
| }
|
|
|
| int SourceBufferStream::FreeBuffersAfterLastAppended(int total_bytes_to_free) {
|
|
|