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