Route time-stretching metrics through libjingle
This change connects currentAccelerateRate and currentPreemptiveRate in webrtc::NetworkStatistics, through corresponding variables in VoiceReceiverInfo, to googAccelerateRate and googPreemptiveExpandRate. R=tommi@webrtc.org Review URL: https://webrtc-codereview.appspot.com/50179004 Cr-Commit-Position: refs/heads/master@{#9350}
This commit is contained in:
@@ -129,6 +129,9 @@ void ExtractStats(const cricket::VoiceReceiverInfo& info, StatsReport* report) {
|
||||
{ StatsReport::kStatsValueNameSecondaryDecodedRate,
|
||||
info.secondary_decoded_rate },
|
||||
{ StatsReport::kStatsValueNameSpeechExpandRate, info.speech_expand_rate },
|
||||
{ StatsReport::kStatsValueNameAccelerateRate, info.accelerate_rate },
|
||||
{ StatsReport::kStatsValueNamePreemptiveExpandRate,
|
||||
info.preemptive_expand_rate },
|
||||
};
|
||||
|
||||
const IntForAdd ints[] = {
|
||||
|
||||
@@ -313,6 +313,12 @@ void VerifyVoiceReceiverInfoReport(
|
||||
EXPECT_TRUE(GetValue(
|
||||
report, StatsReport::kStatsValueNameSpeechExpandRate, &value_in_report));
|
||||
EXPECT_EQ(rtc::ToString<float>(info.speech_expand_rate), value_in_report);
|
||||
EXPECT_TRUE(GetValue(report, StatsReport::kStatsValueNameAccelerateRate,
|
||||
&value_in_report));
|
||||
EXPECT_EQ(rtc::ToString<float>(info.accelerate_rate), value_in_report);
|
||||
EXPECT_TRUE(GetValue(report, StatsReport::kStatsValueNamePreemptiveExpandRate,
|
||||
&value_in_report));
|
||||
EXPECT_EQ(rtc::ToString<float>(info.preemptive_expand_rate), value_in_report);
|
||||
EXPECT_TRUE(GetValue(report, StatsReport::kStatsValueNameSecondaryDecodedRate,
|
||||
&value_in_report));
|
||||
EXPECT_EQ(rtc::ToString<float>(info.secondary_decoded_rate), value_in_report);
|
||||
@@ -451,6 +457,8 @@ void InitVoiceReceiverInfo(cricket::VoiceReceiverInfo* voice_receiver_info) {
|
||||
voice_receiver_info->expand_rate = 121;
|
||||
voice_receiver_info->speech_expand_rate = 122;
|
||||
voice_receiver_info->secondary_decoded_rate = 123;
|
||||
voice_receiver_info->accelerate_rate = 124;
|
||||
voice_receiver_info->preemptive_expand_rate = 125;
|
||||
}
|
||||
|
||||
class StatsCollectorForTest : public webrtc::StatsCollector {
|
||||
|
||||
@@ -408,6 +408,8 @@ const char* StatsReport::Value::display_name() const {
|
||||
return "datachannelid";
|
||||
|
||||
// 'goog' prefixed constants.
|
||||
case kStatsValueNameAccelerateRate:
|
||||
return "googAccelerateRate";
|
||||
case kStatsValueNameActiveConnection:
|
||||
return "googActiveConnection";
|
||||
case kStatsValueNameActualEncBitrate:
|
||||
@@ -544,6 +546,8 @@ const char* StatsReport::Value::display_name() const {
|
||||
return "googNacksReceived";
|
||||
case kStatsValueNameNacksSent:
|
||||
return "googNacksSent";
|
||||
case kStatsValueNamePreemptiveExpandRate:
|
||||
return "googPreemptiveExpandRate";
|
||||
case kStatsValueNamePlisReceived:
|
||||
return "googPlisReceived";
|
||||
case kStatsValueNamePlisSent:
|
||||
|
||||
@@ -131,6 +131,7 @@ class StatsReport {
|
||||
kStatsValueNameTransportId,
|
||||
|
||||
// Internal StatsValue names.
|
||||
kStatsValueNameAccelerateRate,
|
||||
kStatsValueNameActualEncBitrate,
|
||||
kStatsValueNameAdaptationChanges,
|
||||
kStatsValueNameAvailableReceiveBandwidth,
|
||||
@@ -197,6 +198,7 @@ class StatsReport {
|
||||
kStatsValueNameNacksSent,
|
||||
kStatsValueNamePlisReceived,
|
||||
kStatsValueNamePlisSent,
|
||||
kStatsValueNamePreemptiveExpandRate,
|
||||
kStatsValueNamePreferredJitterBufferMs,
|
||||
kStatsValueNameRemoteAddress,
|
||||
kStatsValueNameRemoteCandidateId,
|
||||
|
||||
@@ -784,14 +784,15 @@ struct VoiceReceiverInfo : public MediaReceiverInfo {
|
||||
expand_rate(0),
|
||||
speech_expand_rate(0),
|
||||
secondary_decoded_rate(0),
|
||||
accelerate_rate(0),
|
||||
preemptive_expand_rate(0),
|
||||
decoding_calls_to_silence_generator(0),
|
||||
decoding_calls_to_neteq(0),
|
||||
decoding_normal(0),
|
||||
decoding_plc(0),
|
||||
decoding_cng(0),
|
||||
decoding_plc_cng(0),
|
||||
capture_start_ntp_time_ms(-1) {
|
||||
}
|
||||
capture_start_ntp_time_ms(-1) {}
|
||||
|
||||
int ext_seqnum;
|
||||
int jitter_ms;
|
||||
@@ -805,6 +806,10 @@ struct VoiceReceiverInfo : public MediaReceiverInfo {
|
||||
float speech_expand_rate;
|
||||
// fraction of data out of secondary decoding, including FEC and RED.
|
||||
float secondary_decoded_rate;
|
||||
// Fraction of data removed through time compression.
|
||||
float accelerate_rate;
|
||||
// Fraction of data inserted through time stretching.
|
||||
float preemptive_expand_rate;
|
||||
int decoding_calls_to_silence_generator;
|
||||
int decoding_calls_to_neteq;
|
||||
int decoding_normal;
|
||||
|
||||
@@ -3345,6 +3345,10 @@ bool WebRtcVoiceMediaChannel::GetStats(VoiceMediaInfo* info) {
|
||||
static_cast<float>(ns.currentSpeechExpandRate) / (1 << 14);
|
||||
rinfo.secondary_decoded_rate =
|
||||
static_cast<float>(ns.currentSecondaryDecodedRate) / (1 << 14);
|
||||
rinfo.accelerate_rate =
|
||||
static_cast<float>(ns.currentAccelerateRate) / (1 << 14);
|
||||
rinfo.preemptive_expand_rate =
|
||||
static_cast<float>(ns.currentPreemptiveRate) / (1 << 14);
|
||||
}
|
||||
|
||||
webrtc::AudioDecodingCallStats ds;
|
||||
|
||||
@@ -2066,6 +2066,12 @@ TEST_F(WebRtcVoiceEngineTestFake, GetStatsWithMultipleSendStreams) {
|
||||
(1 << 14), info.receivers[0].speech_expand_rate);
|
||||
EXPECT_EQ(static_cast<float>(cricket::kNetStats.currentSecondaryDecodedRate) /
|
||||
(1 << 14), info.receivers[0].secondary_decoded_rate);
|
||||
EXPECT_EQ(
|
||||
static_cast<float>(cricket::kNetStats.currentAccelerateRate) / (1 << 14),
|
||||
info.receivers[0].accelerate_rate);
|
||||
EXPECT_EQ(
|
||||
static_cast<float>(cricket::kNetStats.currentPreemptiveRate) / (1 << 14),
|
||||
info.receivers[0].preemptive_expand_rate);
|
||||
}
|
||||
|
||||
// Test that we can add and remove receive streams, and do proper send/playout.
|
||||
|
||||
Reference in New Issue
Block a user