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
diff --git a/webrtc/modules/video_coding/main/source/codec_timer.cc b/webrtc/modules/video_coding/main/source/codec_timer.cc
index 9fee00b..a462258 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 @@
void VCMCodecTimer::Reset()
{
_filteredMax = 0;
- _firstDecodeTime = true;
+ _ignoredSampleCount = 0;
_shortMax = 0;
for (int i=0; i < MAX_HISTORY_SIZE; i++)
{
@@ -47,14 +50,14 @@
// 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 e56aa6d..9268e8d 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 @@
{
// 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 @@
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];
};