[getStats] Make remote-inbound-rtp.ssrc match outbound-rtp.ssrc.
Per discussions at https://crbug.com/webrtc/10753, the
remote-outbound-rtp.ssrc is supposed to reflect the SSRC of the RTP
media stream (i.e. outbound-rtp.ssrc) and not the sender that the
corresponding RTCP report block was transmitted on.
Bug: webrtc:10753
Change-Id: Id88f5fdbe6397ba81a46f0ef430bd6f08e66b145
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/143484
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28354}
diff --git a/pc/rtc_stats_collector.cc b/pc/rtc_stats_collector.cc
index c180dd6..d6ade5b 100644
--- a/pc/rtc_stats_collector.cc
+++ b/pc/rtc_stats_collector.cc
@@ -92,15 +92,14 @@
return sb.str();
}
-std::string RTCRemoteInboundRtpStreamStatsIdFromSsrcs(
+std::string RTCRemoteInboundRtpStreamStatsIdFromSourceSsrc(
cricket::MediaType media_type,
- uint32_t sender_ssrc,
uint32_t source_ssrc) {
char buf[1024];
rtc::SimpleStringBuilder sb(buf);
sb << "RTCRemoteInboundRtp"
<< (media_type == cricket::MEDIA_TYPE_AUDIO ? "Audio" : "Video")
- << "Stream_" << sender_ssrc << "_" << source_ssrc;
+ << "Stream_" << source_ssrc;
return sb.str();
}
@@ -408,10 +407,10 @@
// for "remote-[outbound/inbound]-rtp" it refers to the local time when the
// Report Block was received.
auto remote_inbound = absl::make_unique<RTCRemoteInboundRtpStreamStats>(
- RTCRemoteInboundRtpStreamStatsIdFromSsrcs(
- media_type, report_block.sender_ssrc, report_block.source_ssrc),
+ RTCRemoteInboundRtpStreamStatsIdFromSourceSsrc(media_type,
+ report_block.source_ssrc),
/*timestamp=*/report_block_data.report_block_timestamp_utc_us());
- remote_inbound->ssrc = report_block.sender_ssrc;
+ remote_inbound->ssrc = report_block.source_ssrc;
remote_inbound->kind =
media_type == cricket::MEDIA_TYPE_AUDIO ? "audio" : "video";
remote_inbound->packets_lost = report_block.packets_lost;
diff --git a/pc/rtc_stats_collector_unittest.cc b/pc/rtc_stats_collector_unittest.cc
index 979db60..be4f2b9 100644
--- a/pc/rtc_stats_collector_unittest.cc
+++ b/pc/rtc_stats_collector_unittest.cc
@@ -2450,9 +2450,8 @@
fake_clock_.SetTime(Timestamp::us(kReportBlockTimestampUtcUs));
RTCPReportBlock report_block;
- // The remote-inbound-rtp SSRC, "SSRC of sender of this report".
- report_block.sender_ssrc = 8;
- // The outbound-rtp SSRC, "SSRC of the RTP packet sender".
+ // The remote-inbound-rtp SSRC and the outbound-rtp SSRC is the same as the
+ // |source_ssrc|, "SSRC of the RTP packet sender".
report_block.source_ssrc = 12;
report_block.packets_lost = 7;
ReportBlockData report_block_data;
@@ -2468,9 +2467,9 @@
rtc::scoped_refptr<const RTCStatsReport> report = stats_->GetStatsReport();
RTCRemoteInboundRtpStreamStats expected_remote_inbound_rtp(
- "RTCRemoteInboundRtp" + MediaTypeUpperCase() + "Stream_8_12",
+ "RTCRemoteInboundRtp" + MediaTypeUpperCase() + "Stream_12",
kReportBlockTimestampUtcUs);
- expected_remote_inbound_rtp.ssrc = 8;
+ expected_remote_inbound_rtp.ssrc = 12;
expected_remote_inbound_rtp.kind = MediaTypeLowerCase();
expected_remote_inbound_rtp.transport_id =
"RTCTransport_TransportName_1"; // 1 for RTP (we have no RTCP transport)
@@ -2495,9 +2494,8 @@
fake_clock_.SetTime(Timestamp::us(kReportBlockTimestampUtcUs));
RTCPReportBlock report_block;
- // The remote-inbound-rtp SSRC, "SSRC of sender of this report".
- report_block.sender_ssrc = 8;
- // The outbound-rtp SSRC, "SSRC of the RTP packet sender".
+ // The remote-inbound-rtp SSRC and the outbound-rtp SSRC is the same as the
+ // |source_ssrc|, "SSRC of the RTP packet sender".
report_block.source_ssrc = 12;
ReportBlockData report_block_data;
report_block_data.SetReportBlock(report_block, kReportBlockTimestampUtcUs);
@@ -2511,7 +2509,7 @@
rtc::scoped_refptr<const RTCStatsReport> report = stats_->GetStatsReport();
std::string remote_inbound_rtp_id =
- "RTCRemoteInboundRtp" + MediaTypeUpperCase() + "Stream_8_12";
+ "RTCRemoteInboundRtp" + MediaTypeUpperCase() + "Stream_12";
ASSERT_TRUE(report->Get(remote_inbound_rtp_id));
auto& remote_inbound_rtp = report->Get(remote_inbound_rtp_id)
->cast_to<RTCRemoteInboundRtpStreamStats>();
@@ -2528,9 +2526,8 @@
fake_clock_.SetTime(Timestamp::us(kReportBlockTimestampUtcUs));
RTCPReportBlock report_block;
- // The remote-inbound-rtp SSRC, "SSRC of sender of this report".
- report_block.sender_ssrc = 8;
- // The outbound-rtp SSRC, "SSRC of the RTP packet sender".
+ // The remote-inbound-rtp SSRC and the outbound-rtp SSRC is the same as the
+ // |source_ssrc|, "SSRC of the RTP packet sender".
report_block.source_ssrc = 12;
report_block.jitter = 5000;
ReportBlockData report_block_data;
@@ -2546,7 +2543,7 @@
rtc::scoped_refptr<const RTCStatsReport> report = stats_->GetStatsReport();
std::string remote_inbound_rtp_id =
- "RTCRemoteInboundRtp" + MediaTypeUpperCase() + "Stream_8_12";
+ "RTCRemoteInboundRtp" + MediaTypeUpperCase() + "Stream_12";
ASSERT_TRUE(report->Get(remote_inbound_rtp_id));
auto& remote_inbound_rtp = report->Get(remote_inbound_rtp_id)
->cast_to<RTCRemoteInboundRtpStreamStats>();
@@ -2566,9 +2563,8 @@
fake_clock_.SetTime(Timestamp::us(kReportBlockTimestampUtcUs));
RTCPReportBlock report_block;
- // The remote-inbound-rtp SSRC, "SSRC of sender of this report".
- report_block.sender_ssrc = 8;
- // The outbound-rtp SSRC, "SSRC of the RTP packet sender".
+ // The remote-inbound-rtp SSRC and the outbound-rtp SSRC is the same as the
+ // |source_ssrc|, "SSRC of the RTP packet sender".
report_block.source_ssrc = 12;
ReportBlockData report_block_data;
report_block_data.SetReportBlock(report_block, kReportBlockTimestampUtcUs);
@@ -2588,7 +2584,7 @@
rtc::scoped_refptr<const RTCStatsReport> report = stats_->GetStatsReport();
std::string remote_inbound_rtp_id =
- "RTCRemoteInboundRtp" + MediaTypeUpperCase() + "Stream_8_12";
+ "RTCRemoteInboundRtp" + MediaTypeUpperCase() + "Stream_12";
ASSERT_TRUE(report->Get(remote_inbound_rtp_id));
auto& remote_inbound_rtp = report->Get(remote_inbound_rtp_id)
->cast_to<RTCRemoteInboundRtpStreamStats>();