Index: media/filters/video_renderer_impl.cc |
diff --git a/media/filters/video_renderer_impl.cc b/media/filters/video_renderer_impl.cc |
index 8735a0a96f2ae2ec6424c453673495e9e163fd51..28d9966386df77daf0d0022d1cd750d9e6812b53 100644 |
--- a/media/filters/video_renderer_impl.cc |
+++ b/media/filters/video_renderer_impl.cc |
@@ -34,7 +34,6 @@ VideoRendererImpl::VideoRendererImpl( |
thread_(), |
pending_read_(false), |
drop_frames_(drop_frames), |
- playback_rate_(0), |
buffering_state_(BUFFERING_HAVE_NOTHING), |
paint_cb_(paint_cb), |
last_timestamp_(kNoTimestamp()), |
@@ -106,12 +105,6 @@ void VideoRendererImpl::Stop(const base::Closure& callback) { |
video_frame_stream_.Stop(callback); |
} |
-void VideoRendererImpl::SetPlaybackRate(float playback_rate) { |
- DCHECK(task_runner_->BelongsToCurrentThread()); |
- base::AutoLock auto_lock(lock_); |
- playback_rate_ = playback_rate; |
-} |
- |
void VideoRendererImpl::StartPlayingFrom(base::TimeDelta timestamp) { |
DCHECK(task_runner_->BelongsToCurrentThread()); |
base::AutoLock auto_lock(lock_); |
@@ -221,8 +214,7 @@ void VideoRendererImpl::ThreadMain() { |
return; |
// Remain idle as long as we're not playing. |
- if (state_ != kPlaying || playback_rate_ == 0 || |
- buffering_state_ != BUFFERING_HAVE_ENOUGH) { |
+ if (state_ != kPlaying || buffering_state_ != BUFFERING_HAVE_ENOUGH) { |
UpdateStatsAndWait_Locked(kIdleTimeDelta); |
continue; |
} |
@@ -238,8 +230,9 @@ void VideoRendererImpl::ThreadMain() { |
continue; |
} |
- base::TimeDelta remaining_time = |
- CalculateSleepDuration(ready_frames_.front(), playback_rate_); |
+ // Determine the current and next presentation timestamps. |
+ base::TimeDelta now = get_time_cb_.Run(); |
+ base::TimeDelta remaining_time = ready_frames_.front()->timestamp() - now; |
// Sleep up to a maximum of our idle time until we're within the time to |
// render the next frame. |
@@ -261,7 +254,6 @@ void VideoRendererImpl::ThreadMain() { |
// TODO(scherkus): This can be vastly improved. Use a histogram to measure |
// the accuracy of our frame timing code. http://crbug.com/149829 |
if (drop_frames_ && last_timestamp_ != kNoTimestamp()) { |
- base::TimeDelta now = get_time_cb_.Run(); |
base::TimeDelta deadline = ready_frames_.front()->timestamp() + |
(ready_frames_.front()->timestamp() - last_timestamp_) / 2; |
@@ -477,19 +469,6 @@ void VideoRendererImpl::OnVideoFrameStreamResetDone() { |
base::ResetAndReturn(&flush_cb_).Run(); |
} |
-base::TimeDelta VideoRendererImpl::CalculateSleepDuration( |
- const scoped_refptr<VideoFrame>& next_frame, |
- float playback_rate) { |
- // Determine the current and next presentation timestamps. |
- base::TimeDelta now = get_time_cb_.Run(); |
- base::TimeDelta next_pts = next_frame->timestamp(); |
- |
- // Scale our sleep based on the playback rate. |
- base::TimeDelta sleep = next_pts - now; |
- return base::TimeDelta::FromMicroseconds( |
- static_cast<int64>(sleep.InMicroseconds() / playback_rate)); |
-} |
- |
void VideoRendererImpl::DoStopOrError_Locked() { |
lock_.AssertAcquired(); |
last_timestamp_ = kNoTimestamp(); |