diff --git a/media/renderers/audio_renderer_impl.cc b/media/renderers/audio_renderer_impl.cc index d17a0689134d6..fe439e25b4edb 100644 --- a/media/renderers/audio_renderer_impl.cc +++ b/media/renderers/audio_renderer_impl.cc @@ -170,8 +170,10 @@ bool AudioRendererImpl::GetWallClockTimes( const std::vector& media_timestamps, std::vector* wall_clock_times) { base::AutoLock auto_lock(lock_); - if (last_render_ticks_.is_null() || !playback_rate_) + if (last_render_ticks_.is_null() || !playback_rate_ || + buffering_state_ != BUFFERING_HAVE_ENOUGH || !sink_playing_) { return false; + } DCHECK(wall_clock_times->empty()); wall_clock_times->reserve(media_timestamps.size()); diff --git a/media/renderers/audio_renderer_impl_unittest.cc b/media/renderers/audio_renderer_impl_unittest.cc index 1fe5bdd0a8b3a..119fb76b46491 100644 --- a/media/renderers/audio_renderer_impl_unittest.cc +++ b/media/renderers/audio_renderer_impl_unittest.cc @@ -519,6 +519,10 @@ TEST_F(AudioRendererImplTest, Underflow_Flush) { WaitForPendingRead(); StopTicking(); + // After time stops ticking wall clock times should not be returned. + EXPECT_FALSE( + renderer_->GetWallClockTimes(std::vector(1), nullptr)); + // We shouldn't expect another buffering state change when flushing. FlushDuringPendingRead(); }