Reland "Add ability to set RTCP sender ssrc at construction time"
This reverts commit 8b3e4e2d1166464f6b309f4fc533a29607d2771f. Reason for revert: The culprit was https://webrtc-review.googlesource.com/c/src/+/133169. Original change's description: > Revert "Reland "Add ability to set RTCP sender ssrc at construction time"" > > This reverts commit 6f420e424885dab1d9f885365ea9abea5cc4a901. > > Reason for revert: Speculative revert (some perf test are failing) > > Original change's description: > > Reland "Add ability to set RTCP sender ssrc at construction time" > > > > This is a reland of 94c58fd815f0c7c6429aa53a79621ea9ef39c770 > > > > Patch set 1 is the original CL. > > Patch set 2 introduced a trivial fix. In RtcpSender::SetSSRC(), check > > if either current SSRC is 0 or if the SSRC is identical to the current > > one. If so, don't schedule an early report. > > This prevents a regression in which audio jitter became too low(?) > > > > Original change's description: > > > Add ability to set RTCP sender ssrc at construction time > > > > > > Bug: webrtc:10774 > > > Change-Id: Iaf5857e24359e9795434bcd0cdbe1658a2f9f5d3 > > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144632 > > > Reviewed-by: Åsa Persson <asapersson@webrtc.org> > > > Commit-Queue: Erik Språng <sprang@webrtc.org> > > > Cr-Commit-Position: refs/heads/master@{#28506} > > > > Bug: webrtc:10774 > > Change-Id: I103dfa48719aa41d6ab633cdac8b3a5c46b54843 > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144565 > > Commit-Queue: Erik Språng <sprang@webrtc.org> > > Reviewed-by: Åsa Persson <asapersson@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#28520} > > TBR=asapersson@webrtc.org,sprang@webrtc.org,ilnik@webrtc.org > > # Not skipping CQ checks because original CL landed > 1 day ago. > > Bug: webrtc:10774 > Change-Id: I39238d942b2bbe0a9c8ca752387a35ed9dd70650 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145327 > Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> > Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#28555} TBR=mbonadei@webrtc.org,ilnik@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org Change-Id: I2e5c17e8edfd938424f901222158643baa04866e No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: webrtc:10774 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145400 Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> Cr-Commit-Position: refs/heads/master@{#28562}
This commit is contained in:
committed by
Commit Bot
parent
24192c267a
commit
9b1f24d552
@ -75,22 +75,25 @@ class RtcpSenderTest : public ::testing::Test {
|
||||
: clock_(1335900000),
|
||||
receive_statistics_(ReceiveStatistics::Create(&clock_)),
|
||||
retransmission_rate_limiter_(&clock_, 1000) {
|
||||
RtpRtcp::Configuration configuration = GetDefaultConfig();
|
||||
rtp_rtcp_impl_.reset(new ModuleRtpRtcpImpl(configuration));
|
||||
rtcp_sender_.reset(new RTCPSender(configuration));
|
||||
rtcp_sender_->SetRemoteSSRC(kRemoteSsrc);
|
||||
rtcp_sender_->SetTimestampOffset(kStartRtpTimestamp);
|
||||
rtcp_sender_->SetLastRtpTime(kRtpTimestamp, clock_.TimeInMilliseconds(),
|
||||
/*payload_type=*/0);
|
||||
}
|
||||
|
||||
RtpRtcp::Configuration GetDefaultConfig() {
|
||||
RtpRtcp::Configuration configuration;
|
||||
configuration.audio = false;
|
||||
configuration.clock = &clock_;
|
||||
configuration.outgoing_transport = &test_transport_;
|
||||
configuration.retransmission_rate_limiter = &retransmission_rate_limiter_;
|
||||
configuration.rtcp_report_interval_ms = 1000;
|
||||
|
||||
rtp_rtcp_impl_.reset(new ModuleRtpRtcpImpl(configuration));
|
||||
rtcp_sender_.reset(new RTCPSender(false, &clock_, receive_statistics_.get(),
|
||||
nullptr, nullptr, &test_transport_,
|
||||
configuration.rtcp_report_interval_ms));
|
||||
rtcp_sender_->SetSSRC(kSenderSsrc);
|
||||
rtcp_sender_->SetRemoteSSRC(kRemoteSsrc);
|
||||
rtcp_sender_->SetTimestampOffset(kStartRtpTimestamp);
|
||||
rtcp_sender_->SetLastRtpTime(kRtpTimestamp, clock_.TimeInMilliseconds(),
|
||||
/*payload_type=*/0);
|
||||
configuration.receive_statistics = receive_statistics_.get();
|
||||
configuration.media_send_ssrc = kSenderSsrc;
|
||||
return configuration;
|
||||
}
|
||||
|
||||
void InsertIncomingPacket(uint32_t remote_ssrc, uint16_t seq_num) {
|
||||
@ -187,9 +190,13 @@ TEST_F(RtcpSenderTest, SendConsecutiveSrWithExactSlope) {
|
||||
}
|
||||
|
||||
TEST_F(RtcpSenderTest, DoNotSendSrBeforeRtp) {
|
||||
rtcp_sender_.reset(new RTCPSender(false, &clock_, receive_statistics_.get(),
|
||||
nullptr, nullptr, &test_transport_, 1000));
|
||||
rtcp_sender_->SetSSRC(kSenderSsrc);
|
||||
RtpRtcp::Configuration config;
|
||||
config.clock = &clock_;
|
||||
config.receive_statistics = receive_statistics_.get();
|
||||
config.outgoing_transport = &test_transport_;
|
||||
config.rtcp_report_interval_ms = 1000;
|
||||
config.media_send_ssrc = kSenderSsrc;
|
||||
rtcp_sender_.reset(new RTCPSender(config));
|
||||
rtcp_sender_->SetRemoteSSRC(kRemoteSsrc);
|
||||
rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
|
||||
rtcp_sender_->SetSendingStatus(feedback_state(), true);
|
||||
@ -205,9 +212,13 @@ TEST_F(RtcpSenderTest, DoNotSendSrBeforeRtp) {
|
||||
}
|
||||
|
||||
TEST_F(RtcpSenderTest, DoNotSendCompundBeforeRtp) {
|
||||
rtcp_sender_.reset(new RTCPSender(false, &clock_, receive_statistics_.get(),
|
||||
nullptr, nullptr, &test_transport_, 1000));
|
||||
rtcp_sender_->SetSSRC(kSenderSsrc);
|
||||
RtpRtcp::Configuration config;
|
||||
config.clock = &clock_;
|
||||
config.receive_statistics = receive_statistics_.get();
|
||||
config.outgoing_transport = &test_transport_;
|
||||
config.rtcp_report_interval_ms = 1000;
|
||||
config.media_send_ssrc = kSenderSsrc;
|
||||
rtcp_sender_.reset(new RTCPSender(config));
|
||||
rtcp_sender_->SetRemoteSSRC(kRemoteSsrc);
|
||||
rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound);
|
||||
rtcp_sender_->SetSendingStatus(feedback_state(), true);
|
||||
@ -551,9 +562,14 @@ TEST_F(RtcpSenderTest, TestNoXrRrtrSentIfNotEnabled) {
|
||||
|
||||
TEST_F(RtcpSenderTest, TestRegisterRtcpPacketTypeObserver) {
|
||||
RtcpPacketTypeCounterObserverImpl observer;
|
||||
rtcp_sender_.reset(new RTCPSender(false, &clock_, receive_statistics_.get(),
|
||||
&observer, nullptr, &test_transport_,
|
||||
1000));
|
||||
RtpRtcp::Configuration config;
|
||||
config.clock = &clock_;
|
||||
config.receive_statistics = receive_statistics_.get();
|
||||
config.outgoing_transport = &test_transport_;
|
||||
config.rtcp_packet_type_counter_observer = &observer;
|
||||
config.rtcp_report_interval_ms = 1000;
|
||||
rtcp_sender_.reset(new RTCPSender(config));
|
||||
|
||||
rtcp_sender_->SetRemoteSSRC(kRemoteSsrc);
|
||||
rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
|
||||
EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpPli));
|
||||
@ -674,9 +690,14 @@ TEST_F(RtcpSenderTest, ByeMustBeLast) {
|
||||
}));
|
||||
|
||||
// Re-configure rtcp_sender_ with mock_transport_
|
||||
rtcp_sender_.reset(new RTCPSender(false, &clock_, receive_statistics_.get(),
|
||||
nullptr, nullptr, &mock_transport, 1000));
|
||||
rtcp_sender_->SetSSRC(kSenderSsrc);
|
||||
RtpRtcp::Configuration config;
|
||||
config.clock = &clock_;
|
||||
config.receive_statistics = receive_statistics_.get();
|
||||
config.outgoing_transport = &mock_transport;
|
||||
config.rtcp_report_interval_ms = 1000;
|
||||
config.media_send_ssrc = kSenderSsrc;
|
||||
rtcp_sender_.reset(new RTCPSender(config));
|
||||
|
||||
rtcp_sender_->SetRemoteSSRC(kRemoteSsrc);
|
||||
rtcp_sender_->SetTimestampOffset(kStartRtpTimestamp);
|
||||
rtcp_sender_->SetLastRtpTime(kRtpTimestamp, clock_.TimeInMilliseconds(),
|
||||
@ -795,4 +816,37 @@ TEST_F(RtcpSenderTest, SendTargetBitrateExplicitZeroOnStreamRemoval) {
|
||||
EXPECT_EQ(bitrates[1].target_bitrate_kbps, 0u);
|
||||
}
|
||||
|
||||
TEST_F(RtcpSenderTest, DoesntSchedulesInitialReportWhenSsrcSetOnConstruction) {
|
||||
rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
|
||||
rtcp_sender_->SetRemoteSSRC(kRemoteSsrc);
|
||||
// New report should not have been scheduled yet.
|
||||
clock_.AdvanceTimeMilliseconds(100);
|
||||
EXPECT_FALSE(rtcp_sender_->TimeToSendRTCPReport(false));
|
||||
}
|
||||
|
||||
TEST_F(RtcpSenderTest, DoesntSchedulesInitialReportOnFirstSetSsrc) {
|
||||
// Set up without first SSRC not set at construction.
|
||||
RtpRtcp::Configuration configuration = GetDefaultConfig();
|
||||
configuration.media_send_ssrc = absl::nullopt;
|
||||
|
||||
rtcp_sender_.reset(new RTCPSender(configuration));
|
||||
rtcp_sender_->SetRemoteSSRC(kRemoteSsrc);
|
||||
rtcp_sender_->SetTimestampOffset(kStartRtpTimestamp);
|
||||
rtcp_sender_->SetLastRtpTime(kRtpTimestamp, clock_.TimeInMilliseconds(),
|
||||
/*payload_type=*/0);
|
||||
rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
|
||||
|
||||
// Set SSRC for the first time. New report should not be scheduled.
|
||||
rtcp_sender_->SetSSRC(kSenderSsrc);
|
||||
clock_.AdvanceTimeMilliseconds(100);
|
||||
EXPECT_FALSE(rtcp_sender_->TimeToSendRTCPReport(false));
|
||||
}
|
||||
|
||||
TEST_F(RtcpSenderTest, SchedulesReportOnSsrcChange) {
|
||||
rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
|
||||
rtcp_sender_->SetSSRC(kSenderSsrc + 1);
|
||||
clock_.AdvanceTimeMilliseconds(100);
|
||||
EXPECT_TRUE(rtcp_sender_->TimeToSendRTCPReport(false));
|
||||
}
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
Reference in New Issue
Block a user