Chromium Code Reviews| 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()); |
|
Ami GONE FROM CHROMIUM
2012/09/12 18:45:34
s/cb/cb_/ (in general, this style makes it easier
acolwell GONE FROM CHROMIUM
2012/09/12 22:03:53
Done.
|
| + DCHECK(!need_key_cb.is_null()); |
|
Ami GONE FROM CHROMIUM
2012/09/12 18:45:34
ditto
acolwell GONE FROM CHROMIUM
2012/09/12 22:03:53
Done.
|
| } |
| 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(); |
|
Ami GONE FROM CHROMIUM
2012/09/12 18:45:34
Is this just good hygiene or is there a reason ope
acolwell GONE FROM CHROMIUM
2012/09/12 22:03:53
This was intended to be a good hygiene thing and w
|
| } |
| 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; |
| } |