| Index: media/filters/audio_renderer_base.cc
|
| diff --git a/media/filters/audio_renderer_base.cc b/media/filters/audio_renderer_base.cc
|
| index ba52fe0843db4c820fb34567c2d8120370b50650..d0bad99c1143a279d8eec57c8a048082ba6d6642 100644
|
| --- a/media/filters/audio_renderer_base.cc
|
| +++ b/media/filters/audio_renderer_base.cc
|
| @@ -38,7 +38,7 @@ void AudioRendererBase::Stop() {
|
| stopped_ = true;
|
| }
|
|
|
| -void AudioRendererBase::Seek(base::TimeDelta time) {
|
| +void AudioRendererBase::Seek(base::TimeDelta time, FilterCallback* callback) {
|
| AutoLock auto_lock(lock_);
|
| last_fill_buffer_time_ = base::TimeDelta();
|
|
|
| @@ -53,9 +53,12 @@ void AudioRendererBase::Seek(base::TimeDelta time) {
|
| }
|
| }
|
|
|
| -bool AudioRendererBase::Initialize(AudioDecoder* decoder) {
|
| +void AudioRendererBase::Initialize(AudioDecoder* decoder,
|
| + FilterCallback* callback) {
|
| DCHECK(decoder);
|
| + DCHECK(callback);
|
| decoder_ = decoder;
|
| + initialize_callback_.reset(callback);
|
|
|
| // Schedule our initial reads.
|
| for (size_t i = 0; i < max_queue_size_; ++i) {
|
| @@ -63,7 +66,11 @@ bool AudioRendererBase::Initialize(AudioDecoder* decoder) {
|
| }
|
|
|
| // Defer initialization until all scheduled reads have completed.
|
| - return OnInitialize(decoder_->media_format());
|
| + if (!OnInitialize(decoder_->media_format())) {
|
| + host()->Error(PIPELINE_ERROR_INITIALIZATION_FAILED);
|
| + initialize_callback_->Run();
|
| + initialize_callback_.reset();
|
| + }
|
| }
|
|
|
| void AudioRendererBase::OnReadComplete(Buffer* buffer_in) {
|
| @@ -92,8 +99,9 @@ void AudioRendererBase::OnReadComplete(Buffer* buffer_in) {
|
| host()->Error(PIPELINE_ERROR_NO_DATA);
|
| } else {
|
| initialized_ = true;
|
| - host()->InitializationComplete();
|
| }
|
| + initialize_callback_->Run();
|
| + initialize_callback_.reset();
|
| }
|
| }
|
|
|
|
|