Add minimum waiting time to NetEQ metrics
Adding minWaitingTimeMs to ACMNetworkStatistics and to
NetworkStatistics. Also adding unittest.
TEST=audio_coding_unittests
Review URL: http://webrtc-codereview.appspot.com/350006
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1408 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/src/common_types.h b/src/common_types.h
index 02d712e..8106945 100644
--- a/src/common_types.h
+++ b/src/common_types.h
@@ -271,6 +271,8 @@
int meanWaitingTimeMs;
// median packet waiting time in the jitter buffer (ms)
int medianWaitingTimeMs;
+ // min packet waiting time in the jitter buffer (ms)
+ int minWaitingTimeMs;
// max packet waiting time in the jitter buffer (ms)
int maxWaitingTimeMs;
};
diff --git a/src/modules/audio_coding/main/interface/audio_coding_module_typedefs.h b/src/modules/audio_coding/main/interface/audio_coding_module_typedefs.h
index 527ea94..c0e06ef 100644
--- a/src/modules/audio_coding/main/interface/audio_coding_module_typedefs.h
+++ b/src/modules/audio_coding/main/interface/audio_coding_module_typedefs.h
@@ -160,6 +160,7 @@
// rate is higher than sender sample rate.
// -meanWaitingTimeMs : average packet waiting time in the buffer
// -medianWaitingTimeMs : median packet waiting time in the buffer
+// -minWaitingTimeMs : min packet waiting time in the buffer
// -maxWaitingTimeMs : max packet waiting time in the buffer
typedef struct {
WebRtc_UWord16 currentBufferSize;
@@ -173,6 +174,7 @@
int32_t clockDriftPPM;
int meanWaitingTimeMs;
int medianWaitingTimeMs;
+ int minWaitingTimeMs;
int maxWaitingTimeMs;
} ACMNetworkStatistics;
diff --git a/src/modules/audio_coding/main/source/acm_neteq.cc b/src/modules/audio_coding/main/source/acm_neteq.cc
index 14afcd8..30a6a1e 100644
--- a/src/modules/audio_coding/main/source/acm_neteq.cc
+++ b/src/modules/audio_coding/main/source/acm_neteq.cc
@@ -486,6 +486,7 @@
{
statistics->meanWaitingTimeMs = -1;
statistics->medianWaitingTimeMs = -1;
+ statistics->minWaitingTimeMs = -1;
statistics->maxWaitingTimeMs = -1;
}
else
@@ -500,6 +501,7 @@
{
statistics->medianWaitingTimeMs = waiting_times_vec[size / 2];
}
+ statistics->minWaitingTimeMs = waiting_times_vec.front();
statistics->maxWaitingTimeMs = waiting_times_vec.back();
double sum = 0;
for (size_t i = 0; i < size; ++i) {
diff --git a/src/modules/audio_coding/main/source/acm_neteq_unittest.cc b/src/modules/audio_coding/main/source/acm_neteq_unittest.cc
index 88029de..7feb2e0 100644
--- a/src/modules/audio_coding/main/source/acm_neteq_unittest.cc
+++ b/src/modules/audio_coding/main/source/acm_neteq_unittest.cc
@@ -113,6 +113,7 @@
EXPECT_EQ(0, stats.currentAccelerateRate);
EXPECT_EQ(-916, stats.clockDriftPPM); // Initial value is slightly off.
EXPECT_EQ(300, stats.maxWaitingTimeMs);
+ EXPECT_EQ(10, stats.minWaitingTimeMs);
EXPECT_EQ(159, stats.meanWaitingTimeMs);
EXPECT_EQ(160, stats.medianWaitingTimeMs);
}
@@ -137,6 +138,7 @@
EXPECT_EQ(0, stats.currentPreemptiveRate);
EXPECT_EQ(0, stats.currentAccelerateRate);
EXPECT_EQ(-916, stats.clockDriftPPM); // Initial value is slightly off.
+ EXPECT_EQ(-1, stats.minWaitingTimeMs);
EXPECT_EQ(-1, stats.maxWaitingTimeMs);
EXPECT_EQ(-1, stats.meanWaitingTimeMs);
EXPECT_EQ(-1, stats.medianWaitingTimeMs);
diff --git a/src/modules/audio_coding/main/test/APITest.cc b/src/modules/audio_coding/main/test/APITest.cc
index c25bfc0..ed44178 100644
--- a/src/modules/audio_coding/main/test/APITest.cc
+++ b/src/modules/audio_coding/main/test/APITest.cc
@@ -987,6 +987,7 @@
fprintf(stdout, "Clock-drift............. %d\n", networkStat.clockDriftPPM);
fprintf(stdout, "Mean waiting time....... %d\n", networkStat.meanWaitingTimeMs);
fprintf(stdout, "Median waiting time..... %d\n", networkStat.medianWaitingTimeMs);
+ fprintf(stdout, "Min waiting time........ %d\n", networkStat.minWaitingTimeMs);
fprintf(stdout, "Max waiting time........ %d\n", networkStat.maxWaitingTimeMs);
}
diff --git a/src/voice_engine/main/test/auto_test/voe_standard_test.cc b/src/voice_engine/main/test/auto_test/voe_standard_test.cc
index bd72808..4abb40e 100644
--- a/src/voice_engine/main/test/auto_test/voe_standard_test.cc
+++ b/src/voice_engine/main/test/auto_test/voe_standard_test.cc
@@ -2593,6 +2593,8 @@
nStats.meanWaitingTimeMs);
TEST_LOG(" medianWaitingTimeMs = %i \n",
nStats.medianWaitingTimeMs);
+ TEST_LOG(" minWaitingTimeMs = %i \n",
+ nStats.minWaitingTimeMs);
TEST_LOG(" maxWaitingTimeMs = %i \n",
nStats.maxWaitingTimeMs);
#else