From 67d2d35443c32e84880f52e7af41cc209be63833 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Bostr=C3=B6m?= Date: Wed, 15 Jun 2022 06:39:56 +0000 Subject: [PATCH] Revert "Reland "[Stats] Cleanup: Remove unimplemented metrics and obsolete TODOs."" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 2843bbc96dc3deee0406bac5ec9440cf3385ef2e. Reason for revert: Even more references to unimplemented metrics remaining... Original change's description: > Reland "[Stats] Cleanup: Remove unimplemented metrics and obsolete TODOs." > > This is a reland of commit 626f87d90501fd8d7a4ea071686cd8befd0d430c > > Original change's description: > > [Stats] Cleanup: Remove unimplemented metrics and obsolete TODOs. > > > > In preparation for the spec moving closer to PR, let's not have > > placeholder metrics not implemented. > > > > Bug: webrtc:14167 > > Change-Id: If4688ef85b57f88154d490186b306b30414874e4 > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/265383 > > Reviewed-by: Harald Alvestrand > > Commit-Queue: Henrik Boström > > Cr-Commit-Position: refs/heads/main@{#37205} > > Bug: webrtc:14167 > Change-Id: Ifdc37e7a48fea516c727c06d2f510780386cb204 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/265805 > Reviewed-by: Harald Alvestrand > Auto-Submit: Henrik Boström > Commit-Queue: Harald Alvestrand > Cr-Commit-Position: refs/heads/main@{#37215} Bug: webrtc:14167 Change-Id: I959d61512d5896224302a70aadbac6f75afc819e No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/265810 Commit-Queue: Henrik Boström Bot-Commit: rubber-stamper@appspot.gserviceaccount.com Cr-Commit-Position: refs/heads/main@{#37217} --- api/stats/rtcstats_objects.h | 123 ++++++++++++++++++++++++-------- pc/rtc_stats_integrationtest.cc | 25 +++++++ stats/rtcstats_objects.cc | 63 ++++++++++++++++ 3 files changed, 181 insertions(+), 30 deletions(-) diff --git a/api/stats/rtcstats_objects.h b/api/stats/rtcstats_objects.h index 6984169b41..7f93c1c91c 100644 --- a/api/stats/rtcstats_objects.h +++ b/api/stats/rtcstats_objects.h @@ -176,7 +176,7 @@ class RTC_EXPORT RTCDataChannelStats final : public RTCStats { RTCStatsMember label; RTCStatsMember protocol; RTCStatsMember data_channel_identifier; - // Enum type RTCDataChannelState. + // TODO(hbos): Support enum types? "RTCStatsMember"? RTCStatsMember state; RTCStatsMember messages_sent; RTCStatsMember bytes_sent; @@ -185,6 +185,7 @@ class RTC_EXPORT RTCDataChannelStats final : public RTCStats { }; // https://w3c.github.io/webrtc-stats/#candidatepair-dict* +// TODO(hbos): Tracking bug https://bugs.webrtc.org/7062 class RTC_EXPORT RTCIceCandidatePairStats final : public RTCStats { public: WEBRTC_RTCSTATS_DECL(); @@ -197,16 +198,17 @@ class RTC_EXPORT RTCIceCandidatePairStats final : public RTCStats { RTCStatsMember transport_id; RTCStatsMember local_candidate_id; RTCStatsMember remote_candidate_id; - // Enum type RTCStatsIceCandidatePairState. + // TODO(hbos): Support enum types? + // "RTCStatsMember"? RTCStatsMember state; // Obsolete: priority RTCStatsMember priority; RTCStatsMember nominated; - // `writable` does not exist in the spec and old comments suggest it used to - // exist but was incorrectly implemented. - // TODO(https://crbug.com/webrtc/14171): Standardize and/or modify - // implementation. + // TODO(hbos): Collect this the way the spec describes it. We have a value for + // it but it is not spec-compliant. https://bugs.webrtc.org/7062 RTCStatsMember writable; + // TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7062 + RTCStatsMember readable; RTCStatsMember packets_sent; RTCStatsMember packets_received; RTCStatsMember bytes_sent; @@ -214,17 +216,35 @@ class RTC_EXPORT RTCIceCandidatePairStats final : public RTCStats { RTCStatsMember total_round_trip_time; RTCStatsMember current_round_trip_time; RTCStatsMember available_outgoing_bitrate; + // TODO(hbos): Populate this value. It is wired up and collected the same way + // "VideoBwe.googAvailableReceiveBandwidth" is, but that value is always + // undefined. https://bugs.webrtc.org/7062 RTCStatsMember available_incoming_bitrate; RTCStatsMember requests_received; RTCStatsMember requests_sent; RTCStatsMember responses_received; RTCStatsMember responses_sent; + // TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7062 + RTCStatsMember retransmissions_received; + // TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7062 + RTCStatsMember retransmissions_sent; + // TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7062 + RTCStatsMember consent_requests_received; RTCStatsMember consent_requests_sent; + // TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7062 + RTCStatsMember consent_responses_received; + // TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7062 + RTCStatsMember consent_responses_sent; RTCStatsMember packets_discarded_on_send; RTCStatsMember bytes_discarded_on_send; }; // https://w3c.github.io/webrtc-stats/#icecandidate-dict* +// TODO(hbos): `RTCStatsCollector` only collects candidates that are part of +// ice candidate pairs, but there could be candidates not paired with anything. +// crbug.com/632723 +// TODO(qingsi): Add the stats of STUN binding requests (keepalives) and collect +// them in the new PeerConnection::GetStats. class RTC_EXPORT RTCIceCandidateStats : public RTCStats { public: WEBRTC_RTCSTATS_DECL(); @@ -241,7 +261,7 @@ class RTC_EXPORT RTCIceCandidateStats : public RTCStats { RTCStatsMember port; RTCStatsMember protocol; RTCStatsMember relay_protocol; - // Enum type RTCIceCandidateType. + // TODO(hbos): Support enum types? "RTCStatsMember"? RTCStatsMember candidate_type; RTCStatsMember priority; RTCStatsMember url; @@ -280,8 +300,8 @@ class RTC_EXPORT RTCRemoteIceCandidateStats final const char* type() const override; }; -// https://w3c.github.io/webrtc-stats/#dom-rtcmediastreamstats -// TODO(https://crbug.com/webrtc/14172): Deprecate and remove. +// https://w3c.github.io/webrtc-stats/#msstats-dict* +// TODO(hbos): Tracking bug crbug.com/660827 class RTC_EXPORT RTCMediaStreamStats final : public RTCStats { public: WEBRTC_RTCSTATS_DECL(); @@ -295,8 +315,8 @@ class RTC_EXPORT RTCMediaStreamStats final : public RTCStats { RTCStatsMember> track_ids; }; -// TODO(https://crbug.com/webrtc/14175): Deprecate and remove in favor of -// RTCMediaSourceStats/RTCOutboundRtpStreamStats and RTCInboundRtpStreamStats. +// https://w3c.github.io/webrtc-stats/#mststats-dict* +// TODO(hbos): Tracking bug crbug.com/659137 class RTC_EXPORT RTCMediaStreamTrackStats final : public RTCStats { public: WEBRTC_RTCSTATS_DECL(); @@ -314,20 +334,29 @@ class RTC_EXPORT RTCMediaStreamTrackStats final : public RTCStats { RTCStatsMember media_source_id; RTCStatsMember remote_source; RTCStatsMember ended; - // TODO(https://crbug.com/webrtc/14173): Remove this obsolete metric. + // TODO(hbos): `RTCStatsCollector` does not return stats for detached tracks. + // crbug.com/659137 RTCStatsMember detached; - // Enum type RTCMediaStreamTrackKind. + // See `RTCMediaStreamTrackKind` for valid values. RTCStatsMember kind; RTCStatsMember jitter_buffer_delay; RTCStatsMember jitter_buffer_emitted_count; // Video-only members RTCStatsMember frame_width; RTCStatsMember frame_height; + // TODO(hbos): Not collected by `RTCStatsCollector`. crbug.com/659137 + RTCStatsMember frames_per_second; RTCStatsMember frames_sent; RTCStatsMember huge_frames_sent; RTCStatsMember frames_received; RTCStatsMember frames_decoded; RTCStatsMember frames_dropped; + // TODO(hbos): Not collected by `RTCStatsCollector`. crbug.com/659137 + RTCStatsMember frames_corrupted; + // TODO(hbos): Not collected by `RTCStatsCollector`. crbug.com/659137 + RTCStatsMember partial_frames_lost; + // TODO(hbos): Not collected by `RTCStatsCollector`. crbug.com/659137 + RTCStatsMember full_frames_lost; // Audio-only members RTCStatsMember audio_level; // Receive-only RTCStatsMember total_audio_energy; // Receive-only @@ -341,7 +370,7 @@ class RTC_EXPORT RTCMediaStreamTrackStats final : public RTCStats { RTCStatsMember inserted_samples_for_deceleration; RTCStatsMember removed_samples_for_acceleration; // Non-standard audio-only member - // https://w3c.github.io/webrtc-provisional-stats/#dom-rtcaudioreceiverstats-jitterbufferflushes + // TODO(kuddai): Add description to standard. crbug.com/webrtc/10042 RTCNonStandardStatsMember jitter_buffer_flushes; RTCNonStandardStatsMember delayed_packet_outage_samples; RTCNonStandardStatsMember relative_packet_arrival_delay; @@ -351,15 +380,14 @@ class RTC_EXPORT RTCMediaStreamTrackStats final : public RTCStats { // delay, in seconds, at the time that the sample was emitted from the jitter // buffer. (https://github.com/w3c/webrtc-provisional-stats/pull/20) // Currently it is implemented only for audio. - // TODO(https://crbug.com/webrtc/14176): This should be moved to - // RTCInboundRtpStreamStats and it should be implemented for video as well. + // TODO(titovartem) implement for video streams when will be requested. RTCNonStandardStatsMember jitter_buffer_target_delay; // TODO(henrik.lundin): Add description of the interruption metrics at - // https://github.com/w3c/webrtc-provisional-stats/issues/17 + // https://github.com/henbos/webrtc-provisional-stats/issues/17 RTCNonStandardStatsMember interruption_count; RTCNonStandardStatsMember total_interruption_duration; // Non-standard video-only members. - // https://w3c.github.io/webrtc-provisional-stats/#dom-rtcvideoreceiverstats + // https://henbos.github.io/webrtc-provisional-stats/#RTCVideoReceiverStats-dict* RTCNonStandardStatsMember freeze_count; RTCNonStandardStatsMember pause_count; RTCNonStandardStatsMember total_freezes_duration; @@ -383,6 +411,7 @@ class RTC_EXPORT RTCPeerConnectionStats final : public RTCStats { }; // https://w3c.github.io/webrtc-stats/#streamstats-dict* +// TODO(hbos): Tracking bug crbug.com/657854 class RTC_EXPORT RTCRTPStreamStats : public RTCStats { public: WEBRTC_RTCSTATS_DECL(); @@ -413,6 +442,13 @@ class RTC_EXPORT RTCReceivedRtpStreamStats : public RTCRTPStreamStats { RTCReceivedRtpStreamStats(const RTCReceivedRtpStreamStats& other); ~RTCReceivedRtpStreamStats() override; + // TODO(hbos) The following fields need to be added and migrated + // both from RTCInboundRtpStreamStats and RTCRemoteInboundRtpStreamStats: + // packetsReceived, packetsRepaired, burstPacketsLost, + // burstPacketDiscarded, burstLossCount, burstDiscardCount, burstLossRate, + // burstDiscardRate, gapLossRate, gapDiscardRate, framesDropped, + // partialFramesLost, fullFramesLost + // crbug.com/webrtc/12532 RTCStatsMember jitter; RTCStatsMember packets_lost; // Signed per RFC 3550 RTCStatsMember packets_discarded; @@ -439,6 +475,8 @@ class RTC_EXPORT RTCSentRtpStreamStats : public RTCRTPStreamStats { }; // https://w3c.github.io/webrtc-stats/#inboundrtpstats-dict* +// TODO(hbos): Support the remote case |is_remote = true|. +// https://bugs.webrtc.org/7065 class RTC_EXPORT RTCInboundRTPStreamStats final : public RTCReceivedRtpStreamStats { public: @@ -449,8 +487,6 @@ class RTC_EXPORT RTCInboundRTPStreamStats final RTCInboundRTPStreamStats(const RTCInboundRTPStreamStats& other); ~RTCInboundRTPStreamStats() override; - // TODO(https://crbug.com/webrtc/14174): Implement trackIdentifier and kind. - RTCStatsMember remote_id; RTCStatsMember packets_received; RTCStatsMember fec_packets_received; @@ -469,28 +505,48 @@ class RTC_EXPORT RTCInboundRTPStreamStats final RTCStatsMember audio_level; RTCStatsMember total_audio_energy; RTCStatsMember total_samples_duration; + // TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065 + RTCStatsMember round_trip_time; + // TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065 + RTCStatsMember packets_repaired; + // TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065 + RTCStatsMember burst_packets_lost; + // TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065 + RTCStatsMember burst_packets_discarded; + // TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065 + RTCStatsMember burst_loss_count; + // TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065 + RTCStatsMember burst_discard_count; + // TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065 + RTCStatsMember burst_loss_rate; + // TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065 + RTCStatsMember burst_discard_rate; + // TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065 + RTCStatsMember gap_loss_rate; + // TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7065 + RTCStatsMember gap_discard_rate; // Stats below are only implemented or defined for video. RTCStatsMember frames_received; RTCStatsMember frame_width; RTCStatsMember frame_height; + RTCStatsMember frame_bit_depth; RTCStatsMember frames_per_second; RTCStatsMember frames_decoded; RTCStatsMember key_frames_decoded; RTCStatsMember frames_dropped; RTCStatsMember total_decode_time; RTCStatsMember total_processing_delay; - // TODO(https://crbug.com/webrtc/13986): standardize + // TODO(bugs.webrtc.org/13986): standardize RTCNonStandardStatsMember total_assembly_time; RTCNonStandardStatsMember frames_assembled_from_multiple_packets; RTCStatsMember total_inter_frame_delay; RTCStatsMember total_squared_inter_frame_delay; - // https://w3c.github.io/webrtc-provisional-stats/#dom-rtcinboundrtpstreamstats-contenttype + // https://henbos.github.io/webrtc-provisional-stats/#dom-rtcinboundrtpstreamstats-contenttype RTCStatsMember content_type; - // Only populated if audio/video sync is enabled. - // TODO(https://crbug.com/webrtc/14177): Expose even if A/V sync is off? + // TODO(asapersson): Currently only populated if audio/video sync is enabled. RTCStatsMember estimated_playout_timestamp; - // Only implemented for video. - // TODO(https://crbug.com/webrtc/14178): Also implement for audio. + // TODO(hbos): This is only implemented for video; implement it for audio as + // well. RTCStatsMember decoder_implementation; // FIR and PLI counts are only defined for |kind == "video"|. RTCStatsMember fir_count; @@ -503,6 +559,8 @@ class RTC_EXPORT RTCInboundRTPStreamStats final }; // https://w3c.github.io/webrtc-stats/#outboundrtpstats-dict* +// TODO(hbos): Support the remote case |is_remote = true|. +// https://bugs.webrtc.org/7066 class RTC_EXPORT RTCOutboundRTPStreamStats final : public RTCRTPStreamStats { public: WEBRTC_RTCSTATS_DECL(); @@ -539,10 +597,10 @@ class RTC_EXPORT RTCOutboundRTPStreamStats final : public RTCRTPStreamStats { RTCStatsMember> quality_limitation_durations; // https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-qualitylimitationresolutionchanges RTCStatsMember quality_limitation_resolution_changes; - // https://w3c.github.io/webrtc-provisional-stats/#dom-rtcoutboundrtpstreamstats-contenttype + // https://henbos.github.io/webrtc-provisional-stats/#dom-rtcoutboundrtpstreamstats-contenttype RTCStatsMember content_type; - // Only implemented for video. - // TODO(https://crbug.com/webrtc/14178): Implement for audio as well. + // TODO(hbos): This is only implemented for video; implement it for audio as + // well. RTCStatsMember encoder_implementation; // FIR and PLI counts are only defined for |kind == "video"|. RTCStatsMember fir_count; @@ -562,6 +620,11 @@ class RTC_EXPORT RTCRemoteInboundRtpStreamStats final RTCRemoteInboundRtpStreamStats(const RTCRemoteInboundRtpStreamStats& other); ~RTCRemoteInboundRtpStreamStats() override; + // TODO(hbos): The following RTCReceivedRtpStreamStats metrics should also be + // implemented: packetsReceived, packetsRepaired, + // burstPacketsLost, burstPacketsDiscarded, burstLossCount, burstDiscardCount, + // burstLossRate, burstDiscardRate, gapLossRate and gapDiscardRate. + // RTCRemoteInboundRtpStreamStats RTCStatsMember local_id; RTCStatsMember round_trip_time; RTCStatsMember fraction_lost; @@ -652,7 +715,7 @@ class RTC_EXPORT RTCTransportStats final : public RTCStats { RTCStatsMember bytes_received; RTCStatsMember packets_received; RTCStatsMember rtcp_transport_stats_id; - // Enum type RTCDtlsTransportState. + // TODO(hbos): Support enum types? "RTCStatsMember"? RTCStatsMember dtls_state; RTCStatsMember selected_candidate_pair_id; RTCStatsMember local_certificate_id; diff --git a/pc/rtc_stats_integrationtest.cc b/pc/rtc_stats_integrationtest.cc index cc3e8e114b..b5d86a9bf5 100644 --- a/pc/rtc_stats_integrationtest.cc +++ b/pc/rtc_stats_integrationtest.cc @@ -486,6 +486,7 @@ class RTCStatsReportVerifier { verifier.TestMemberIsNonNegative(candidate_pair.priority); verifier.TestMemberIsDefined(candidate_pair.nominated); verifier.TestMemberIsDefined(candidate_pair.writable); + verifier.TestMemberIsUndefined(candidate_pair.readable); verifier.TestMemberIsNonNegative(candidate_pair.packets_sent); verifier.TestMemberIsNonNegative( candidate_pair.packets_discarded_on_send); @@ -513,8 +514,13 @@ class RTCStatsReportVerifier { verifier.TestMemberIsNonNegative( candidate_pair.responses_received); verifier.TestMemberIsNonNegative(candidate_pair.responses_sent); + verifier.TestMemberIsUndefined(candidate_pair.retransmissions_received); + verifier.TestMemberIsUndefined(candidate_pair.retransmissions_sent); + verifier.TestMemberIsUndefined(candidate_pair.consent_requests_received); verifier.TestMemberIsNonNegative( candidate_pair.consent_requests_sent); + verifier.TestMemberIsUndefined(candidate_pair.consent_responses_received); + verifier.TestMemberIsUndefined(candidate_pair.consent_responses_sent); return verifier.ExpectAllMembersSuccessfullyTested(); } @@ -630,6 +636,10 @@ class RTCStatsReportVerifier { media_stream_track.frame_width); verifier.TestMemberIsNonNegative( media_stream_track.frame_height); + verifier.TestMemberIsUndefined(media_stream_track.frames_per_second); + verifier.TestMemberIsUndefined(media_stream_track.frames_corrupted); + verifier.TestMemberIsUndefined(media_stream_track.partial_frames_lost); + verifier.TestMemberIsUndefined(media_stream_track.full_frames_lost); // Audio-only members should be undefined verifier.TestMemberIsUndefined(media_stream_track.audio_level); verifier.TestMemberIsUndefined(media_stream_track.echo_return_loss); @@ -731,11 +741,15 @@ class RTCStatsReportVerifier { // Video-only members should be undefined verifier.TestMemberIsUndefined(media_stream_track.frame_width); verifier.TestMemberIsUndefined(media_stream_track.frame_height); + verifier.TestMemberIsUndefined(media_stream_track.frames_per_second); verifier.TestMemberIsUndefined(media_stream_track.frames_sent); verifier.TestMemberIsUndefined(media_stream_track.huge_frames_sent); verifier.TestMemberIsUndefined(media_stream_track.frames_received); verifier.TestMemberIsUndefined(media_stream_track.frames_decoded); verifier.TestMemberIsUndefined(media_stream_track.frames_dropped); + verifier.TestMemberIsUndefined(media_stream_track.frames_corrupted); + verifier.TestMemberIsUndefined(media_stream_track.partial_frames_lost); + verifier.TestMemberIsUndefined(media_stream_track.full_frames_lost); verifier.TestMemberIsUndefined(media_stream_track.freeze_count); verifier.TestMemberIsUndefined(media_stream_track.pause_count); verifier.TestMemberIsUndefined(media_stream_track.total_freezes_duration); @@ -836,6 +850,7 @@ class RTCStatsReportVerifier { } else { verifier.TestMemberIsUndefined(inbound_stream.frames_per_second); } + verifier.TestMemberIsUndefined(inbound_stream.frame_bit_depth); verifier.TestMemberIsNonNegative( inbound_stream.jitter_buffer_delay); verifier.TestMemberIsNonNegative( @@ -879,6 +894,16 @@ class RTCStatsReportVerifier { inbound_stream.total_samples_duration); verifier.TestMemberIsUndefined(inbound_stream.frames_received); } + verifier.TestMemberIsUndefined(inbound_stream.round_trip_time); + verifier.TestMemberIsUndefined(inbound_stream.packets_repaired); + verifier.TestMemberIsUndefined(inbound_stream.burst_packets_lost); + verifier.TestMemberIsUndefined(inbound_stream.burst_packets_discarded); + verifier.TestMemberIsUndefined(inbound_stream.burst_loss_count); + verifier.TestMemberIsUndefined(inbound_stream.burst_discard_count); + verifier.TestMemberIsUndefined(inbound_stream.burst_loss_rate); + verifier.TestMemberIsUndefined(inbound_stream.burst_discard_rate); + verifier.TestMemberIsUndefined(inbound_stream.gap_loss_rate); + verifier.TestMemberIsUndefined(inbound_stream.gap_discard_rate); // Test runtime too short to get an estimate (at least two RTCP sender // reports need to be received). verifier.MarkMemberTested(inbound_stream.estimated_playout_timestamp, true); diff --git a/stats/rtcstats_objects.cc b/stats/rtcstats_objects.cc index a0873599e0..b0003c3952 100644 --- a/stats/rtcstats_objects.cc +++ b/stats/rtcstats_objects.cc @@ -191,6 +191,7 @@ WEBRTC_RTCSTATS_IMPL(RTCIceCandidatePairStats, RTCStats, "candidate-pair", &priority, &nominated, &writable, + &readable, &packets_sent, &packets_received, &bytes_sent, @@ -203,7 +204,12 @@ WEBRTC_RTCSTATS_IMPL(RTCIceCandidatePairStats, RTCStats, "candidate-pair", &requests_sent, &responses_received, &responses_sent, + &retransmissions_received, + &retransmissions_sent, + &consent_requests_received, &consent_requests_sent, + &consent_responses_received, + &consent_responses_sent, &packets_discarded_on_send, &bytes_discarded_on_send) // clang-format on @@ -222,6 +228,7 @@ RTCIceCandidatePairStats::RTCIceCandidatePairStats(std::string&& id, priority("priority"), nominated("nominated"), writable("writable"), + readable("readable"), packets_sent("packetsSent"), packets_received("packetsReceived"), bytes_sent("bytesSent"), @@ -234,7 +241,12 @@ RTCIceCandidatePairStats::RTCIceCandidatePairStats(std::string&& id, requests_sent("requestsSent"), responses_received("responsesReceived"), responses_sent("responsesSent"), + retransmissions_received("retransmissionsReceived"), + retransmissions_sent("retransmissionsSent"), + consent_requests_received("consentRequestsReceived"), consent_requests_sent("consentRequestsSent"), + consent_responses_received("consentResponsesReceived"), + consent_responses_sent("consentResponsesSent"), packets_discarded_on_send("packetsDiscardedOnSend"), bytes_discarded_on_send("bytesDiscardedOnSend") {} @@ -248,6 +260,7 @@ RTCIceCandidatePairStats::RTCIceCandidatePairStats( priority(other.priority), nominated(other.nominated), writable(other.writable), + readable(other.readable), packets_sent(other.packets_sent), packets_received(other.packets_received), bytes_sent(other.bytes_sent), @@ -260,7 +273,12 @@ RTCIceCandidatePairStats::RTCIceCandidatePairStats( requests_sent(other.requests_sent), responses_received(other.responses_received), responses_sent(other.responses_sent), + retransmissions_received(other.retransmissions_received), + retransmissions_sent(other.retransmissions_sent), + consent_requests_received(other.consent_requests_received), consent_requests_sent(other.consent_requests_sent), + consent_responses_received(other.consent_responses_received), + consent_responses_sent(other.consent_responses_sent), packets_discarded_on_send(other.packets_discarded_on_send), bytes_discarded_on_send(other.bytes_discarded_on_send) {} @@ -394,11 +412,15 @@ WEBRTC_RTCSTATS_IMPL(RTCMediaStreamTrackStats, RTCStats, "track", &jitter_buffer_emitted_count, &frame_width, &frame_height, + &frames_per_second, &frames_sent, &huge_frames_sent, &frames_received, &frames_decoded, &frames_dropped, + &frames_corrupted, + &partial_frames_lost, + &full_frames_lost, &audio_level, &total_audio_energy, &echo_return_loss, @@ -443,11 +465,15 @@ RTCMediaStreamTrackStats::RTCMediaStreamTrackStats(std::string&& id, jitter_buffer_emitted_count("jitterBufferEmittedCount"), frame_width("frameWidth"), frame_height("frameHeight"), + frames_per_second("framesPerSecond"), frames_sent("framesSent"), huge_frames_sent("hugeFramesSent"), frames_received("framesReceived"), frames_decoded("framesDecoded"), frames_dropped("framesDropped"), + frames_corrupted("framesCorrupted"), + partial_frames_lost("partialFramesLost"), + full_frames_lost("fullFramesLost"), audio_level("audioLevel"), total_audio_energy("totalAudioEnergy"), echo_return_loss("echoReturnLoss"), @@ -495,11 +521,15 @@ RTCMediaStreamTrackStats::RTCMediaStreamTrackStats( jitter_buffer_emitted_count(other.jitter_buffer_emitted_count), frame_width(other.frame_width), frame_height(other.frame_height), + frames_per_second(other.frames_per_second), frames_sent(other.frames_sent), huge_frames_sent(other.huge_frames_sent), frames_received(other.frames_received), frames_decoded(other.frames_decoded), frames_dropped(other.frames_dropped), + frames_corrupted(other.frames_corrupted), + partial_frames_lost(other.partial_frames_lost), + full_frames_lost(other.full_frames_lost), audio_level(other.audio_level), total_audio_energy(other.total_audio_energy), echo_return_loss(other.echo_return_loss), @@ -658,9 +688,20 @@ WEBRTC_RTCSTATS_IMPL( &audio_level, &total_audio_energy, &total_samples_duration, + &round_trip_time, + &packets_repaired, + &burst_packets_lost, + &burst_packets_discarded, + &burst_loss_count, + &burst_discard_count, + &burst_loss_rate, + &burst_discard_rate, + &gap_loss_rate, + &gap_discard_rate, &frames_received, &frame_width, &frame_height, + &frame_bit_depth, &frames_per_second, &frames_decoded, &key_frames_decoded, @@ -706,9 +747,20 @@ RTCInboundRTPStreamStats::RTCInboundRTPStreamStats(std::string&& id, audio_level("audioLevel"), total_audio_energy("totalAudioEnergy"), total_samples_duration("totalSamplesDuration"), + round_trip_time("roundTripTime"), + packets_repaired("packetsRepaired"), + burst_packets_lost("burstPacketsLost"), + burst_packets_discarded("burstPacketsDiscarded"), + burst_loss_count("burstLossCount"), + burst_discard_count("burstDiscardCount"), + burst_loss_rate("burstLossRate"), + burst_discard_rate("burstDiscardRate"), + gap_loss_rate("gapLossRate"), + gap_discard_rate("gapDiscardRate"), frames_received("framesReceived"), frame_width("frameWidth"), frame_height("frameHeight"), + frame_bit_depth("frameBitDepth"), frames_per_second("framesPerSecond"), frames_decoded("framesDecoded"), key_frames_decoded("keyFramesDecoded"), @@ -751,9 +803,20 @@ RTCInboundRTPStreamStats::RTCInboundRTPStreamStats( audio_level(other.audio_level), total_audio_energy(other.total_audio_energy), total_samples_duration(other.total_samples_duration), + round_trip_time(other.round_trip_time), + packets_repaired(other.packets_repaired), + burst_packets_lost(other.burst_packets_lost), + burst_packets_discarded(other.burst_packets_discarded), + burst_loss_count(other.burst_loss_count), + burst_discard_count(other.burst_discard_count), + burst_loss_rate(other.burst_loss_rate), + burst_discard_rate(other.burst_discard_rate), + gap_loss_rate(other.gap_loss_rate), + gap_discard_rate(other.gap_discard_rate), frames_received(other.frames_received), frame_width(other.frame_width), frame_height(other.frame_height), + frame_bit_depth(other.frame_bit_depth), frames_per_second(other.frames_per_second), frames_decoded(other.frames_decoded), key_frames_decoded(other.key_frames_decoded),