Index: media/base/pipeline.cc |
diff --git a/media/base/pipeline.cc b/media/base/pipeline.cc |
index a393cc862324d3b5602358a73ca1e990e86ef6c8..90444c446506d4409989ff13da85b048f39d16a0 100644 |
--- a/media/base/pipeline.cc |
+++ b/media/base/pipeline.cc |
@@ -156,7 +156,7 @@ void Pipeline::SetVolume(float volume) { |
TimeDelta Pipeline::GetMediaTime() const { |
base::AutoLock auto_lock(lock_); |
- return clock_->Elapsed(); |
+ return std::min(clock_->Elapsed(), duration_); |
} |
Ranges<TimeDelta> Pipeline::GetBufferedTimeRanges() const { |
@@ -166,7 +166,7 @@ Ranges<TimeDelta> Pipeline::GetBufferedTimeRanges() const { |
TimeDelta Pipeline::GetMediaDuration() const { |
base::AutoLock auto_lock(lock_); |
- return clock_->Duration(); |
+ return duration_; |
} |
bool Pipeline::DidLoadingProgress() { |
@@ -324,7 +324,7 @@ void Pipeline::SetDuration(TimeDelta duration) { |
UMA_HISTOGRAM_LONG_TIMES("Media.Duration", duration); |
base::AutoLock auto_lock(lock_); |
- clock_->SetDuration(duration); |
+ duration_ = duration; |
if (!duration_change_cb_.is_null()) |
duration_change_cb_.Run(); |
} |
@@ -707,7 +707,7 @@ void Pipeline::DoAudioRendererEnded() { |
// Start clock since there is no more audio to trigger clock updates. |
{ |
base::AutoLock auto_lock(lock_); |
- clock_->SetMaxTime(clock_->Duration()); |
+ clock_->SetMaxTime(duration_); |
StartClockIfWaitingForTimeUpdate_Locked(); |
} |
@@ -753,7 +753,7 @@ void Pipeline::RunEndedCallbackIfNeeded() { |
{ |
base::AutoLock auto_lock(lock_); |
PauseClockAndStopRendering_Locked(); |
- clock_->SetTime(clock_->Duration(), clock_->Duration()); |
+ clock_->SetTime(duration_, duration_); |
} |
DCHECK_EQ(status_, PIPELINE_OK); |
@@ -883,7 +883,7 @@ void Pipeline::StartPlayback() { |
} else { |
base::AutoLock auto_lock(lock_); |
clock_state_ = CLOCK_PLAYING; |
- clock_->SetMaxTime(clock_->Duration()); |
+ clock_->SetMaxTime(duration_); |
clock_->Play(); |
} |
} |