| Index: media/filters/decoder_stream_traits.cc
|
| diff --git a/media/filters/decoder_stream_traits.cc b/media/filters/decoder_stream_traits.cc
|
| index fcbc19e4baa8e7f680afb3b22f3caa0d6842a03c..0edc6f2d1d06f66133f73fc78c8b74105ae44826 100644
|
| --- a/media/filters/decoder_stream_traits.cc
|
| +++ b/media/filters/decoder_stream_traits.cc
|
| @@ -28,15 +28,6 @@ bool DecoderStreamTraits<DemuxerStream::AUDIO>::NeedsBitstreamConversion(
|
| }
|
|
|
| // static
|
| -void DecoderStreamTraits<DemuxerStream::AUDIO>::ReportStatistics(
|
| - const StatisticsCB& statistics_cb,
|
| - int bytes_decoded) {
|
| - PipelineStatistics statistics;
|
| - statistics.audio_bytes_decoded = bytes_decoded;
|
| - statistics_cb.Run(statistics);
|
| -}
|
| -
|
| -// static
|
| scoped_refptr<DecoderStreamTraits<DemuxerStream::AUDIO>::OutputType>
|
| DecoderStreamTraits<DemuxerStream::AUDIO>::CreateEOSOutput() {
|
| return OutputType::CreateEOSBuffer();
|
| @@ -46,6 +37,14 @@ DecoderStreamTraits<DemuxerStream::AUDIO>::DecoderStreamTraits(
|
| const scoped_refptr<MediaLog>& media_log)
|
| : media_log_(media_log) {}
|
|
|
| +void DecoderStreamTraits<DemuxerStream::AUDIO>::ReportStatistics(
|
| + const StatisticsCB& statistics_cb,
|
| + int bytes_decoded) {
|
| + PipelineStatistics statistics;
|
| + statistics.audio_bytes_decoded = bytes_decoded;
|
| + statistics_cb.Run(statistics);
|
| +}
|
| +
|
| void DecoderStreamTraits<DemuxerStream::AUDIO>::InitializeDecoder(
|
| DecoderType* decoder,
|
| DemuxerStream* stream,
|
| @@ -90,20 +89,26 @@ bool DecoderStreamTraits<DemuxerStream::VIDEO>::NeedsBitstreamConversion(
|
| }
|
|
|
| // static
|
| +scoped_refptr<DecoderStreamTraits<DemuxerStream::VIDEO>::OutputType>
|
| +DecoderStreamTraits<DemuxerStream::VIDEO>::CreateEOSOutput() {
|
| + return OutputType::CreateEOSFrame();
|
| +}
|
| +
|
| +DecoderStreamTraits<DemuxerStream::VIDEO>::DecoderStreamTraits(
|
| + const scoped_refptr<MediaLog>& media_log)
|
| + // Randomly selected number of samples to keep.
|
| + : keyframe_distance_average_(16) {}
|
| +
|
| void DecoderStreamTraits<DemuxerStream::VIDEO>::ReportStatistics(
|
| const StatisticsCB& statistics_cb,
|
| int bytes_decoded) {
|
| PipelineStatistics statistics;
|
| statistics.video_bytes_decoded = bytes_decoded;
|
| + statistics.video_keyframe_distance_average_ms =
|
| + keyframe_distance_average_.Average().InMilliseconds();
|
| statistics_cb.Run(statistics);
|
| }
|
|
|
| -// static
|
| -scoped_refptr<DecoderStreamTraits<DemuxerStream::VIDEO>::OutputType>
|
| - DecoderStreamTraits<DemuxerStream::VIDEO>::CreateEOSOutput() {
|
| - return OutputType::CreateEOSFrame();
|
| -}
|
| -
|
| void DecoderStreamTraits<DemuxerStream::VIDEO>::InitializeDecoder(
|
| DecoderType* decoder,
|
| DemuxerStream* stream,
|
| @@ -141,10 +146,11 @@ void DecoderStreamTraits<DemuxerStream::VIDEO>::OnDecode(
|
| return;
|
| }
|
|
|
| - UMA_HISTOGRAM_MEDIUM_TIMES(
|
| - "Media.Video.KeyFrameDistance",
|
| - current_frame_timestamp - last_keyframe_timestamp_);
|
| + base::TimeDelta frame_distance =
|
| + current_frame_timestamp - last_keyframe_timestamp_;
|
| + UMA_HISTOGRAM_MEDIUM_TIMES("Media.Video.KeyFrameDistance", frame_distance);
|
| last_keyframe_timestamp_ = current_frame_timestamp;
|
| + keyframe_distance_average_.AddSample(frame_distance);
|
| }
|
|
|
| } // namespace media
|
|
|