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}
This commit is contained in:
Danil Chapovalov 2023-05-23 10:39:09 +02:00 committed by WebRTC LUCI CQ
parent b9de471b34
commit e641a970ef
9 changed files with 28 additions and 37 deletions

View File

@ -127,8 +127,6 @@ struct RTCPReceiver::PacketInformation {
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 @@ void RTCPReceiver::HandleReportBlock(const ReportBlock& report_block,
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 @@ void RTCPReceiver::TriggerCallbacksFromRtcpPacket(
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_ &&

View File

@ -55,7 +55,7 @@ class RTCPReceiver final {
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;

View File

@ -107,7 +107,7 @@ class MockModuleRtpRtcp : public RTCPReceiver::ModuleRtpRtcp {
MOCK_METHOD(void, OnReceivedNack, (const std::vector<uint16_t>&), (override));
MOCK_METHOD(void,
OnReceivedRtcpReportBlocks,
(const ReportBlockList&),
(rtc::ArrayView<const ReportBlockData>),
(override));
};

View File

@ -673,7 +673,7 @@ void ModuleRtpRtcpImpl::OnReceivedNack(
}
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 @@ void ModuleRtpRtcpImpl::OnReceivedRtcpReportBlocks(
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());
}
}
}

View File

@ -228,7 +228,7 @@ class ABSL_DEPRECATED("") ModuleRtpRtcpImpl
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(

View File

@ -673,7 +673,7 @@ void ModuleRtpRtcpImpl2::OnReceivedNack(
}
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 @@ void ModuleRtpRtcpImpl2::OnReceivedRtcpReportBlocks(
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());
}
}
}

View File

@ -238,7 +238,7 @@ class ModuleRtpRtcpImpl2 final : public RtpRtcpInterface,
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(

View File

@ -1076,10 +1076,10 @@ TEST_F(RtpRtcpImpl2Test, RtpStateReflectsCurrentState) {
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 @@ TEST_F(RtpRtcpImpl2Test, RtxRtpStateReflectsCurrentState) {
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();

View File

@ -27,7 +27,8 @@ class NullModuleRtpRtcp : public RTCPReceiver::ModuleRtpRtcp {
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