| Index: media/filters/decoder_stream.cc
|
| diff --git a/media/filters/decoder_stream.cc b/media/filters/decoder_stream.cc
|
| index 45172901410c22f0f03977224e00f774fe119afc..9f44402a1c78da070eabd0a01cfd82886d52ea88 100644
|
| --- a/media/filters/decoder_stream.cc
|
| +++ b/media/filters/decoder_stream.cc
|
| @@ -52,6 +52,7 @@ DecoderStream<StreamType>::DecoderStream(
|
| decoders.Pass(),
|
| set_decryptor_ready_cb)),
|
| active_splice_(false),
|
| + decoding_eos_(false),
|
| pending_decode_requests_(0),
|
| weak_factory_(this) {}
|
|
|
| @@ -207,7 +208,7 @@ bool DecoderStream<StreamType>::CanDecodeMore() const {
|
| // empty.
|
| int num_decodes =
|
| static_cast<int>(ready_outputs_.size()) + pending_decode_requests_;
|
| - return num_decodes < GetMaxDecodeRequests();
|
| + return !decoding_eos_ && num_decodes < GetMaxDecodeRequests();
|
| }
|
|
|
| template <DemuxerStream::Type StreamType>
|
| @@ -265,6 +266,9 @@ void DecoderStream<StreamType>::Decode(
|
| weak_factory_.GetWeakPtr(),
|
| buffer_size,
|
| buffer->end_of_stream()));
|
| +
|
| + if (buffer->end_of_stream())
|
| + decoding_eos_ = true;
|
| }
|
|
|
| template <DemuxerStream::Type StreamType>
|
| @@ -286,6 +290,9 @@ void DecoderStream<StreamType>::OnDecodeDone(int buffer_size,
|
|
|
| TRACE_EVENT_ASYNC_END0("media", GetTraceString<StreamType>(), this);
|
|
|
| + if (end_of_stream)
|
| + decoding_eos_ = false;
|
| +
|
| if (state_ == STATE_ERROR) {
|
| DCHECK(read_cb_.is_null());
|
| return;
|
|
|