Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1411)

Unified Diff: media/filters/audio_renderer_impl.cc

Issue 10753021: Move AudioRenderer out of Filter heirarchy. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src
Patch Set: error_cb Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/filters/audio_renderer_impl.h ('k') | media/filters/audio_renderer_impl_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/audio_renderer_impl.cc
diff --git a/media/filters/audio_renderer_impl.cc b/media/filters/audio_renderer_impl.cc
index 1fa0d387ea7f981299c5719d35a850f357ed2931..a9e936d36d9fbe2f09604f2d5f88815fd3fb11b5 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_);
@@ -145,15 +138,24 @@ 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,
+ const PipelineStatusCB& error_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(!error_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;
+ error_cb_ = error_cb;
// Create a callback so our algorithm can request more reads.
base::Closure cb = base::Bind(&AudioRendererImpl::ScheduleRead_Locked, this);
@@ -436,7 +438,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;
@@ -519,7 +521,7 @@ base::TimeDelta AudioRendererImpl::ConvertToDuration(int bytes) {
}
void AudioRendererImpl::OnRenderError() {
- host_->DisableAudioRenderer();
+ disabled_cb_.Run();
}
void AudioRendererImpl::DisableUnderflowForTesting() {
@@ -535,7 +537,7 @@ void AudioRendererImpl::HandleAbortedReadOrDecodeError(bool is_decode_error) {
return;
case kPaused:
if (status != PIPELINE_OK)
- host_->SetError(status);
+ error_cb_.Run(status);
base::ResetAndReturn(&pause_cb_).Run();
return;
case kSeeking:
@@ -547,7 +549,7 @@ void AudioRendererImpl::HandleAbortedReadOrDecodeError(bool is_decode_error) {
case kRebuffering:
case kStopped:
if (status != PIPELINE_OK)
- host_->SetError(status);
+ error_cb_.Run(status);
return;
}
}
« no previous file with comments | « media/filters/audio_renderer_impl.h ('k') | media/filters/audio_renderer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698