In RtcpReceiver remove redundand way to represent RTCP report blocks
Pass ReportBlockData instead of RTCPReportBlock from RtcpReceiver to RtpRtcp module
Bug: None
Change-Id: Ia042bfc626dda532674e070c593db7a04e76254a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/306220
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40167}
diff --git a/modules/rtp_rtcp/source/rtcp_receiver.cc b/modules/rtp_rtcp/source/rtcp_receiver.cc
index 7236875..c437138 100644
--- a/modules/rtp_rtcp/source/rtcp_receiver.cc
+++ b/modules/rtp_rtcp/source/rtcp_receiver.cc
@@ -127,8 +127,6 @@
uint32_t remote_ssrc = 0;
std::vector<uint16_t> nack_sequence_numbers;
- // TODO(hbos): Remove `report_blocks` in favor of `report_block_datas`.
- ReportBlockList report_blocks;
std::vector<ReportBlockData> report_block_datas;
absl::optional<TimeDelta> rtt;
uint32_t receiver_estimated_max_bitrate_bps = 0;
@@ -625,15 +623,6 @@
packet_information->rtt = rtt;
}
- packet_information->report_blocks.push_back(
- {.sender_ssrc = remote_ssrc,
- .source_ssrc = report_block.source_ssrc(),
- .fraction_lost = report_block.fraction_lost(),
- .packets_lost = report_block.cumulative_lost(),
- .extended_highest_sequence_number = report_block.extended_high_seq_num(),
- .jitter = report_block.jitter(),
- .last_sender_report_timestamp = report_block.last_sr(),
- .delay_since_last_sender_report = report_block.delay_since_last_sr()});
packet_information->report_block_datas.push_back(*report_block_data);
}
@@ -1162,7 +1151,8 @@
if ((packet_information.packet_type_flags & kRtcpSr) ||
(packet_information.packet_type_flags & kRtcpRr)) {
- rtp_rtcp_->OnReceivedRtcpReportBlocks(packet_information.report_blocks);
+ rtp_rtcp_->OnReceivedRtcpReportBlocks(
+ packet_information.report_block_datas);
}
if (network_state_estimate_observer_ &&
diff --git a/modules/rtp_rtcp/source/rtcp_receiver.h b/modules/rtp_rtcp/source/rtcp_receiver.h
index bc0ce56..e5e0ab1 100644
--- a/modules/rtp_rtcp/source/rtcp_receiver.h
+++ b/modules/rtp_rtcp/source/rtcp_receiver.h
@@ -55,7 +55,7 @@
virtual void OnReceivedNack(
const std::vector<uint16_t>& nack_sequence_numbers) = 0;
virtual void OnReceivedRtcpReportBlocks(
- const ReportBlockList& report_blocks) = 0;
+ rtc::ArrayView<const ReportBlockData> report_blocks) = 0;
protected:
virtual ~ModuleRtpRtcp() = default;
diff --git a/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc b/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc
index 02dd0a7..159086b 100644
--- a/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc
@@ -107,7 +107,7 @@
MOCK_METHOD(void, OnReceivedNack, (const std::vector<uint16_t>&), (override));
MOCK_METHOD(void,
OnReceivedRtcpReportBlocks,
- (const ReportBlockList&),
+ (rtc::ArrayView<const ReportBlockData>),
(override));
};
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl.cc b/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
index 6c40264..f2cb9db 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
@@ -673,7 +673,7 @@
}
void ModuleRtpRtcpImpl::OnReceivedRtcpReportBlocks(
- const ReportBlockList& report_blocks) {
+ rtc::ArrayView<const ReportBlockData> report_blocks) {
if (rtp_sender_) {
uint32_t ssrc = SSRC();
absl::optional<uint32_t> rtx_ssrc;
@@ -681,13 +681,13 @@
rtx_ssrc = rtp_sender_->packet_generator.RtxSsrc();
}
- for (const RTCPReportBlock& report_block : report_blocks) {
- if (ssrc == report_block.source_ssrc) {
+ for (const ReportBlockData& report_block : report_blocks) {
+ if (ssrc == report_block.source_ssrc()) {
rtp_sender_->packet_generator.OnReceivedAckOnSsrc(
- report_block.extended_highest_sequence_number);
- } else if (rtx_ssrc && *rtx_ssrc == report_block.source_ssrc) {
+ report_block.extended_highest_sequence_number());
+ } else if (rtx_ssrc == report_block.source_ssrc()) {
rtp_sender_->packet_generator.OnReceivedAckOnRtxSsrc(
- report_block.extended_highest_sequence_number);
+ report_block.extended_highest_sequence_number());
}
}
}
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl.h b/modules/rtp_rtcp/source/rtp_rtcp_impl.h
index d3a0dd6..178c6b0 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl.h
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl.h
@@ -228,7 +228,7 @@
void OnReceivedNack(
const std::vector<uint16_t>& nack_sequence_numbers) override;
void OnReceivedRtcpReportBlocks(
- const ReportBlockList& report_blocks) override;
+ rtc::ArrayView<const ReportBlockData> report_blocks) override;
void OnRequestSendReport() override;
void SetVideoBitrateAllocation(
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl2.cc b/modules/rtp_rtcp/source/rtp_rtcp_impl2.cc
index 546de63..0687f32 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl2.cc
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl2.cc
@@ -673,7 +673,7 @@
}
void ModuleRtpRtcpImpl2::OnReceivedRtcpReportBlocks(
- const ReportBlockList& report_blocks) {
+ rtc::ArrayView<const ReportBlockData> report_blocks) {
if (rtp_sender_) {
uint32_t ssrc = SSRC();
absl::optional<uint32_t> rtx_ssrc;
@@ -681,13 +681,13 @@
rtx_ssrc = rtp_sender_->packet_generator.RtxSsrc();
}
- for (const RTCPReportBlock& report_block : report_blocks) {
- if (ssrc == report_block.source_ssrc) {
+ for (const ReportBlockData& report_block : report_blocks) {
+ if (ssrc == report_block.source_ssrc()) {
rtp_sender_->packet_generator.OnReceivedAckOnSsrc(
- report_block.extended_highest_sequence_number);
- } else if (rtx_ssrc && *rtx_ssrc == report_block.source_ssrc) {
+ report_block.extended_highest_sequence_number());
+ } else if (rtx_ssrc == report_block.source_ssrc()) {
rtp_sender_->packet_generator.OnReceivedAckOnRtxSsrc(
- report_block.extended_highest_sequence_number);
+ report_block.extended_highest_sequence_number());
}
}
}
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl2.h b/modules/rtp_rtcp/source/rtp_rtcp_impl2.h
index c0afe81..d6ffd8a 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl2.h
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl2.h
@@ -238,7 +238,7 @@
void OnReceivedNack(
const std::vector<uint16_t>& nack_sequence_numbers) override;
void OnReceivedRtcpReportBlocks(
- const ReportBlockList& report_blocks) override;
+ rtc::ArrayView<const ReportBlockData> report_blocks) override;
void OnRequestSendReport() override;
void SetVideoBitrateAllocation(
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc b/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc
index 5e3406c..6f14b4f 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc
@@ -1076,10 +1076,10 @@
EXPECT_TRUE(SendFrame(&sender_, sender_video_.get(), kBaseLayerTid));
// Simulate an RTCP receiver report in order to populate `ssrc_has_acked`.
- RTCPReportBlock ack;
- ack.source_ssrc = kSenderSsrc;
- ack.extended_highest_sequence_number = kSeq;
- sender_.impl_->OnReceivedRtcpReportBlocks({ack});
+ ReportBlockData ack[1];
+ ack[0].set_source_ssrc(kSenderSsrc);
+ ack[0].set_extended_highest_sequence_number(kSeq);
+ sender_.impl_->OnReceivedRtcpReportBlocks(ack);
RtpState state = sender_.impl_->GetRtpState();
EXPECT_EQ(state.sequence_number, kSeq);
@@ -1124,10 +1124,10 @@
EXPECT_EQ(rtx_packet.Ssrc(), kRtxSenderSsrc);
// Simulate an RTCP receiver report in order to populate `ssrc_has_acked`.
- RTCPReportBlock ack;
- ack.source_ssrc = kRtxSenderSsrc;
- ack.extended_highest_sequence_number = rtx_packet.SequenceNumber();
- sender_.impl_->OnReceivedRtcpReportBlocks({ack});
+ ReportBlockData ack[1];
+ ack[0].set_source_ssrc(kRtxSenderSsrc);
+ ack[0].set_extended_highest_sequence_number(rtx_packet.SequenceNumber());
+ sender_.impl_->OnReceivedRtcpReportBlocks(ack);
RtpState rtp_state = sender_.impl_->GetRtpState();
RtpState rtx_state = sender_.impl_->GetRtxState();
diff --git a/test/fuzzers/rtcp_receiver_fuzzer.cc b/test/fuzzers/rtcp_receiver_fuzzer.cc
index a3e9002..e61f6c0 100644
--- a/test/fuzzers/rtcp_receiver_fuzzer.cc
+++ b/test/fuzzers/rtcp_receiver_fuzzer.cc
@@ -27,7 +27,8 @@
void SetTmmbn(std::vector<rtcp::TmmbItem>) override {}
void OnRequestSendReport() override {}
void OnReceivedNack(const std::vector<uint16_t>&) override {}
- void OnReceivedRtcpReportBlocks(const ReportBlockList&) override {}
+ void OnReceivedRtcpReportBlocks(
+ rtc::ArrayView<const ReportBlockData> report_blocks) override {}
};
} // namespace