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(); |
} |
} |