diff --git a/src/common_types.h b/src/common_types.h index 02d712e62b..81069450ce 100644 --- a/src/common_types.h +++ b/src/common_types.h @@ -271,6 +271,8 @@ struct NetworkStatistics // NETEQ statistics 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 527ea94aff..c0e06efcd5 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 @@ enum ACMAMRPackingFormat { // 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 @@ typedef struct { 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 14afcd8068..30a6a1e36d 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 @@ ACMNetEQ::NetworkStatistics( { statistics->meanWaitingTimeMs = -1; statistics->medianWaitingTimeMs = -1; + statistics->minWaitingTimeMs = -1; statistics->maxWaitingTimeMs = -1; } else @@ -500,6 +501,7 @@ ACMNetEQ::NetworkStatistics( { 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 88029de333..7feb2e0787 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 @@ TEST_F(AcmNetEqTest, NetworkStatistics) { 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 @@ TEST_F(AcmNetEqTest, TestZeroLengthWaitingTimesVector) { 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 c25bfc03ab..ed441788c9 100644 --- a/src/modules/audio_coding/main/test/APITest.cc +++ b/src/modules/audio_coding/main/test/APITest.cc @@ -987,6 +987,7 @@ APITest::TestDelay(char side) 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 bd72808aae..4abb40e5e6 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 @@ TEST_MUSTPASS(voe_codec_->SetSendCodec(0, ci)); nStats.meanWaitingTimeMs); TEST_LOG(" medianWaitingTimeMs = %i \n", nStats.medianWaitingTimeMs); + TEST_LOG(" minWaitingTimeMs = %i \n", + nStats.minWaitingTimeMs); TEST_LOG(" maxWaitingTimeMs = %i \n", nStats.maxWaitingTimeMs); #else