Avoid sending empty receiver reports with RTCPSender
in reduced size mode, i.e. when rtcp-rsize sdp attribute is negotiated Bug: webrtc:13833 Change-Id: I55fa5248d3f66dc2240d7a6fbbb399319f1a2e03 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256004 Reviewed-by: Åsa Persson <asapersson@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36246}
This commit is contained in:
committed by
WebRTC LUCI CQ
parent
66ddd5ab6d
commit
017a606836
@ -484,7 +484,9 @@ void RTCPSender::BuildRR(const RtcpContext& ctx, PacketSender& sender) {
|
|||||||
rtcp::ReceiverReport report;
|
rtcp::ReceiverReport report;
|
||||||
report.SetSenderSsrc(ssrc_);
|
report.SetSenderSsrc(ssrc_);
|
||||||
report.SetReportBlocks(CreateReportBlocks(ctx.feedback_state_));
|
report.SetReportBlocks(CreateReportBlocks(ctx.feedback_state_));
|
||||||
|
if (method_ == RtcpMode::kCompound || !report.report_blocks().empty()) {
|
||||||
sender.AppendPacket(report);
|
sender.AppendPacket(report);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RTCPSender::BuildPLI(const RtcpContext& ctx, PacketSender& sender) {
|
void RTCPSender::BuildPLI(const RtcpContext& ctx, PacketSender& sender) {
|
||||||
|
|||||||
@ -252,13 +252,20 @@ TEST_F(RtcpSenderTest, DoNotSendCompundBeforeRtp) {
|
|||||||
|
|
||||||
TEST_F(RtcpSenderTest, SendRr) {
|
TEST_F(RtcpSenderTest, SendRr) {
|
||||||
auto rtcp_sender = CreateRtcpSender(GetDefaultConfig());
|
auto rtcp_sender = CreateRtcpSender(GetDefaultConfig());
|
||||||
rtcp_sender->SetRTCPStatus(RtcpMode::kReducedSize);
|
rtcp_sender->SetRTCPStatus(RtcpMode::kCompound);
|
||||||
EXPECT_EQ(0, rtcp_sender->SendRTCP(feedback_state(), kRtcpRr));
|
EXPECT_EQ(0, rtcp_sender->SendRTCP(feedback_state(), kRtcpRr));
|
||||||
EXPECT_EQ(1, parser()->receiver_report()->num_packets());
|
EXPECT_EQ(1, parser()->receiver_report()->num_packets());
|
||||||
EXPECT_EQ(kSenderSsrc, parser()->receiver_report()->sender_ssrc());
|
EXPECT_EQ(kSenderSsrc, parser()->receiver_report()->sender_ssrc());
|
||||||
EXPECT_EQ(0U, parser()->receiver_report()->report_blocks().size());
|
EXPECT_EQ(0U, parser()->receiver_report()->report_blocks().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(RtcpSenderTest, DoesntSendEmptyRrInReducedSizeMode) {
|
||||||
|
auto rtcp_sender = CreateRtcpSender(GetDefaultConfig());
|
||||||
|
rtcp_sender->SetRTCPStatus(RtcpMode::kReducedSize);
|
||||||
|
rtcp_sender->SendRTCP(feedback_state(), kRtcpRr);
|
||||||
|
EXPECT_EQ(parser()->receiver_report()->num_packets(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(RtcpSenderTest, SendRrWithOneReportBlock) {
|
TEST_F(RtcpSenderTest, SendRrWithOneReportBlock) {
|
||||||
const uint16_t kSeqNum = 11111;
|
const uint16_t kSeqNum = 11111;
|
||||||
auto rtcp_sender = CreateRtcpSender(GetDefaultConfig());
|
auto rtcp_sender = CreateRtcpSender(GetDefaultConfig());
|
||||||
@ -415,7 +422,7 @@ TEST_F(RtcpSenderTest, SendLossNotificationBufferingAllowed) {
|
|||||||
|
|
||||||
TEST_F(RtcpSenderTest, RembNotIncludedBeforeSet) {
|
TEST_F(RtcpSenderTest, RembNotIncludedBeforeSet) {
|
||||||
auto rtcp_sender = CreateRtcpSender(GetDefaultConfig());
|
auto rtcp_sender = CreateRtcpSender(GetDefaultConfig());
|
||||||
rtcp_sender->SetRTCPStatus(RtcpMode::kReducedSize);
|
rtcp_sender->SetRTCPStatus(RtcpMode::kCompound);
|
||||||
|
|
||||||
rtcp_sender->SendRTCP(feedback_state(), kRtcpRr);
|
rtcp_sender->SendRTCP(feedback_state(), kRtcpRr);
|
||||||
|
|
||||||
@ -427,7 +434,7 @@ TEST_F(RtcpSenderTest, RembNotIncludedAfterUnset) {
|
|||||||
const int64_t kBitrate = 261011;
|
const int64_t kBitrate = 261011;
|
||||||
const std::vector<uint32_t> kSsrcs = {kRemoteSsrc, kRemoteSsrc + 1};
|
const std::vector<uint32_t> kSsrcs = {kRemoteSsrc, kRemoteSsrc + 1};
|
||||||
auto rtcp_sender = CreateRtcpSender(GetDefaultConfig());
|
auto rtcp_sender = CreateRtcpSender(GetDefaultConfig());
|
||||||
rtcp_sender->SetRTCPStatus(RtcpMode::kReducedSize);
|
rtcp_sender->SetRTCPStatus(RtcpMode::kCompound);
|
||||||
rtcp_sender->SetRemb(kBitrate, kSsrcs);
|
rtcp_sender->SetRemb(kBitrate, kSsrcs);
|
||||||
rtcp_sender->SendRTCP(feedback_state(), kRtcpRr);
|
rtcp_sender->SendRTCP(feedback_state(), kRtcpRr);
|
||||||
ASSERT_EQ(1, parser()->receiver_report()->num_packets());
|
ASSERT_EQ(1, parser()->receiver_report()->num_packets());
|
||||||
|
|||||||
Reference in New Issue
Block a user