Chromium Code Reviews| Index: media/base/android/media_codec_player.cc |
| diff --git a/media/base/android/media_codec_player.cc b/media/base/android/media_codec_player.cc |
| index 161d59e5ddd113ba715a3c5a88caa03d849819a2..10f88c041aacdff22341cabf919bd892e85b5b64 100644 |
| --- a/media/base/android/media_codec_player.cc |
| +++ b/media/base/android/media_codec_player.cc |
| @@ -99,6 +99,8 @@ MediaCodecPlayer::~MediaCodecPlayer() |
| if (audio_decoder_) |
| audio_decoder_->ReleaseDecoderResources(); |
| + media_stat_->StopAndReport(GetInterpolatedTime()); |
| + |
| if (drm_bridge_) { |
| DCHECK(cdm_registration_id_); |
| drm_bridge_->UnregisterPlayer(cdm_registration_id_); |
| @@ -807,6 +809,8 @@ void MediaCodecPlayer::OnStopDone(DemuxerStream::Type type) { |
| return; |
| } |
| + media_stat_->StopAndReport(GetInterpolatedTime()); |
| + |
| // DetachListener to UI thread |
| ui_task_runner_->PostTask(FROM_HERE, detach_listener_cb_); |
| @@ -851,6 +855,8 @@ void MediaCodecPlayer::OnStarvation(DemuxerStream::Type type) { |
| SetState(kStateStopping); |
| RequestToStopDecoders(); |
| SetPendingStart(true); |
| + |
| + media_stat_->AddStarvation(); |
| } |
| void MediaCodecPlayer::OnTimeIntervalUpdate(DemuxerStream::Type type, |
| @@ -1247,6 +1253,10 @@ MediaCodecPlayer::StartStatus MediaCodecPlayer::StartDecoders() { |
| DVLOG(1) << __FUNCTION__ << " current_time:" << current_time; |
| + // This methos needs to be called when decoder threads are not processing |
|
xhwang
2015/09/30 21:02:57
s/methos/method
Also, I don't quite understand th
Tima Vaisburd
2015/10/01 20:05:15
Changed to:
At this point decoder threads are ei
|
| + // frames. |
| + media_stat_->Start(current_time); |
| + |
| if (!AudioFinished()) { |
| if (!audio_decoder_->Start(current_time)) |
| return kStartFailed; |
| @@ -1269,6 +1279,8 @@ void MediaCodecPlayer::StopDecoders() { |
| video_decoder_->SyncStop(); |
| audio_decoder_->SyncStop(); |
| + |
| + media_stat_->StopAndReport(GetInterpolatedTime()); |
| } |
| void MediaCodecPlayer::RequestToStopDecoders() { |
| @@ -1326,6 +1338,8 @@ void MediaCodecPlayer::ReleaseDecoderResources() { |
| // At this point decoder threads should not be running |
| if (interpolator_.interpolating()) |
| interpolator_.StopInterpolating(); |
| + |
| + media_stat_->StopAndReport(GetInterpolatedTime()); |
| } |
| void MediaCodecPlayer::CreateDecoders() { |
| @@ -1334,6 +1348,8 @@ void MediaCodecPlayer::CreateDecoders() { |
| internal_error_cb_ = base::Bind(&MediaCodecPlayer::OnError, media_weak_this_); |
| + media_stat_.reset(new MediaStatistics()); |
| + |
| audio_decoder_.reset(new MediaCodecAudioDecoder( |
| GetMediaTaskRunner(), base::Bind(&MediaCodecPlayer::RequestDemuxerData, |
| media_weak_this_, DemuxerStream::AUDIO), |
| @@ -1347,7 +1363,8 @@ void MediaCodecPlayer::CreateDecoders() { |
| DemuxerStream::AUDIO), |
| internal_error_cb_, |
| base::Bind(&MediaCodecPlayer::OnTimeIntervalUpdate, media_weak_this_, |
| - DemuxerStream::AUDIO))); |
| + DemuxerStream::AUDIO), |
| + &media_stat_->audio_frames())); |
| video_decoder_.reset(new MediaCodecVideoDecoder( |
| GetMediaTaskRunner(), base::Bind(&MediaCodecPlayer::RequestDemuxerData, |
| @@ -1364,7 +1381,8 @@ void MediaCodecPlayer::CreateDecoders() { |
| base::Bind(&MediaCodecPlayer::OnTimeIntervalUpdate, media_weak_this_, |
| DemuxerStream::VIDEO), |
| base::Bind(&MediaCodecPlayer::OnVideoResolutionChanged, media_weak_this_), |
| - base::Bind(&MediaCodecPlayer::OnVideoCodecCreated, media_weak_this_))); |
| + base::Bind(&MediaCodecPlayer::OnVideoCodecCreated, media_weak_this_), |
| + &media_stat_->video_frames())); |
| } |
| bool MediaCodecPlayer::AudioFinished() const { |