Chromium Code Reviews| Index: media/filters/decoder_stream_traits.cc |
| diff --git a/media/filters/decoder_stream_traits.cc b/media/filters/decoder_stream_traits.cc |
| index ec6c7993a1464c4c1347ae0af971a8ad288d85e8..745ca9d73c13ac0fff46d66e415c17afe9cd7963 100644 |
| --- a/media/filters/decoder_stream_traits.cc |
| +++ b/media/filters/decoder_stream_traits.cc |
| @@ -5,6 +5,7 @@ |
| #include "media/filters/decoder_stream_traits.h" |
| #include "base/logging.h" |
| +#include "base/metrics/histogram_macros.h" |
| #include "media/base/audio_buffer.h" |
| #include "media/base/audio_decoder.h" |
| #include "media/base/audio_decoder_config.h" |
| @@ -115,4 +116,34 @@ void DecoderStreamTraits<DemuxerStream::VIDEO>::InitializeDecoder( |
| cdm_context, init_cb, output_cb); |
| } |
| +void DecoderStreamTraits<DemuxerStream::VIDEO>::OnStreamReset( |
| + DemuxerStream* stream) { |
| + DCHECK(stream); |
| + last_keyframe_timestamp_ = base::TimeDelta(); |
| +} |
| + |
| +void DecoderStreamTraits<DemuxerStream::VIDEO>::OnDecode( |
| + const scoped_refptr<DecoderBuffer>& buffer) { |
| + if (buffer->end_of_stream()) { |
| + if (!buffer) |
|
DaleCurtis
2016/12/07 23:02:43
This can't ever be true or you've already deref'd
whywhat
2016/12/08 00:23:30
Oops, weird auto formatting obscuring a missing re
|
| + return; |
| + |
| + last_keyframe_timestamp_ = base::TimeDelta(); |
| + return; |
| + } |
| + |
| + if (!buffer->is_key_frame()) |
| + return; |
| + |
| + base::TimeDelta current_frame_timestamp = buffer->timestamp(); |
| + if (last_keyframe_timestamp_.is_zero()) { |
| + last_keyframe_timestamp_ = current_frame_timestamp; |
| + return; |
| + } |
| + |
| + UMA_HISTOGRAM_MEDIUM_TIMES( |
| + "Media.Video.KeyFrameDistance", |
| + current_frame_timestamp - last_keyframe_timestamp_); |
| +} |
| + |
| } // namespace media |