From a6c7d5c8ce57968756a31a463fb846c300829dee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Bostr=C3=B6m?= Date: Thu, 16 Jun 2022 16:55:31 +0200 Subject: [PATCH] Implement RTCInboundRtpStreamStats.trackIdentifier. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This should allow standard stats users not to have to rely on the obsolete "track" stats. Bug: webrtc:14174 Change-Id: I24e5e1478ee47c73c12fcdecf7314f41fcc76bc7 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/266020 Commit-Queue: Henrik Boström Reviewed-by: Harald Alvestrand Cr-Commit-Position: refs/heads/main@{#37246} --- api/stats/rtcstats_objects.h | 1 + pc/rtc_stats_collector.cc | 3 ++- pc/rtc_stats_collector_unittest.cc | 2 ++ pc/rtc_stats_integrationtest.cc | 1 + stats/rtcstats_objects.cc | 3 +++ 5 files changed, 9 insertions(+), 1 deletion(-) diff --git a/api/stats/rtcstats_objects.h b/api/stats/rtcstats_objects.h index 6984169b41..5465d15ddf 100644 --- a/api/stats/rtcstats_objects.h +++ b/api/stats/rtcstats_objects.h @@ -451,6 +451,7 @@ class RTC_EXPORT RTCInboundRTPStreamStats final // TODO(https://crbug.com/webrtc/14174): Implement trackIdentifier and kind. + RTCStatsMember track_identifier; RTCStatsMember remote_id; RTCStatsMember packets_received; RTCStatsMember fec_packets_received; diff --git a/pc/rtc_stats_collector.cc b/pc/rtc_stats_collector.cc index 0634bb8835..efc90a3981 100644 --- a/pc/rtc_stats_collector.cc +++ b/pc/rtc_stats_collector.cc @@ -1949,6 +1949,7 @@ void RTCStatsCollector::ProduceAudioRTPStreamStats_n( kReceiver, track_media_info_map.GetAttachmentIdByTrack(audio_track.get()) .value()); + inbound_audio->track_identifier = audio_track->id(); } inbound_audio->transport_id = transport_id; // Remote-outbound. @@ -2043,10 +2044,10 @@ void RTCStatsCollector::ProduceVideoRTPStreamStats_n( kReceiver, track_media_info_map.GetAttachmentIdByTrack(video_track.get()) .value()); + inbound_video->track_identifier = video_track->id(); } inbound_video->transport_id = transport_id; report->AddStats(std::move(inbound_video)); - // TODO(crbug.com/webrtc/12529): Add remote-outbound stats. } // Outbound std::map video_outbound_rtps; diff --git a/pc/rtc_stats_collector_unittest.cc b/pc/rtc_stats_collector_unittest.cc index 1022380e28..89d0daa494 100644 --- a/pc/rtc_stats_collector_unittest.cc +++ b/pc/rtc_stats_collector_unittest.cc @@ -2098,6 +2098,7 @@ TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Audio) { expected_audio.ssrc = 1; expected_audio.media_type = "audio"; expected_audio.kind = "audio"; + expected_audio.track_identifier = "RemoteAudioTrackID"; expected_audio.track_id = stats_of_track_type[0]->id(); expected_audio.transport_id = "RTCTransport_TransportName_1"; expected_audio.codec_id = "RTCCodec_AudioMid_Inbound_42"; @@ -2206,6 +2207,7 @@ TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Video) { expected_video.ssrc = 1; expected_video.media_type = "video"; expected_video.kind = "video"; + expected_video.track_identifier = "RemoteVideoTrackID"; expected_video.track_id = IdForType(report.get()); expected_video.transport_id = "RTCTransport_TransportName_1"; expected_video.codec_id = "RTCCodec_VideoMid_Inbound_42"; diff --git a/pc/rtc_stats_integrationtest.cc b/pc/rtc_stats_integrationtest.cc index 3783356d11..61251379e4 100644 --- a/pc/rtc_stats_integrationtest.cc +++ b/pc/rtc_stats_integrationtest.cc @@ -799,6 +799,7 @@ class RTCStatsReportVerifier { *inbound_stream.media_type == "audio"); verifier.TestMemberIsOptionalIDReference( inbound_stream.remote_id, RTCRemoteOutboundRtpStreamStats::kType); + verifier.TestMemberIsDefined(inbound_stream.track_identifier); if (inbound_stream.kind.is_defined() && *inbound_stream.media_type == "video") { verifier.TestMemberIsNonNegative(inbound_stream.qp_sum); diff --git a/stats/rtcstats_objects.cc b/stats/rtcstats_objects.cc index a0873599e0..0605f93652 100644 --- a/stats/rtcstats_objects.cc +++ b/stats/rtcstats_objects.cc @@ -640,6 +640,7 @@ RTCSentRtpStreamStats::~RTCSentRtpStreamStats() {} // clang-format off WEBRTC_RTCSTATS_IMPL( RTCInboundRTPStreamStats, RTCReceivedRtpStreamStats, "inbound-rtp", + &track_identifier, &remote_id, &packets_received, &fec_packets_received, @@ -688,6 +689,7 @@ RTCInboundRTPStreamStats::RTCInboundRTPStreamStats(const std::string& id, RTCInboundRTPStreamStats::RTCInboundRTPStreamStats(std::string&& id, int64_t timestamp_us) : RTCReceivedRtpStreamStats(std::move(id), timestamp_us), + track_identifier("trackIdentifier"), remote_id("remoteId"), packets_received("packetsReceived"), fec_packets_received("fecPacketsReceived"), @@ -732,6 +734,7 @@ RTCInboundRTPStreamStats::RTCInboundRTPStreamStats(std::string&& id, RTCInboundRTPStreamStats::RTCInboundRTPStreamStats( const RTCInboundRTPStreamStats& other) : RTCReceivedRtpStreamStats(other), + track_identifier(other.track_identifier), remote_id(other.remote_id), packets_received(other.packets_received), fec_packets_received(other.fec_packets_received),