Move RTCOutboundRTPStreamStats.roundTripTime to inbound, don't collect.

The value is being moved:
https://github.com/w3c/webrtc-stats/pull/167

Stop collecting this value. Our previous value was incorrect, our RTT
value was a smoothed value based on STUN pings but the spec says it
should be based on RTCP timestamps in RTCP Receiver Report (RR) on
inbound streams with isRemote=true (not supported).

Updated some bug references.

BUG=webrtc:7065, webrtc:7066

Review-Url: https://codereview.webrtc.org/2722633005
Cr-Commit-Position: refs/heads/master@{#16931}
This commit is contained in:
hbos 2017-03-01 01:02:45 -08:00 committed by Commit bot
parent deaf6fb071
commit a7a9be159d
5 changed files with 24 additions and 43 deletions

View File

@ -327,8 +327,8 @@ class RTCRTPStreamStats : public RTCStats {
};
// https://w3c.github.io/webrtc-stats/#inboundrtpstats-dict*
// Tracking bug crbug.com/657855
// TODO(hbos): Support the remote case |is_remote = true|. crbug.com/657855
// TODO(hbos): Support the remote case |is_remote = true|.
// https://bugs.webrtc.org/7065
class RTCInboundRTPStreamStats final : public RTCRTPStreamStats {
public:
WEBRTC_RTCSTATS_DECL();
@ -341,36 +341,38 @@ class RTCInboundRTPStreamStats final : public RTCRTPStreamStats {
RTCStatsMember<uint32_t> packets_received;
RTCStatsMember<uint64_t> bytes_received;
RTCStatsMember<uint32_t> packets_lost;
// TODO(hbos): Not collected in the "video" case by |RTCStatsCollector|.
// crbug.com/657855
// TODO(hbos): Collect and populate this value for both "audio" and "video",
// currently not collected for "video". https://bugs.webrtc.org/7065
RTCStatsMember<double> jitter;
RTCStatsMember<double> fraction_lost;
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657855
// TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065
RTCStatsMember<double> round_trip_time;
// TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065
RTCStatsMember<uint32_t> packets_discarded;
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657855
// TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065
RTCStatsMember<uint32_t> packets_repaired;
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657855
// TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065
RTCStatsMember<uint32_t> burst_packets_lost;
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657855
// TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065
RTCStatsMember<uint32_t> burst_packets_discarded;
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657855
// TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065
RTCStatsMember<uint32_t> burst_loss_count;
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657855
// TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065
RTCStatsMember<uint32_t> burst_discard_count;
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657855
// TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065
RTCStatsMember<double> burst_loss_rate;
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657855
// TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065
RTCStatsMember<double> burst_discard_rate;
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657855
// TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065
RTCStatsMember<double> gap_loss_rate;
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657855
// TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065
RTCStatsMember<double> gap_discard_rate;
RTCStatsMember<uint32_t> frames_decoded;
};
// https://w3c.github.io/webrtc-stats/#outboundrtpstats-dict*
// Tracking bug crbug.com/657856
// TODO(hbos): Support the remote case |is_remote = true|. crbug.com/657856
// TODO(hbos): Support the remote case |is_remote = true|.
// https://bugs.webrtc.org/7066
class RTCOutboundRTPStreamStats final : public RTCRTPStreamStats {
public:
WEBRTC_RTCSTATS_DECL();
@ -382,9 +384,8 @@ class RTCOutboundRTPStreamStats final : public RTCRTPStreamStats {
RTCStatsMember<uint32_t> packets_sent;
RTCStatsMember<uint64_t> bytes_sent;
// TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/657856
// TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7066
RTCStatsMember<double> target_bitrate;
RTCStatsMember<double> round_trip_time;
RTCStatsMember<uint32_t> frames_encoded;
};

View File

@ -553,6 +553,7 @@ class RTCStatsReportVerifier {
verifier.TestMemberIsNonNegative<double>(inbound_stream.jitter);
}
verifier.TestMemberIsNonNegative<double>(inbound_stream.fraction_lost);
verifier.TestMemberIsUndefined(inbound_stream.round_trip_time);
verifier.TestMemberIsUndefined(inbound_stream.packets_discarded);
verifier.TestMemberIsUndefined(inbound_stream.packets_repaired);
verifier.TestMemberIsUndefined(inbound_stream.burst_packets_lost);
@ -585,8 +586,6 @@ class RTCStatsReportVerifier {
verifier.TestMemberIsNonNegative<uint32_t>(outbound_stream.packets_sent);
verifier.TestMemberIsNonNegative<uint64_t>(outbound_stream.bytes_sent);
verifier.TestMemberIsUndefined(outbound_stream.target_bitrate);
// TODO(hbos): Defined in video but not audio case. Why? crbug.com/669877
verifier.MarkMemberTested(outbound_stream.round_trip_time, true);
if (outbound_stream.media_type.is_defined() &&
*outbound_stream.media_type == "video") {
verifier.TestMemberIsDefined(outbound_stream.frames_encoded);

View File

@ -261,10 +261,6 @@ void SetOutboundRTPStreamStatsFromMediaSenderInfo(
static_cast<uint32_t>(media_sender_info.packets_sent);
outbound_stats->bytes_sent =
static_cast<uint64_t>(media_sender_info.bytes_sent);
if (media_sender_info.rtt_ms >= 0) {
outbound_stats->round_trip_time = static_cast<double>(
media_sender_info.rtt_ms) / rtc::kNumMillisecsPerSec;
}
}
void SetOutboundRTPStreamStatsFromVoiceSenderInfo(

View File

@ -1959,7 +1959,6 @@ TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Audio) {
voice_media_info.senders[0].local_stats[0].ssrc = 1;
voice_media_info.senders[0].packets_sent = 2;
voice_media_info.senders[0].bytes_sent = 3;
voice_media_info.senders[0].rtt_ms = -1;
voice_media_info.senders[0].codec_payload_type = rtc::Optional<int>(42);
RtpCodecParameters codec_parameters;
@ -2005,22 +2004,12 @@ TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Audio) {
expected_audio.codec_id = "RTCCodec_OutboundAudio_42";
expected_audio.packets_sent = 2;
expected_audio.bytes_sent = 3;
// |expected_audio.round_trip_time| should be undefined.
ASSERT_TRUE(report->Get(expected_audio.id()));
EXPECT_EQ(
report->Get(expected_audio.id())->cast_to<RTCOutboundRTPStreamStats>(),
expected_audio);
// Set previously undefined values and "GetStats" again.
voice_media_info.senders[0].rtt_ms = 4500;
expected_audio.round_trip_time = 4.5;
EXPECT_CALL(*voice_media_channel, GetStats(_))
.WillOnce(DoAll(SetArgPointee<0>(voice_media_info), Return(true)));
collector_->ClearCachedStatsReport();
report = GetStatsReport();
ASSERT_TRUE(report->Get(expected_audio.id()));
EXPECT_EQ(
report->Get(expected_audio.id())->cast_to<RTCOutboundRTPStreamStats>(),
@ -2050,7 +2039,6 @@ TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Video) {
video_media_info.senders[0].nacks_rcvd = 4;
video_media_info.senders[0].packets_sent = 5;
video_media_info.senders[0].bytes_sent = 6;
video_media_info.senders[0].rtt_ms = -1;
video_media_info.senders[0].codec_payload_type = rtc::Optional<int>(42);
video_media_info.senders[0].frames_encoded = 8;
video_media_info.senders[0].qp_sum = rtc::Optional<uint64_t>();
@ -2102,8 +2090,7 @@ TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Video) {
expected_video.packets_sent = 5;
expected_video.bytes_sent = 6;
expected_video.frames_encoded = 8;
// |expected_video.round_trip_time| and |expected_video.qp_sum| should be
// undefined.
// |expected_video.qp_sum| should be undefined.
ASSERT_TRUE(report->Get(expected_video.id()));
EXPECT_EQ(
@ -2111,9 +2098,7 @@ TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Video) {
expected_video);
// Set previously undefined values and "GetStats" again.
video_media_info.senders[0].rtt_ms = 7500;
video_media_info.senders[0].qp_sum = rtc::Optional<uint64_t>(9);
expected_video.round_trip_time = 7.5;
expected_video.qp_sum = 9;
EXPECT_CALL(*video_media_channel, GetStats(_))

View File

@ -513,6 +513,7 @@ WEBRTC_RTCSTATS_IMPL(
&packets_lost,
&jitter,
&fraction_lost,
&round_trip_time,
&packets_discarded,
&packets_repaired,
&burst_packets_lost,
@ -538,6 +539,7 @@ RTCInboundRTPStreamStats::RTCInboundRTPStreamStats(
packets_lost("packetsLost"),
jitter("jitter"),
fraction_lost("fractionLost"),
round_trip_time("roundTripTime"),
packets_discarded("packetsDiscarded"),
packets_repaired("packetsRepaired"),
burst_packets_lost("burstPacketsLost"),
@ -559,6 +561,7 @@ RTCInboundRTPStreamStats::RTCInboundRTPStreamStats(
packets_lost(other.packets_lost),
jitter(other.jitter),
fraction_lost(other.fraction_lost),
round_trip_time(other.round_trip_time),
packets_discarded(other.packets_discarded),
packets_repaired(other.packets_repaired),
burst_packets_lost(other.burst_packets_lost),
@ -580,7 +583,6 @@ WEBRTC_RTCSTATS_IMPL(
&packets_sent,
&bytes_sent,
&target_bitrate,
&round_trip_time,
&frames_encoded);
RTCOutboundRTPStreamStats::RTCOutboundRTPStreamStats(
@ -594,7 +596,6 @@ RTCOutboundRTPStreamStats::RTCOutboundRTPStreamStats(
packets_sent("packetsSent"),
bytes_sent("bytesSent"),
target_bitrate("targetBitrate"),
round_trip_time("roundTripTime"),
frames_encoded("framesEncoded") {
}
@ -604,7 +605,6 @@ RTCOutboundRTPStreamStats::RTCOutboundRTPStreamStats(
packets_sent(other.packets_sent),
bytes_sent(other.bytes_sent),
target_bitrate(other.target_bitrate),
round_trip_time(other.round_trip_time),
frames_encoded(other.frames_encoded) {
}