Adding decoded_fec_rate to NetEQ Network Statistics.
A statistic is introduced to reflect the actual benefits of Opus FEC. It shows what percentage of samples in the rendered audio come from FEC data.
BUG=3867
R=henrik.lundin@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/34969004
Cr-Commit-Position: refs/heads/master@{#8384}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8384 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/modules/audio_coding/neteq/neteq_unittest.cc b/webrtc/modules/audio_coding/neteq/neteq_unittest.cc
index 498cde3..420e7bf 100644
--- a/webrtc/modules/audio_coding/neteq/neteq_unittest.cc
+++ b/webrtc/modules/audio_coding/neteq/neteq_unittest.cc
@@ -137,13 +137,42 @@
void RefFiles::ReadFromFileAndCompare(
const NetEqNetworkStatistics& stats) {
+ // TODO(minyue): Update resource/audio_coding/neteq_network_stats.dat and
+ // resource/audio_coding/neteq_network_stats_win32.dat.
+ struct NetEqNetworkStatisticsOld {
+ uint16_t current_buffer_size_ms; // Current jitter buffer size in ms.
+ uint16_t preferred_buffer_size_ms; // Target buffer size in ms.
+ uint16_t jitter_peaks_found; // 1 if adding extra delay due to peaky
+ // jitter; 0 otherwise.
+ uint16_t packet_loss_rate; // Loss rate (network + late) in Q14.
+ uint16_t packet_discard_rate; // Late loss rate in Q14.
+ uint16_t expand_rate; // Fraction (of original stream) of synthesized
+ // speech inserted through expansion (in Q14).
+ uint16_t preemptive_rate; // Fraction of data inserted through pre-emptive
+ // expansion (in Q14).
+ uint16_t accelerate_rate; // Fraction of data removed through acceleration
+ // (in Q14).
+ int32_t clockdrift_ppm; // Average clock-drift in parts-per-million
+ // (positive or negative).
+ int added_zero_samples; // Number of zero samples added in "off" mode.
+ };
if (input_fp_) {
// Read from ref file.
- size_t stat_size = sizeof(NetEqNetworkStatistics);
- NetEqNetworkStatistics ref_stats;
+ size_t stat_size = sizeof(NetEqNetworkStatisticsOld);
+ NetEqNetworkStatisticsOld ref_stats;
ASSERT_EQ(1u, fread(&ref_stats, stat_size, 1, input_fp_));
// Compare
- ASSERT_EQ(0, memcmp(&stats, &ref_stats, stat_size));
+ ASSERT_EQ(stats.current_buffer_size_ms, ref_stats.current_buffer_size_ms);
+ ASSERT_EQ(stats.preferred_buffer_size_ms,
+ ref_stats.preferred_buffer_size_ms);
+ ASSERT_EQ(stats.jitter_peaks_found, ref_stats.jitter_peaks_found);
+ ASSERT_EQ(stats.packet_loss_rate, ref_stats.packet_loss_rate);
+ ASSERT_EQ(stats.packet_discard_rate, ref_stats.packet_discard_rate);
+ ASSERT_EQ(stats.preemptive_rate, ref_stats.preemptive_rate);
+ ASSERT_EQ(stats.accelerate_rate, ref_stats.accelerate_rate);
+ ASSERT_EQ(stats.clockdrift_ppm, ref_stats.clockdrift_ppm);
+ ASSERT_EQ(stats.added_zero_samples, ref_stats.added_zero_samples);
+ ASSERT_EQ(stats.secondary_decoded_rate, 0);
}
}