Index: media/base/pipeline.cc |
diff --git a/media/base/pipeline.cc b/media/base/pipeline.cc |
index 1c7507c57f56279472d45a61374445233db5b826..9f37dd5c5aa4df308cd2c69a192f8c1d293cb3aa 100644 |
--- a/media/base/pipeline.cc |
+++ b/media/base/pipeline.cc |
@@ -55,6 +55,9 @@ Pipeline::Pipeline( |
media_log_->AddEvent(media_log_->CreatePipelineStateChangedEvent(kCreated)); |
media_log_->AddEvent( |
media_log_->CreateEvent(MediaLogEvent::PIPELINE_CREATED)); |
+ // We do not want to start the clock running. We only want to set the |
+ // base media time so our timestamp calculations will be correct. |
scherkus (not reviewing)
2014/07/08 21:21:06
I'd just remove this comment -- it doesn't seem ve
xhwang
2014/07/08 21:24:36
Done.
|
+ clock_->SetTime(base::TimeDelta(), base::TimeDelta()); |
} |
Pipeline::~Pipeline() { |
@@ -373,12 +376,6 @@ void Pipeline::StateTransitionTask(PipelineStatus status) { |
// state. |
if (filter_collection_) { |
filter_collection_.reset(); |
- { |
- base::AutoLock l(lock_); |
- // We do not want to start the clock running. We only want to set the |
- // base media time so our timestamp calculations will be correct. |
- clock_->SetTime(base::TimeDelta(), base::TimeDelta()); |
- } |
if (!audio_renderer_ && !video_renderer_) { |
ErrorChangedTask(PIPELINE_ERROR_COULD_NOT_RENDER); |
return; |
@@ -400,6 +397,11 @@ void Pipeline::StateTransitionTask(PipelineStatus status) { |
base::ResetAndReturn(&seek_cb_).Run(PIPELINE_OK); |
+ { |
+ base::AutoLock auto_lock(lock_); |
+ clock_->SetTime(start_timestamp_, start_timestamp_); |
+ } |
+ |
if (audio_renderer_) |
audio_renderer_->StartPlayingFrom(start_timestamp_); |
if (video_renderer_) |
@@ -441,6 +443,10 @@ void Pipeline::DoSeek( |
DCHECK(task_runner_->BelongsToCurrentThread()); |
DCHECK(!pending_callbacks_.get()); |
SerialRunner::Queue bound_fns; |
+ { |
+ base::AutoLock auto_lock(lock_); |
+ PauseClockAndStopRendering_Locked(); |
+ } |
// Pause. |
if (text_renderer_) { |
@@ -683,12 +689,6 @@ void Pipeline::SeekTask(TimeDelta time, const PipelineStatusCB& seek_cb) { |
text_ended_ = false; |
start_timestamp_ = time; |
- // Kick off seeking! |
- { |
- base::AutoLock auto_lock(lock_); |
- PauseClockAndStopRendering_Locked(); |
- clock_->SetTime(time, time); |
- } |
DoSeek(time, base::Bind( |
&Pipeline::OnStateTransition, base::Unretained(this))); |
} |