Chromium Code Reviews| Index: media/base/pipeline_impl.cc |
| diff --git a/media/base/pipeline_impl.cc b/media/base/pipeline_impl.cc |
| index 7f5f3f3520e001a333450daf4aae202e2395b5da..6dd15a244d458e65034dffd5f5427ef6a1cf1108 100644 |
| --- a/media/base/pipeline_impl.cc |
| +++ b/media/base/pipeline_impl.cc |
| @@ -219,6 +219,21 @@ void PipelineImpl::SetVolume(float volume) { |
| } |
| } |
| +Preload PipelineImpl::GetPreload() const { |
| + base::AutoLock auto_lock(lock_); |
| + return preload_; |
| +} |
| + |
| +void PipelineImpl::SetPreload(Preload preload) { |
| + base::AutoLock auto_lock(lock_); |
| + preload_ = preload; |
| + if (running_) { |
| + message_loop_->PostTask(FROM_HERE, |
| + NewRunnableMethod(this, &PipelineImpl::PreloadChangedTask, |
| + preload)); |
| + } |
| +} |
| + |
| base::TimeDelta PipelineImpl::GetCurrentTime() const { |
| // TODO(scherkus): perhaps replace checking state_ == kEnded with a bool that |
| // is set/get under the lock, because this is breaching the contract that |
| @@ -685,6 +700,7 @@ void PipelineImpl::InitializeTask() { |
| // Initialization was successful, we are now considered paused, so it's safe |
| // to set the initial playback rate and volume. |
| + PreloadChangedTask(GetPreload()); |
| PlaybackRateChangedTask(GetPlaybackRate()); |
| VolumeChangedTask(GetVolume()); |
| @@ -785,6 +801,12 @@ void PipelineImpl::VolumeChangedTask(float volume) { |
| } |
| } |
| +void PipelineImpl::PreloadChangedTask(Preload preload) { |
| + DCHECK_EQ(MessageLoop::current(), message_loop_); |
| + if (demuxer_) |
| + demuxer_->SetPreload(preload); |
| +} |
| + |
| void PipelineImpl::SeekTask(base::TimeDelta time, |
| PipelineStatusCallback* seek_callback) { |
| DCHECK_EQ(MessageLoop::current(), message_loop_); |
| @@ -994,9 +1016,10 @@ void PipelineImpl::FinishDestroyingFiltersTask() { |
| DCHECK_EQ(MessageLoop::current(), message_loop_); |
| DCHECK(IsPipelineStopped()); |
| - // Clear renderer references. |
| + // Clear filter references. |
| audio_renderer_ = NULL; |
| video_renderer_ = NULL; |
| + demuxer_ = NULL; |
| pipeline_filter_ = NULL; |
| @@ -1058,6 +1081,7 @@ void PipelineImpl::OnDemuxerBuilt(PipelineStatus status, Demuxer* demuxer) { |
| return; |
| pipeline_init_state_->demuxer_ = demuxer; |
|
acolwell GONE FROM CHROMIUM
2011/03/25 04:35:28
Remove demuxer_ from pipeline_init_state since Pip
vrk (LEFT CHROMIUM)
2011/03/25 21:33:32
Done.
|
| + demuxer_ = demuxer; |
| OnFilterInitialize(); |
| } |