| Index: media/base/pipeline.cc
|
| diff --git a/media/base/pipeline.cc b/media/base/pipeline.cc
|
| index 2884c38993b08ad3e43734efc17b21c18b12a8e8..46be2b86e6809c592bc554fefdf8ee456b76b14d 100644
|
| --- a/media/base/pipeline.cc
|
| +++ b/media/base/pipeline.cc
|
| @@ -386,7 +386,7 @@
|
| 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());
|
| + clock_->SetTime(demuxer_->GetStartTime(), demuxer_->GetStartTime());
|
| }
|
| if (!audio_renderer_ && !video_renderer_) {
|
| done_cb.Run(PIPELINE_ERROR_COULD_NOT_RENDER);
|
| @@ -445,7 +445,7 @@
|
| DCHECK(!pending_callbacks_.get());
|
| SerialRunner::Queue bound_fns;
|
|
|
| - const base::TimeDelta seek_timestamp = base::TimeDelta();
|
| + base::TimeDelta seek_timestamp = demuxer_->GetStartTime();
|
|
|
| // Preroll renderers.
|
| if (audio_renderer_) {
|
| @@ -743,6 +743,7 @@
|
| DCHECK(seek_cb_.is_null());
|
|
|
| SetState(kSeeking);
|
| + base::TimeDelta seek_timestamp = std::max(time, demuxer_->GetStartTime());
|
| seek_cb_ = seek_cb;
|
| audio_ended_ = false;
|
| video_ended_ = false;
|
| @@ -752,9 +753,9 @@
|
| {
|
| base::AutoLock auto_lock(lock_);
|
| PauseClockAndStopRendering_Locked();
|
| - clock_->SetTime(time, time);
|
| - }
|
| - DoSeek(time, base::Bind(
|
| + clock_->SetTime(seek_timestamp, seek_timestamp);
|
| + }
|
| + DoSeek(seek_timestamp, base::Bind(
|
| &Pipeline::OnStateTransition, base::Unretained(this)));
|
| }
|
|
|
|
|