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:

committed by
Commit Bot

parent
4a126e45c3
commit
34462f5dc3
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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(),
|
||||||
|
@ -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,
|
||||||
|
@ -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);
|
||||||
|
@ -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]);
|
||||||
|
Reference in New Issue
Block a user