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

Unified Diff: media/base/pipeline_impl.cc

Issue 6625059: Implementing preload=metadata for video (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cleanup defer strategy, fix logic bug Created 9 years, 9 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
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();
}

Powered by Google App Engine
This is Rietveld 408576698