| Index: media/filters/chunk_demuxer.cc
|
| diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc
|
| index e38c35d777ffe9f23c54e7612fb8be4fd5545da8..0669fb43cf2bdffa686ac9164d9635426f852736 100644
|
| --- a/media/filters/chunk_demuxer.cc
|
| +++ b/media/filters/chunk_demuxer.cc
|
| @@ -16,7 +16,6 @@
|
| #include "media/base/audio_decoder_config.h"
|
| #include "media/base/stream_parser_buffer.h"
|
| #include "media/base/video_decoder_config.h"
|
| -#include "media/filters/chunk_demuxer_client.h"
|
| #if defined(GOOGLE_CHROME_BUILD) || defined(USE_PROPRIETARY_CODECS)
|
| #include "media/mp4/mp4_stream_parser.h"
|
| #endif
|
| @@ -529,15 +528,19 @@ bool ChunkDemuxerStream::GetNextBuffer_Locked(
|
| return false;
|
| }
|
|
|
| -ChunkDemuxer::ChunkDemuxer(ChunkDemuxerClient* client)
|
| +ChunkDemuxer::ChunkDemuxer(const base::Closure& open_cb,
|
| + const NeedKeyCB& need_key_cb)
|
| : state_(WAITING_FOR_INIT),
|
| host_(NULL),
|
| - client_(client) {
|
| - DCHECK(client);
|
| + open_cb_(open_cb),
|
| + need_key_cb_(need_key_cb) {
|
| + DCHECK(!open_cb.is_null());
|
| + DCHECK(!need_key_cb.is_null());
|
| }
|
|
|
| void ChunkDemuxer::Initialize(DemuxerHost* host, const PipelineStatusCB& cb) {
|
| DVLOG(1) << "Init()";
|
| + base::Closure open_cb;
|
| {
|
| base::AutoLock auto_lock(lock_);
|
| DCHECK_EQ(state_, WAITING_FOR_INIT);
|
| @@ -545,9 +548,11 @@ void ChunkDemuxer::Initialize(DemuxerHost* host, const PipelineStatusCB& cb) {
|
|
|
| ChangeState_Locked(INITIALIZING);
|
| init_cb_ = cb;
|
| +
|
| + std::swap(open_cb, open_cb_);
|
| }
|
|
|
| - client_->DemuxerOpened(this);
|
| + open_cb.Run();
|
| }
|
|
|
| void ChunkDemuxer::Stop(const base::Closure& callback) {
|
| @@ -914,8 +919,6 @@ void ChunkDemuxer::Shutdown() {
|
|
|
| if (!cb.is_null())
|
| cb.Run(PIPELINE_ERROR_ABORT);
|
| -
|
| - client_->DemuxerClosed();
|
| }
|
|
|
| void ChunkDemuxer::ChangeState_Locked(State new_state) {
|
| @@ -1104,7 +1107,8 @@ bool ChunkDemuxer::OnVideoBuffers(const StreamParser::BufferQueue& buffers) {
|
|
|
| bool ChunkDemuxer::OnNeedKey(scoped_array<uint8> init_data,
|
| int init_data_size) {
|
| - client_->DemuxerNeedKey(init_data.Pass(), init_data_size);
|
| + lock_.AssertAcquired();
|
| + need_key_cb_.Run(init_data.Pass(), init_data_size);
|
| return true;
|
| }
|
|
|
|
|