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,
|
{ StatsReport::kStatsValueNameSecondaryDecodedRate,
|
||||||
info.secondary_decoded_rate },
|
info.secondary_decoded_rate },
|
||||||
{ StatsReport::kStatsValueNameSpeechExpandRate, info.speech_expand_rate },
|
{ StatsReport::kStatsValueNameSpeechExpandRate, info.speech_expand_rate },
|
||||||
|
{ StatsReport::kStatsValueNameAccelerateRate, info.accelerate_rate },
|
||||||
|
{ StatsReport::kStatsValueNamePreemptiveExpandRate,
|
||||||
|
info.preemptive_expand_rate },
|
||||||
};
|
};
|
||||||
|
|
||||||
const IntForAdd ints[] = {
|
const IntForAdd ints[] = {
|
||||||
|
|||||||
@@ -313,6 +313,12 @@ void VerifyVoiceReceiverInfoReport(
|
|||||||
EXPECT_TRUE(GetValue(
|
EXPECT_TRUE(GetValue(
|
||||||
report, StatsReport::kStatsValueNameSpeechExpandRate, &value_in_report));
|
report, StatsReport::kStatsValueNameSpeechExpandRate, &value_in_report));
|
||||||
EXPECT_EQ(rtc::ToString<float>(info.speech_expand_rate), 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,
|
EXPECT_TRUE(GetValue(report, StatsReport::kStatsValueNameSecondaryDecodedRate,
|
||||||
&value_in_report));
|
&value_in_report));
|
||||||
EXPECT_EQ(rtc::ToString<float>(info.secondary_decoded_rate), 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->expand_rate = 121;
|
||||||
voice_receiver_info->speech_expand_rate = 122;
|
voice_receiver_info->speech_expand_rate = 122;
|
||||||
voice_receiver_info->secondary_decoded_rate = 123;
|
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 {
|
class StatsCollectorForTest : public webrtc::StatsCollector {
|
||||||
|
|||||||
@@ -408,6 +408,8 @@ const char* StatsReport::Value::display_name() const {
|
|||||||
return "datachannelid";
|
return "datachannelid";
|
||||||
|
|
||||||
// 'goog' prefixed constants.
|
// 'goog' prefixed constants.
|
||||||
|
case kStatsValueNameAccelerateRate:
|
||||||
|
return "googAccelerateRate";
|
||||||
case kStatsValueNameActiveConnection:
|
case kStatsValueNameActiveConnection:
|
||||||
return "googActiveConnection";
|
return "googActiveConnection";
|
||||||
case kStatsValueNameActualEncBitrate:
|
case kStatsValueNameActualEncBitrate:
|
||||||
@@ -544,6 +546,8 @@ const char* StatsReport::Value::display_name() const {
|
|||||||
return "googNacksReceived";
|
return "googNacksReceived";
|
||||||
case kStatsValueNameNacksSent:
|
case kStatsValueNameNacksSent:
|
||||||
return "googNacksSent";
|
return "googNacksSent";
|
||||||
|
case kStatsValueNamePreemptiveExpandRate:
|
||||||
|
return "googPreemptiveExpandRate";
|
||||||
case kStatsValueNamePlisReceived:
|
case kStatsValueNamePlisReceived:
|
||||||
return "googPlisReceived";
|
return "googPlisReceived";
|
||||||
case kStatsValueNamePlisSent:
|
case kStatsValueNamePlisSent:
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ class StatsReport {
|
|||||||
kStatsValueNameTransportId,
|
kStatsValueNameTransportId,
|
||||||
|
|
||||||
// Internal StatsValue names.
|
// Internal StatsValue names.
|
||||||
|
kStatsValueNameAccelerateRate,
|
||||||
kStatsValueNameActualEncBitrate,
|
kStatsValueNameActualEncBitrate,
|
||||||
kStatsValueNameAdaptationChanges,
|
kStatsValueNameAdaptationChanges,
|
||||||
kStatsValueNameAvailableReceiveBandwidth,
|
kStatsValueNameAvailableReceiveBandwidth,
|
||||||
@@ -197,6 +198,7 @@ class StatsReport {
|
|||||||
kStatsValueNameNacksSent,
|
kStatsValueNameNacksSent,
|
||||||
kStatsValueNamePlisReceived,
|
kStatsValueNamePlisReceived,
|
||||||
kStatsValueNamePlisSent,
|
kStatsValueNamePlisSent,
|
||||||
|
kStatsValueNamePreemptiveExpandRate,
|
||||||
kStatsValueNamePreferredJitterBufferMs,
|
kStatsValueNamePreferredJitterBufferMs,
|
||||||
kStatsValueNameRemoteAddress,
|
kStatsValueNameRemoteAddress,
|
||||||
kStatsValueNameRemoteCandidateId,
|
kStatsValueNameRemoteCandidateId,
|
||||||
|
|||||||
@@ -784,14 +784,15 @@ struct VoiceReceiverInfo : public MediaReceiverInfo {
|
|||||||
expand_rate(0),
|
expand_rate(0),
|
||||||
speech_expand_rate(0),
|
speech_expand_rate(0),
|
||||||
secondary_decoded_rate(0),
|
secondary_decoded_rate(0),
|
||||||
|
accelerate_rate(0),
|
||||||
|
preemptive_expand_rate(0),
|
||||||
decoding_calls_to_silence_generator(0),
|
decoding_calls_to_silence_generator(0),
|
||||||
decoding_calls_to_neteq(0),
|
decoding_calls_to_neteq(0),
|
||||||
decoding_normal(0),
|
decoding_normal(0),
|
||||||
decoding_plc(0),
|
decoding_plc(0),
|
||||||
decoding_cng(0),
|
decoding_cng(0),
|
||||||
decoding_plc_cng(0),
|
decoding_plc_cng(0),
|
||||||
capture_start_ntp_time_ms(-1) {
|
capture_start_ntp_time_ms(-1) {}
|
||||||
}
|
|
||||||
|
|
||||||
int ext_seqnum;
|
int ext_seqnum;
|
||||||
int jitter_ms;
|
int jitter_ms;
|
||||||
@@ -805,6 +806,10 @@ struct VoiceReceiverInfo : public MediaReceiverInfo {
|
|||||||
float speech_expand_rate;
|
float speech_expand_rate;
|
||||||
// fraction of data out of secondary decoding, including FEC and RED.
|
// fraction of data out of secondary decoding, including FEC and RED.
|
||||||
float secondary_decoded_rate;
|
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_silence_generator;
|
||||||
int decoding_calls_to_neteq;
|
int decoding_calls_to_neteq;
|
||||||
int decoding_normal;
|
int decoding_normal;
|
||||||
|
|||||||
@@ -3345,6 +3345,10 @@ bool WebRtcVoiceMediaChannel::GetStats(VoiceMediaInfo* info) {
|
|||||||
static_cast<float>(ns.currentSpeechExpandRate) / (1 << 14);
|
static_cast<float>(ns.currentSpeechExpandRate) / (1 << 14);
|
||||||
rinfo.secondary_decoded_rate =
|
rinfo.secondary_decoded_rate =
|
||||||
static_cast<float>(ns.currentSecondaryDecodedRate) / (1 << 14);
|
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;
|
webrtc::AudioDecodingCallStats ds;
|
||||||
|
|||||||
@@ -2066,6 +2066,12 @@ TEST_F(WebRtcVoiceEngineTestFake, GetStatsWithMultipleSendStreams) {
|
|||||||
(1 << 14), info.receivers[0].speech_expand_rate);
|
(1 << 14), info.receivers[0].speech_expand_rate);
|
||||||
EXPECT_EQ(static_cast<float>(cricket::kNetStats.currentSecondaryDecodedRate) /
|
EXPECT_EQ(static_cast<float>(cricket::kNetStats.currentSecondaryDecodedRate) /
|
||||||
(1 << 14), info.receivers[0].secondary_decoded_rate);
|
(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.
|
// Test that we can add and remove receive streams, and do proper send/playout.
|
||||||
|
|||||||
Reference in New Issue
Block a user