From 30377c7f7121dc698a905ddcc079a624e385befc Mon Sep 17 00:00:00 2001 From: "wuchengli@chromium.org" Date: Sat, 28 Sep 2013 06:06:18 +0000 Subject: [PATCH] Change the parameters of calculating maximum decode time. - Reduce the window size from 20 to 10 seconds. If there is any spurious high decode time, it will be faster to pass it. - Ignore more samples at first because HW decoder has higher initialization latency. BUG=crbug.com/298176 TEST=Run apprtc loopback on Chromebook Daisy. R=stefan@webrtc.org Review URL: https://webrtc-codereview.appspot.com/2315005 git-svn-id: http://webrtc.googlecode.com/svn/trunk@4874 4adac7df-926f-26a2-2b94-8c16560cd09d --- .../modules/video_coding/main/source/codec_timer.cc | 11 +++++++---- webrtc/modules/video_coding/main/source/codec_timer.h | 7 ++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/webrtc/modules/video_coding/main/source/codec_timer.cc b/webrtc/modules/video_coding/main/source/codec_timer.cc index 9fee00bb4d..a462258813 100644 --- a/webrtc/modules/video_coding/main/source/codec_timer.cc +++ b/webrtc/modules/video_coding/main/source/codec_timer.cc @@ -15,10 +15,13 @@ namespace webrtc { +// The first kIgnoredSampleCount samples will be ignored. +static const int32_t kIgnoredSampleCount = 5; + VCMCodecTimer::VCMCodecTimer() : _filteredMax(0), -_firstDecodeTime(true), +_ignoredSampleCount(0), _shortMax(0), _history() { @@ -35,7 +38,7 @@ int32_t VCMCodecTimer::StopTimer(int64_t startTimeMs, int64_t nowMs) void VCMCodecTimer::Reset() { _filteredMax = 0; - _firstDecodeTime = true; + _ignoredSampleCount = 0; _shortMax = 0; for (int i=0; i < MAX_HISTORY_SIZE; i++) { @@ -47,14 +50,14 @@ void VCMCodecTimer::Reset() // Update the max-value filter void VCMCodecTimer::MaxFilter(int32_t decodeTime, int64_t nowMs) { - if (!_firstDecodeTime) + if (_ignoredSampleCount >= kIgnoredSampleCount) { UpdateMaxHistory(decodeTime, nowMs); ProcessHistory(nowMs); } else { - _firstDecodeTime = false; + _ignoredSampleCount++; } } diff --git a/webrtc/modules/video_coding/main/source/codec_timer.h b/webrtc/modules/video_coding/main/source/codec_timer.h index e56aa6df80..9268e8d817 100644 --- a/webrtc/modules/video_coding/main/source/codec_timer.h +++ b/webrtc/modules/video_coding/main/source/codec_timer.h @@ -18,7 +18,7 @@ namespace webrtc { // MAX_HISTORY_SIZE * SHORT_FILTER_MS defines the window size in milliseconds -#define MAX_HISTORY_SIZE 20 +#define MAX_HISTORY_SIZE 10 #define SHORT_FILTER_MS 1000 class VCMShortMaxSample @@ -50,9 +50,10 @@ private: void ProcessHistory(int64_t nowMs); int32_t _filteredMax; - bool _firstDecodeTime; + // The number of samples ignored so far. + int32_t _ignoredSampleCount; int32_t _shortMax; - VCMShortMaxSample _history[MAX_HISTORY_SIZE]; + VCMShortMaxSample _history[MAX_HISTORY_SIZE]; };