Index: media/filters/audio_renderer_impl.cc |
diff --git a/media/filters/audio_renderer_impl.cc b/media/filters/audio_renderer_impl.cc |
index c8841cdc339793ad06ea545b205fdb65f9dedb8a..03a49503d20e377189c0490ac55ca8b56281197c 100644 |
--- a/media/filters/audio_renderer_impl.cc |
+++ b/media/filters/audio_renderer_impl.cc |
@@ -16,8 +16,7 @@ |
namespace media { |
AudioRendererImpl::AudioRendererImpl(media::AudioRendererSink* sink) |
- : host_(NULL), |
- state_(kUninitialized), |
+ : state_(kUninitialized), |
pending_read_(false), |
received_end_of_stream_(false), |
rendered_end_of_stream_(false), |
@@ -33,12 +32,6 @@ AudioRendererImpl::AudioRendererImpl(media::AudioRendererSink* sink) |
base::Unretained(this))) { |
} |
-void AudioRendererImpl::SetHost(FilterHost* host) { |
- DCHECK(host); |
- DCHECK(!host_); |
- host_ = host; |
-} |
- |
void AudioRendererImpl::Play(const base::Closure& callback) { |
{ |
base::AutoLock auto_lock(lock_); |
@@ -147,15 +140,21 @@ void AudioRendererImpl::DoSeek() { |
void AudioRendererImpl::Initialize(const scoped_refptr<AudioDecoder>& decoder, |
const PipelineStatusCB& init_cb, |
const base::Closure& underflow_cb, |
- const TimeCB& time_cb) { |
+ const TimeCB& time_cb, |
+ const base::Closure& ended_cb, |
+ const base::Closure& disabled_cb) { |
DCHECK(decoder); |
DCHECK(!init_cb.is_null()); |
DCHECK(!underflow_cb.is_null()); |
DCHECK(!time_cb.is_null()); |
+ DCHECK(!ended_cb.is_null()); |
+ DCHECK(!disabled_cb.is_null()); |
DCHECK_EQ(kUninitialized, state_); |
decoder_ = decoder; |
underflow_cb_ = underflow_cb; |
time_cb_ = time_cb; |
+ ended_cb_ = ended_cb; |
+ disabled_cb_ = disabled_cb; |
// Create a callback so our algorithm can request more reads. |
base::Closure cb = base::Bind(&AudioRendererImpl::ScheduleRead_Locked, this); |
@@ -424,7 +423,7 @@ uint32 AudioRendererImpl::FillBuffer(uint8* dest, |
if (!algorithm_->CanFillBuffer() && received_end_of_stream_ && |
!rendered_end_of_stream_ && base::Time::Now() >= earliest_end_time_) { |
rendered_end_of_stream_ = true; |
- host_->NotifyEnded(); |
+ ended_cb_.Run(); |
} else if (!algorithm_->CanFillBuffer() && !received_end_of_stream_ && |
state_ == kPlaying && !underflow_disabled_) { |
state_ = kUnderflow; |
@@ -507,7 +506,7 @@ base::TimeDelta AudioRendererImpl::ConvertToDuration(int bytes) { |
} |
void AudioRendererImpl::OnRenderError() { |
- host_->DisableAudioRenderer(); |
+ disabled_cb_.Run(); |
} |
void AudioRendererImpl::DisableUnderflowForTesting() { |