Ensure SetREMBStatus(false) disables sending REMB

support CL for upcoming https://codereview.webrtc.org/2789843002/

BUG=webrtc:7135

Review-Url: https://codereview.webrtc.org/2813693003
Cr-Commit-Position: refs/heads/master@{#17741}
This commit is contained in:
danilchap 2017-04-18 06:57:02 -07:00 committed by Commit bot
parent 1b96531f9e
commit ba6aa90c04
2 changed files with 26 additions and 0 deletions

View File

@ -244,6 +244,10 @@ bool RTCPSender::REMB() const {
void RTCPSender::SetREMBStatus(bool enable) {
rtc::CritScope lock(&critical_section_rtcp_sender_);
remb_enabled_ = enable;
if (!enable) {
// Stop sending remb each report until it is reenabled and remb data set.
ConsumeFlag(kRtcpRemb, true);
}
}
void RTCPSender::SetREMBData(uint32_t bitrate,

View File

@ -498,11 +498,33 @@ TEST_F(RtcpSenderTest, SendNack) {
}
TEST_F(RtcpSenderTest, RembStatus) {
const uint64_t kBitrate = 261011;
const std::vector<uint32_t> kSsrcs = {kRemoteSsrc, kRemoteSsrc + 1};
rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
EXPECT_FALSE(rtcp_sender_->REMB());
rtcp_sender_->SendRTCP(feedback_state(), kRtcpRr);
ASSERT_EQ(1, parser()->receiver_report()->num_packets());
EXPECT_EQ(0, parser()->remb()->num_packets());
rtcp_sender_->SetREMBStatus(true);
EXPECT_TRUE(rtcp_sender_->REMB());
rtcp_sender_->SetREMBData(kBitrate, kSsrcs);
rtcp_sender_->SendRTCP(feedback_state(), kRtcpRr);
ASSERT_EQ(2, parser()->receiver_report()->num_packets());
EXPECT_EQ(1, parser()->remb()->num_packets());
// Sending another report sends remb again, even if no new remb data was set.
rtcp_sender_->SendRTCP(feedback_state(), kRtcpRr);
ASSERT_EQ(3, parser()->receiver_report()->num_packets());
EXPECT_EQ(2, parser()->remb()->num_packets());
// Turn off remb. rtcp_sender no longer should send it.
rtcp_sender_->SetREMBStatus(false);
EXPECT_FALSE(rtcp_sender_->REMB());
rtcp_sender_->SendRTCP(feedback_state(), kRtcpRr);
ASSERT_EQ(4, parser()->receiver_report()->num_packets());
EXPECT_EQ(2, parser()->remb()->num_packets());
}
TEST_F(RtcpSenderTest, SendRemb) {