| Index: media/filters/chunk_demuxer.cc
|
| diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc
|
| index ead7956de6e412d3f4a460aa4bc8a045c0252094..203c91407ab700c8f5c46b894f21077b0f48e3cb 100644
|
| --- a/media/filters/chunk_demuxer.cc
|
| +++ b/media/filters/chunk_demuxer.cc
|
| @@ -241,7 +241,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) {
|
| @@ -364,24 +364,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_);
|
| @@ -400,6 +402,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());
|
| @@ -407,7 +410,7 @@ void ChunkDemuxerStream::Read(const ReadCB& read_cb) {
|
| }
|
| }
|
|
|
| - read_cb.Run(buffer);
|
| + read_cb.Run(status, buffer);
|
| }
|
|
|
| DemuxerStream::Type ChunkDemuxerStream::type() { return type_; }
|
| @@ -451,7 +454,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();
|
| }
|
| }
|
|
|