| Index: media/filters/chunk_demuxer.cc
|
| diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc
|
| index 07634930adbfa98a5165420bd1f3b8eadbaf9100..236acfeb98539c528a9494596909282efbdeb186 100644
|
| --- a/media/filters/chunk_demuxer.cc
|
| +++ b/media/filters/chunk_demuxer.cc
|
| @@ -247,7 +247,7 @@ void ChunkDemuxerStream::StartWaitingForSeek() {
|
| }
|
|
|
| for (ReadCBQueue::iterator it = read_cbs.begin(); it != read_cbs.end(); ++it)
|
| - it->Run(NULL);
|
| + it->Run(kAborted, NULL);
|
| }
|
|
|
| void ChunkDemuxerStream::Seek(TimeDelta time) {
|
| @@ -374,24 +374,26 @@ void ChunkDemuxerStream::Shutdown() {
|
| // Pass end of stream buffers to all callbacks to signal that no more data
|
| // will be sent.
|
| for (ReadCBQueue::iterator it = read_cbs.begin(); it != read_cbs.end(); ++it)
|
| - it->Run(StreamParserBuffer::CreateEOSBuffer());
|
| + it->Run(DemuxerStream::kOk, StreamParserBuffer::CreateEOSBuffer());
|
| }
|
|
|
| // Helper function that makes sure |read_cb| runs on |message_loop|.
|
| static void RunOnMessageLoop(const DemuxerStream::ReadCB& read_cb,
|
| MessageLoop* message_loop,
|
| + DemuxerStream::Status status,
|
| const scoped_refptr<DecoderBuffer>& buffer) {
|
| if (MessageLoop::current() != message_loop) {
|
| message_loop->PostTask(FROM_HERE, base::Bind(
|
| - &RunOnMessageLoop, read_cb, message_loop, buffer));
|
| + &RunOnMessageLoop, read_cb, message_loop, status, buffer));
|
| return;
|
| }
|
|
|
| - read_cb.Run(buffer);
|
| + read_cb.Run(status, buffer);
|
| }
|
|
|
| // DemuxerStream methods.
|
| void ChunkDemuxerStream::Read(const ReadCB& read_cb) {
|
| + DemuxerStream::Status status = kOk;
|
| scoped_refptr<StreamParserBuffer> buffer;
|
| {
|
| base::AutoLock auto_lock(lock_);
|
| @@ -410,6 +412,7 @@ void ChunkDemuxerStream::Read(const ReadCB& read_cb) {
|
| // for a seek. Any buffers in the SourceBuffer should NOT be returned
|
| // because they are associated with the seek.
|
| DCHECK(read_cbs_.empty());
|
| + status = kAborted;
|
| break;
|
| case SHUTDOWN:
|
| DCHECK(read_cbs_.empty());
|
| @@ -417,7 +420,7 @@ void ChunkDemuxerStream::Read(const ReadCB& read_cb) {
|
| }
|
| }
|
|
|
| - read_cb.Run(buffer);
|
| + read_cb.Run(status, buffer);
|
| }
|
|
|
| DemuxerStream::Type ChunkDemuxerStream::type() { return type_; }
|
| @@ -461,7 +464,8 @@ void ChunkDemuxerStream::CreateReadDoneClosures_Locked(ClosureQueue* closures) {
|
| while (!read_cbs_.empty()) {
|
| if (!stream_->GetNextBuffer(&buffer))
|
| return;
|
| - closures->push_back(base::Bind(read_cbs_.front(), buffer));
|
| + closures->push_back(base::Bind(read_cbs_.front(),
|
| + DemuxerStream::kOk, buffer));
|
| read_cbs_.pop_front();
|
| }
|
| }
|
|
|