Allow REMB messages to be sent immediately in RtcpTransceiver
This cl add a configuration flag to allow REMB messages to be sent immediately when the bitrate value have changed. The remb message is still included in all following compound packets. Bug: None Change-Id: I9f71d30cddbccd095e1d2971247c731bd1727d32 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/169221 Commit-Queue: Per Kjellander <perkj@webrtc.org> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/master@{#30627}
This commit is contained in:

committed by
Commit Bot

parent
eed48b86ed
commit
c93595b4b9
@ -13,6 +13,7 @@
|
||||
#include <vector>
|
||||
|
||||
#include "absl/memory/memory.h"
|
||||
#include "api/rtp_headers.h"
|
||||
#include "api/video/video_bitrate_allocation.h"
|
||||
#include "modules/rtp_rtcp/include/receive_statistics.h"
|
||||
#include "modules/rtp_rtcp/mocks/mock_rtcp_rtt_stats.h"
|
||||
@ -395,7 +396,7 @@ TEST(RtcpTransceiverImplTest, SetRembIncludesRembInNextCompoundPacket) {
|
||||
|
||||
EXPECT_EQ(rtcp_parser.remb()->num_packets(), 1);
|
||||
EXPECT_EQ(rtcp_parser.remb()->sender_ssrc(), kSenderSsrc);
|
||||
EXPECT_EQ(rtcp_parser.remb()->bitrate_bps(), 10000u);
|
||||
EXPECT_EQ(rtcp_parser.remb()->bitrate_bps(), 10000);
|
||||
EXPECT_THAT(rtcp_parser.remb()->ssrcs(), ElementsAre(54321, 64321));
|
||||
}
|
||||
|
||||
@ -413,17 +414,61 @@ TEST(RtcpTransceiverImplTest, SetRembUpdatesValuesToSend) {
|
||||
rtcp_transceiver.SendCompoundPacket();
|
||||
|
||||
EXPECT_EQ(rtcp_parser.remb()->num_packets(), 1);
|
||||
EXPECT_EQ(rtcp_parser.remb()->bitrate_bps(), 10000u);
|
||||
EXPECT_EQ(rtcp_parser.remb()->bitrate_bps(), 10000);
|
||||
EXPECT_THAT(rtcp_parser.remb()->ssrcs(), ElementsAre(54321, 64321));
|
||||
|
||||
rtcp_transceiver.SetRemb(/*bitrate_bps=*/70000, /*ssrcs=*/{67321});
|
||||
rtcp_transceiver.SendCompoundPacket();
|
||||
|
||||
EXPECT_EQ(rtcp_parser.remb()->num_packets(), 2);
|
||||
EXPECT_EQ(rtcp_parser.remb()->bitrate_bps(), 70000u);
|
||||
EXPECT_EQ(rtcp_parser.remb()->bitrate_bps(), 70000);
|
||||
EXPECT_THAT(rtcp_parser.remb()->ssrcs(), ElementsAre(67321));
|
||||
}
|
||||
|
||||
TEST(RtcpTransceiverImplTest, SetRembSendsImmediatelyIfSendRembOnChange) {
|
||||
const uint32_t kSenderSsrc = 12345;
|
||||
RtcpTransceiverConfig config;
|
||||
config.send_remb_on_change = true;
|
||||
config.feedback_ssrc = kSenderSsrc;
|
||||
RtcpPacketParser rtcp_parser;
|
||||
RtcpParserTransport transport(&rtcp_parser);
|
||||
config.outgoing_transport = &transport;
|
||||
config.schedule_periodic_compound_packets = false;
|
||||
RtcpTransceiverImpl rtcp_transceiver(config);
|
||||
|
||||
rtcp_transceiver.SetRemb(/*bitrate_bps=*/10000, /*ssrcs=*/{});
|
||||
EXPECT_EQ(rtcp_parser.remb()->num_packets(), 1);
|
||||
EXPECT_EQ(rtcp_parser.remb()->sender_ssrc(), kSenderSsrc);
|
||||
EXPECT_EQ(rtcp_parser.remb()->bitrate_bps(), 10000);
|
||||
|
||||
// If there is no change, the packet is not sent immediately.
|
||||
rtcp_transceiver.SetRemb(/*bitrate_bps=*/10000, /*ssrcs=*/{});
|
||||
EXPECT_EQ(rtcp_parser.remb()->num_packets(), 1);
|
||||
|
||||
rtcp_transceiver.SetRemb(/*bitrate_bps=*/20000, /*ssrcs=*/{});
|
||||
EXPECT_EQ(rtcp_parser.remb()->num_packets(), 2);
|
||||
EXPECT_EQ(rtcp_parser.remb()->bitrate_bps(), 20000);
|
||||
}
|
||||
|
||||
TEST(RtcpTransceiverImplTest,
|
||||
SetRembSendsImmediatelyIfSendRembOnChangeReducedSize) {
|
||||
const uint32_t kSenderSsrc = 12345;
|
||||
RtcpTransceiverConfig config;
|
||||
config.send_remb_on_change = true;
|
||||
config.rtcp_mode = webrtc::RtcpMode::kReducedSize;
|
||||
config.feedback_ssrc = kSenderSsrc;
|
||||
RtcpPacketParser rtcp_parser;
|
||||
RtcpParserTransport transport(&rtcp_parser);
|
||||
config.outgoing_transport = &transport;
|
||||
config.schedule_periodic_compound_packets = false;
|
||||
RtcpTransceiverImpl rtcp_transceiver(config);
|
||||
|
||||
rtcp_transceiver.SetRemb(/*bitrate_bps=*/10000, /*ssrcs=*/{});
|
||||
EXPECT_EQ(rtcp_parser.remb()->num_packets(), 1);
|
||||
EXPECT_EQ(rtcp_parser.remb()->sender_ssrc(), kSenderSsrc);
|
||||
EXPECT_EQ(rtcp_parser.remb()->bitrate_bps(), 10000);
|
||||
}
|
||||
|
||||
TEST(RtcpTransceiverImplTest, SetRembIncludesRembInAllCompoundPackets) {
|
||||
const uint32_t kSenderSsrc = 12345;
|
||||
RtcpTransceiverConfig config;
|
||||
|
Reference in New Issue
Block a user