Index: media/renderers/renderer_impl.cc |
diff --git a/media/renderers/renderer_impl.cc b/media/renderers/renderer_impl.cc |
index 87212d8214423f6ed38b7cd4344feca1ae16476e..9af325ee66461af57726b30d5a6d56c30bbbd68a 100644 |
--- a/media/renderers/renderer_impl.cc |
+++ b/media/renderers/renderer_impl.cc |
@@ -12,6 +12,7 @@ |
#include "base/command_line.h" |
#include "base/compiler_specific.h" |
#include "base/location.h" |
+#include "base/metrics/histogram_macros.h" |
#include "base/single_thread_task_runner.h" |
#include "base/strings/string_number_conversions.h" |
#include "media/base/audio_decoder_config.h" |
@@ -215,10 +216,14 @@ void RendererImpl::StartPlayingFrom(base::TimeDelta time) { |
time_source_->SetMediaTime(time); |
- if (audio_renderer_) |
+ if (audio_renderer_) { |
+ audio_preroll_start_time_ = base::TimeTicks::Now(); |
audio_renderer_->StartPlaying(); |
- if (video_renderer_) |
+ } |
+ if (video_renderer_) { |
+ video_preroll_start_time_ = base::TimeTicks::Now(); |
video_renderer_->StartPlayingFrom(time); |
+ } |
} |
void RendererImpl::RestartStreamPlayback(DemuxerStream* stream, |
@@ -694,6 +699,18 @@ void RendererImpl::OnBufferingStateChange(DemuxerStream::Type type, |
// Renderer prerolled. |
if (was_waiting_for_enough_data && !WaitingForEnoughData()) { |
+ if (type == DemuxerStream::AUDIO && !audio_preroll_start_time_.is_null()) { |
+ UMA_HISTOGRAM_MEDIUM_TIMES( |
+ "Media.Audio.PrerollTime", |
+ base::TimeTicks::Now() - audio_preroll_start_time_); |
+ } else if (type == DemuxerStream::VIDEO && |
+ !video_preroll_start_time_.is_null()) { |
+ UMA_HISTOGRAM_MEDIUM_TIMES( |
+ "Media.Video.PrerollTime", |
+ base::TimeTicks::Now() - video_preroll_start_time_); |
+ video_preroll_start_time_ = base::TimeTicks(); |
+ } |
+ |
StartPlayback(); |
client_->OnBufferingStateChange(BUFFERING_HAVE_ENOUGH); |
return; |