| 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;
|
|
|