Chromium Code Reviews| Index: media/filters/source_buffer_stream.cc |
| diff --git a/media/filters/source_buffer_stream.cc b/media/filters/source_buffer_stream.cc |
| index 4271ab9601bb44393a6f79f0db3fd09daf7c00fd..a468b941b5d78513b30e115e89012a4f4642edb3 100644 |
| --- a/media/filters/source_buffer_stream.cc |
| +++ b/media/filters/source_buffer_stream.cc |
| @@ -928,7 +928,7 @@ void SourceBufferStream::Seek(base::TimeDelta timestamp) { |
| } |
| bool SourceBufferStream::IsSeekPending() const { |
| - return !(end_of_stream_ && IsEndSelected()) && seek_pending_; |
| + return seek_pending_ && !IsEndOfStreamReached(); |
| } |
| void SourceBufferStream::OnSetDuration(base::TimeDelta duration) { |
| @@ -1099,8 +1099,10 @@ SourceBufferStream::Status SourceBufferStream::GetNextBufferInternal( |
| } |
| if (!selected_range_ || !selected_range_->HasNextBuffer()) { |
| - if (end_of_stream_ && IsEndSelected()) |
| + if (IsEndOfStreamReached()) { |
| + DCHECK(track_buffer_.empty()); |
|
wolenetz
2015/05/13 18:23:02
nit: Sorry, I meant to have this DCHECK be stronge
|
| return kEndOfStream; |
| + } |
| DVLOG(3) << __FUNCTION__ << " " << GetStreamTypeName() |
| << ": returning kNeedBuffer " |
| << (selected_range_ ? "(selected range has no next buffer)" |
| @@ -1205,7 +1207,10 @@ void SourceBufferStream::UnmarkEndOfStream() { |
| end_of_stream_ = false; |
| } |
| -bool SourceBufferStream::IsEndSelected() const { |
| +bool SourceBufferStream::IsEndOfStreamReached() const { |
| + if (!end_of_stream_ || !track_buffer_.empty()) |
| + return false; |
| + |
| if (ranges_.empty()) |
| return true; |
| @@ -1215,6 +1220,9 @@ bool SourceBufferStream::IsEndSelected() const { |
| return seek_buffer_timestamp_ >= last_range_end_time; |
| } |
| + if (!selected_range_) |
| + return true; |
| + |
| return selected_range_ == ranges_.back(); |
| } |