Revert "Add ability to set RTCP sender ssrc at construction time"

This reverts commit 94c58fd815f0c7c6429aa53a79621ea9ef39c770.

Reason for revert: Speculative revert, as it looks like this one broke IOS debug perf bots: https://ci.chromium.org/p/webrtc-internal/builders/ci/iOS64%20Debug/18901

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}

TBR=asapersson@webrtc.org,sprang@webrtc.org

Change-Id: I3f377ca1c84a7448675e5d022cb2f86f9630dbaf
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10774
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144564
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28508}
This commit is contained in:
Ilya Nikolaevskiy
2019-07-08 16:21:41 +00:00
committed by Commit Bot
parent 4a126e45c3
commit 34462f5dc3
6 changed files with 59 additions and 69 deletions

View File

@ -48,8 +48,6 @@ namespace {
const uint32_t kRtcpAnyExtendedReports = kRtcpXrReceiverReferenceTime | const uint32_t kRtcpAnyExtendedReports = kRtcpXrReceiverReferenceTime |
kRtcpXrDlrrReportBlock | kRtcpXrDlrrReportBlock |
kRtcpXrTargetBitrate; kRtcpXrTargetBitrate;
constexpr int32_t kDefaultVideoReportInterval = 1000;
constexpr int32_t kDefaultAudioReportInterval = 5000;
} // namespace } // namespace
RTCPSender::FeedbackState::FeedbackState() RTCPSender::FeedbackState::FeedbackState()
@ -114,25 +112,29 @@ class RTCPSender::RtcpContext {
const int64_t now_us_; const int64_t now_us_;
}; };
RTCPSender::RTCPSender(const RtpRtcp::Configuration& config) RTCPSender::RTCPSender(
: audio_(config.audio), bool audio,
clock_(config.clock), Clock* clock,
ReceiveStatisticsProvider* receive_statistics,
RtcpPacketTypeCounterObserver* packet_type_counter_observer,
RtcEventLog* event_log,
Transport* outgoing_transport,
int report_interval_ms)
: audio_(audio),
clock_(clock),
random_(clock_->TimeInMicroseconds()), random_(clock_->TimeInMicroseconds()),
method_(RtcpMode::kOff), method_(RtcpMode::kOff),
event_log_(config.event_log), event_log_(event_log),
transport_(config.outgoing_transport), transport_(outgoing_transport),
report_interval_ms_(config.rtcp_report_interval_ms > 0 report_interval_ms_(report_interval_ms),
? config.rtcp_report_interval_ms
: (config.audio ? kDefaultAudioReportInterval
: kDefaultVideoReportInterval)),
sending_(false), sending_(false),
next_time_to_send_rtcp_(0), next_time_to_send_rtcp_(0),
timestamp_offset_(0), timestamp_offset_(0),
last_rtp_timestamp_(0), last_rtp_timestamp_(0),
last_frame_capture_time_ms_(-1), last_frame_capture_time_ms_(-1),
ssrc_(config.media_send_ssrc.value_or(0)), ssrc_(0),
remote_ssrc_(0), remote_ssrc_(0),
receive_statistics_(config.receive_statistics), receive_statistics_(receive_statistics),
sequence_number_fir_(0), sequence_number_fir_(0),
@ -148,7 +150,7 @@ RTCPSender::RTCPSender(const RtpRtcp::Configuration& config)
app_length_(0), app_length_(0),
xr_send_receiver_reference_time_enabled_(false), xr_send_receiver_reference_time_enabled_(false),
packet_type_counter_observer_(config.rtcp_packet_type_counter_observer), packet_type_counter_observer_(packet_type_counter_observer),
send_video_bitrate_allocation_(false), send_video_bitrate_allocation_(false),
last_payload_type_(-1) { last_payload_type_(-1) {
RTC_DCHECK(transport_ != nullptr); RTC_DCHECK(transport_ != nullptr);
@ -305,7 +307,7 @@ uint32_t RTCPSender::SSRC() const {
void RTCPSender::SetSSRC(uint32_t ssrc) { void RTCPSender::SetSSRC(uint32_t ssrc) {
rtc::CritScope lock(&critical_section_rtcp_sender_); rtc::CritScope lock(&critical_section_rtcp_sender_);
if (ssrc != ssrc_) { if (ssrc_ != 0) {
// not first SetSSRC, probably due to a collision // not first SetSSRC, probably due to a collision
// schedule a new RTCP report // schedule a new RTCP report
// make sure that we send a RTP packet // make sure that we send a RTP packet

View File

@ -23,7 +23,6 @@
#include "modules/remote_bitrate_estimator/include/bwe_defines.h" #include "modules/remote_bitrate_estimator/include/bwe_defines.h"
#include "modules/remote_bitrate_estimator/include/remote_bitrate_estimator.h" #include "modules/remote_bitrate_estimator/include/remote_bitrate_estimator.h"
#include "modules/rtp_rtcp/include/receive_statistics.h" #include "modules/rtp_rtcp/include/receive_statistics.h"
#include "modules/rtp_rtcp/include/rtp_rtcp.h"
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
#include "modules/rtp_rtcp/source/rtcp_nack_stats.h" #include "modules/rtp_rtcp/source/rtcp_nack_stats.h"
#include "modules/rtp_rtcp/source/rtcp_packet.h" #include "modules/rtp_rtcp/source/rtcp_packet.h"
@ -63,7 +62,13 @@ class RTCPSender {
ModuleRtpRtcpImpl* module; ModuleRtpRtcpImpl* module;
}; };
explicit RTCPSender(const RtpRtcp::Configuration& config); RTCPSender(bool audio,
Clock* clock,
ReceiveStatisticsProvider* receive_statistics,
RtcpPacketTypeCounterObserver* packet_type_counter_observer,
RtcEventLog* event_log,
Transport* outgoing_transport,
int report_interval_ms);
virtual ~RTCPSender(); virtual ~RTCPSender();
RtcpMode Status() const; RtcpMode Status() const;

View File

@ -81,10 +81,12 @@ class RtcpSenderTest : public ::testing::Test {
configuration.outgoing_transport = &test_transport_; configuration.outgoing_transport = &test_transport_;
configuration.retransmission_rate_limiter = &retransmission_rate_limiter_; configuration.retransmission_rate_limiter = &retransmission_rate_limiter_;
configuration.rtcp_report_interval_ms = 1000; configuration.rtcp_report_interval_ms = 1000;
configuration.receive_statistics = receive_statistics_.get();
configuration.media_send_ssrc = kSenderSsrc;
rtp_rtcp_impl_.reset(new ModuleRtpRtcpImpl(configuration)); rtp_rtcp_impl_.reset(new ModuleRtpRtcpImpl(configuration));
rtcp_sender_.reset(new RTCPSender(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_->SetRemoteSSRC(kRemoteSsrc);
rtcp_sender_->SetTimestampOffset(kStartRtpTimestamp); rtcp_sender_->SetTimestampOffset(kStartRtpTimestamp);
rtcp_sender_->SetLastRtpTime(kRtpTimestamp, clock_.TimeInMilliseconds(), rtcp_sender_->SetLastRtpTime(kRtpTimestamp, clock_.TimeInMilliseconds(),
@ -185,13 +187,9 @@ TEST_F(RtcpSenderTest, SendConsecutiveSrWithExactSlope) {
} }
TEST_F(RtcpSenderTest, DoNotSendSrBeforeRtp) { TEST_F(RtcpSenderTest, DoNotSendSrBeforeRtp) {
RtpRtcp::Configuration config; rtcp_sender_.reset(new RTCPSender(false, &clock_, receive_statistics_.get(),
config.clock = &clock_; nullptr, nullptr, &test_transport_, 1000));
config.receive_statistics = receive_statistics_.get(); rtcp_sender_->SetSSRC(kSenderSsrc);
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_->SetRemoteSSRC(kRemoteSsrc);
rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize); rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
rtcp_sender_->SetSendingStatus(feedback_state(), true); rtcp_sender_->SetSendingStatus(feedback_state(), true);
@ -207,13 +205,9 @@ TEST_F(RtcpSenderTest, DoNotSendSrBeforeRtp) {
} }
TEST_F(RtcpSenderTest, DoNotSendCompundBeforeRtp) { TEST_F(RtcpSenderTest, DoNotSendCompundBeforeRtp) {
RtpRtcp::Configuration config; rtcp_sender_.reset(new RTCPSender(false, &clock_, receive_statistics_.get(),
config.clock = &clock_; nullptr, nullptr, &test_transport_, 1000));
config.receive_statistics = receive_statistics_.get(); rtcp_sender_->SetSSRC(kSenderSsrc);
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_->SetRemoteSSRC(kRemoteSsrc);
rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound); rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound);
rtcp_sender_->SetSendingStatus(feedback_state(), true); rtcp_sender_->SetSendingStatus(feedback_state(), true);
@ -557,14 +551,9 @@ TEST_F(RtcpSenderTest, TestNoXrRrtrSentIfNotEnabled) {
TEST_F(RtcpSenderTest, TestRegisterRtcpPacketTypeObserver) { TEST_F(RtcpSenderTest, TestRegisterRtcpPacketTypeObserver) {
RtcpPacketTypeCounterObserverImpl observer; RtcpPacketTypeCounterObserverImpl observer;
RtpRtcp::Configuration config; rtcp_sender_.reset(new RTCPSender(false, &clock_, receive_statistics_.get(),
config.clock = &clock_; &observer, nullptr, &test_transport_,
config.receive_statistics = receive_statistics_.get(); 1000));
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_->SetRemoteSSRC(kRemoteSsrc);
rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize); rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpPli)); EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpPli));
@ -685,14 +674,9 @@ TEST_F(RtcpSenderTest, ByeMustBeLast) {
})); }));
// Re-configure rtcp_sender_ with mock_transport_ // Re-configure rtcp_sender_ with mock_transport_
RtpRtcp::Configuration config; rtcp_sender_.reset(new RTCPSender(false, &clock_, receive_statistics_.get(),
config.clock = &clock_; nullptr, nullptr, &mock_transport, 1000));
config.receive_statistics = receive_statistics_.get(); rtcp_sender_->SetSSRC(kSenderSsrc);
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_->SetRemoteSSRC(kRemoteSsrc);
rtcp_sender_->SetTimestampOffset(kStartRtpTimestamp); rtcp_sender_->SetTimestampOffset(kStartRtpTimestamp);
rtcp_sender_->SetLastRtpTime(kRtpTimestamp, clock_.TimeInMilliseconds(), rtcp_sender_->SetLastRtpTime(kRtpTimestamp, clock_.TimeInMilliseconds(),

View File

@ -61,7 +61,16 @@ RtpRtcp* RtpRtcp::CreateRtpRtcp(const RtpRtcp::Configuration& configuration) {
} }
ModuleRtpRtcpImpl::ModuleRtpRtcpImpl(const Configuration& configuration) ModuleRtpRtcpImpl::ModuleRtpRtcpImpl(const Configuration& configuration)
: rtcp_sender_(configuration), : rtcp_sender_(configuration.audio,
configuration.clock,
configuration.receive_statistics,
configuration.rtcp_packet_type_counter_observer,
configuration.event_log,
configuration.outgoing_transport,
configuration.rtcp_report_interval_ms > 0
? configuration.rtcp_report_interval_ms
: (configuration.audio ? kDefaultAudioReportInterval
: kDefaultVideoReportInterval)),
rtcp_receiver_(configuration.clock, rtcp_receiver_(configuration.clock,
configuration.receiver_only, configuration.receiver_only,
configuration.rtcp_packet_type_counter_observer, configuration.rtcp_packet_type_counter_observer,

View File

@ -162,7 +162,6 @@ class RtpRtcpModule : public RtcpPacketTypeCounterObserver {
config.rtcp_packet_type_counter_observer = this; config.rtcp_packet_type_counter_observer = this;
config.rtt_stats = &rtt_stats_; config.rtt_stats = &rtt_stats_;
config.rtcp_report_interval_ms = rtcp_report_interval_ms_; config.rtcp_report_interval_ms = rtcp_report_interval_ms_;
config.media_send_ssrc = kSenderSsrc;
impl_.reset(new ModuleRtpRtcpImpl(config)); impl_.reset(new ModuleRtpRtcpImpl(config));
impl_->SetRTCPStatus(RtcpMode::kCompound); impl_->SetRTCPStatus(RtcpMode::kCompound);

View File

@ -914,11 +914,9 @@ void VideoSendStreamTest::TestNackRetransmission(
non_padding_sequence_numbers_.end() - kNackedPacketsAtOnceCount, non_padding_sequence_numbers_.end() - kNackedPacketsAtOnceCount,
non_padding_sequence_numbers_.end()); non_padding_sequence_numbers_.end());
RtpRtcp::Configuration config; RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), nullptr,
config.clock = Clock::GetRealTimeClock(); nullptr, nullptr, transport_adapter_.get(),
config.outgoing_transport = transport_adapter_.get(); kRtcpIntervalMs);
config.rtcp_report_interval_ms = kRtcpIntervalMs;
RTCPSender rtcp_sender(config);
rtcp_sender.SetRTCPStatus(RtcpMode::kReducedSize); rtcp_sender.SetRTCPStatus(RtcpMode::kReducedSize);
rtcp_sender.SetRemoteSSRC(kVideoSendSsrcs[0]); rtcp_sender.SetRemoteSSRC(kVideoSendSsrcs[0]);
@ -1129,12 +1127,9 @@ void VideoSendStreamTest::TestPacketFragmentationSize(VideoFormat format,
kVideoSendSsrcs[0], header.sequenceNumber, kVideoSendSsrcs[0], header.sequenceNumber,
packets_lost_, // Cumulative lost. packets_lost_, // Cumulative lost.
loss_ratio); // Loss percent. loss_ratio); // Loss percent.
RtpRtcp::Configuration config; RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(),
config.clock = Clock::GetRealTimeClock(); &lossy_receive_stats, nullptr, nullptr,
config.receive_statistics = &lossy_receive_stats; transport_adapter_.get(), kRtcpIntervalMs);
config.outgoing_transport = transport_adapter_.get();
config.rtcp_report_interval_ms = kRtcpIntervalMs;
RTCPSender rtcp_sender(config);
rtcp_sender.SetRTCPStatus(RtcpMode::kReducedSize); rtcp_sender.SetRTCPStatus(RtcpMode::kReducedSize);
rtcp_sender.SetRemoteSSRC(kVideoSendSsrcs[0]); rtcp_sender.SetRemoteSSRC(kVideoSendSsrcs[0]);
@ -1380,12 +1375,8 @@ TEST_F(VideoSendStreamTest, SuspendBelowMinBitrate) {
RTC_EXCLUSIVE_LOCKS_REQUIRED(crit_) { RTC_EXCLUSIVE_LOCKS_REQUIRED(crit_) {
FakeReceiveStatistics receive_stats(kVideoSendSsrcs[0], FakeReceiveStatistics receive_stats(kVideoSendSsrcs[0],
last_sequence_number_, rtp_count_, 0); last_sequence_number_, rtp_count_, 0);
RtpRtcp::Configuration config; RTCPSender rtcp_sender(false, clock_, &receive_stats, nullptr, nullptr,
config.clock = clock_; transport_adapter_.get(), kRtcpIntervalMs);
config.receive_statistics = &receive_stats;
config.outgoing_transport = transport_adapter_.get();
config.rtcp_report_interval_ms = kRtcpIntervalMs;
RTCPSender rtcp_sender(config);
rtcp_sender.SetRTCPStatus(RtcpMode::kReducedSize); rtcp_sender.SetRTCPStatus(RtcpMode::kReducedSize);
rtcp_sender.SetRemoteSSRC(kVideoSendSsrcs[0]); rtcp_sender.SetRemoteSSRC(kVideoSendSsrcs[0]);