Index: media/renderers/renderer_impl.cc |
diff --git a/media/renderers/renderer_impl.cc b/media/renderers/renderer_impl.cc |
index 936718512a029f93072ba81a4ed6123ec3683323..b78a36d84ed9f7a1356ff751b9fb38cd95805442 100644 |
--- a/media/renderers/renderer_impl.cc |
+++ b/media/renderers/renderer_impl.cc |
@@ -202,16 +202,17 @@ void RendererImpl::EnableClocklessVideoPlaybackForTesting() { |
clockless_video_playback_enabled_for_testing_ = true; |
} |
-base::TimeDelta RendererImpl::GetMediaTimeForSyncingVideo() { |
+base::TimeTicks RendererImpl::GetWallclockTimeForMediaTime( |
+ base::TimeDelta time) { |
// No BelongsToCurrentThread() checking because this can be called from other |
// threads. |
// |
// TODO(scherkus): Currently called from VideoRendererImpl's internal thread, |
// which should go away at some point http://crbug.com/110814 |
if (clockless_video_playback_enabled_for_testing_) |
- return base::TimeDelta::Max(); |
+ return base::TimeTicks::Now(); |
- return time_source_->CurrentMediaTimeForSyncingVideo(); |
+ return time_source_->GetWallclockTimeForMediaTime(time); |
} |
void RendererImpl::SetDecryptorReadyCallback( |
@@ -310,7 +311,7 @@ void RendererImpl::InitializeVideoRenderer() { |
base::ResetAndReturn(&paint_cb_), |
base::Bind(&RendererImpl::OnVideoRendererEnded, weak_this_), |
base::Bind(&RendererImpl::OnError, weak_this_), |
- base::Bind(&RendererImpl::GetMediaTimeForSyncingVideo, |
+ base::Bind(&RendererImpl::GetWallclockTimeForMediaTime, |
base::Unretained(this)), |
waiting_for_decryption_key_cb_); |
} |
@@ -456,6 +457,12 @@ bool RendererImpl::WaitingForEnoughData() const { |
DCHECK(task_runner_->BelongsToCurrentThread()); |
if (state_ != STATE_PLAYING) |
return false; |
+ // If playback has started and we have both an audio and video renderer, |
+ // prefer the buffering state of the audio renderer. |
+ if (time_ticking_ && audio_renderer_ && video_renderer_ && |
+ audio_buffering_state_ == BUFFERING_HAVE_ENOUGH) { |
+ return false; |
+ } |
xhwang
2015/03/23 22:20:14
So for a audio/video content, if the video is way
DaleCurtis
2015/03/25 00:31:45
Correct, though in a meeting yesterday strobe@ bro
xhwang
2015/03/25 04:10:50
I can think of some corner cases where we want to
DaleCurtis
2015/03/26 18:32:56
Actually it turns out I misunderstood the code her
|
if (audio_renderer_ && audio_buffering_state_ != BUFFERING_HAVE_ENOUGH) |
return true; |
if (video_renderer_ && video_buffering_state_ != BUFFERING_HAVE_ENOUGH) |