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