Reland "Pass RtpRtcp::Configuration to RtcpReceiver ctor and initialize ssrcs"

This reverts commit 4d68314ec87b689792c9db9e2e50b76659bd42d9.

Reason for revert: The culprit was https://webrtc-review.googlesource.com/c/src/+/133169.

Original change's description:
> Revert "Pass RtpRtcp::Configuration to RtcpReceiver ctor and initialize ssrcs"
> 
> This reverts commit 741b96b175cb20606d5f1aad6339beeaa424b719.
> 
> Reason for revert: Speculative revert (some perf test are failing)
> 
> Original change's description:
> > Pass RtpRtcp::Configuration to RtcpReceiver ctor and initialize ssrcs
> > 
> > Bug: webrtc:10774
> > Change-Id: Iaae717ed1b7373d5cb2246e3ba92fc6ace422b41
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145206
> > Commit-Queue: Erik Språng <sprang@webrtc.org>
> > Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#28536}
> 
> TBR=asapersson@webrtc.org,sprang@webrtc.org
> 
> Change-Id: I877c1e4c025717c3392bce96ef31591dc1ef5f0b
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: webrtc:10774
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145325
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#28551}

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

Change-Id: Ib59a7f716a58ca8082fe69020c56054e21646cdf
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10774
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145402
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28564}
This commit is contained in:
Mirko Bonadei
2019-07-12 17:35:05 +00:00
committed by Commit Bot
parent 999a72a401
commit 3b67672af7
5 changed files with 57 additions and 62 deletions

View File

@ -63,6 +63,8 @@ const int64_t kRtcpMinFrameLengthMs = 17;
// Maximum number of received RRTRs that will be stored. // Maximum number of received RRTRs that will be stored.
const size_t kMaxNumberOfStoredRrtrs = 200; const size_t kMaxNumberOfStoredRrtrs = 200;
constexpr int32_t kDefaultVideoReportInterval = 1000;
constexpr int32_t kDefaultAudioReportInterval = 5000;
} // namespace } // namespace
struct RTCPReceiver::PacketInformation { struct RTCPReceiver::PacketInformation {
@ -118,27 +120,21 @@ struct RTCPReceiver::LastFirStatus {
uint8_t sequence_number; uint8_t sequence_number;
}; };
RTCPReceiver::RTCPReceiver( RTCPReceiver::RTCPReceiver(const RtpRtcp::Configuration& config,
Clock* clock,
bool receiver_only,
RtcpPacketTypeCounterObserver* packet_type_counter_observer,
RtcpBandwidthObserver* rtcp_bandwidth_observer,
RtcpIntraFrameObserver* rtcp_intra_frame_observer,
RtcpLossNotificationObserver* rtcp_loss_notification_observer,
TransportFeedbackObserver* transport_feedback_observer,
VideoBitrateAllocationObserver* bitrate_allocation_observer,
int report_interval_ms,
ModuleRtpRtcp* owner) ModuleRtpRtcp* owner)
: clock_(clock), : clock_(config.clock),
receiver_only_(receiver_only), receiver_only_(config.receiver_only),
rtp_rtcp_(owner), rtp_rtcp_(owner),
rtcp_bandwidth_observer_(rtcp_bandwidth_observer), rtcp_bandwidth_observer_(config.bandwidth_callback),
rtcp_intra_frame_observer_(rtcp_intra_frame_observer), rtcp_intra_frame_observer_(config.intra_frame_callback),
rtcp_loss_notification_observer_(rtcp_loss_notification_observer), rtcp_loss_notification_observer_(config.rtcp_loss_notification_observer),
transport_feedback_observer_(transport_feedback_observer), transport_feedback_observer_(config.transport_feedback_callback),
bitrate_allocation_observer_(bitrate_allocation_observer), bitrate_allocation_observer_(config.bitrate_allocation_observer),
report_interval_ms_(report_interval_ms), report_interval_ms_(config.rtcp_report_interval_ms > 0
main_ssrc_(0), ? config.rtcp_report_interval_ms
: (config.audio ? kDefaultAudioReportInterval
: kDefaultVideoReportInterval)),
main_ssrc_(config.media_send_ssrc.value_or(0)),
remote_ssrc_(0), remote_ssrc_(0),
remote_sender_rtp_time_(0), remote_sender_rtp_time_(0),
xr_rrtr_status_(false), xr_rrtr_status_(false),
@ -148,10 +144,19 @@ RTCPReceiver::RTCPReceiver(
last_increased_sequence_number_ms_(0), last_increased_sequence_number_ms_(0),
stats_callback_(nullptr), stats_callback_(nullptr),
report_block_data_observer_(nullptr), report_block_data_observer_(nullptr),
packet_type_counter_observer_(packet_type_counter_observer), packet_type_counter_observer_(config.rtcp_packet_type_counter_observer),
num_skipped_packets_(0), num_skipped_packets_(0),
last_skipped_packets_warning_ms_(clock->TimeInMilliseconds()) { last_skipped_packets_warning_ms_(clock_->TimeInMilliseconds()) {
RTC_DCHECK(owner); RTC_DCHECK(owner);
if (config.media_send_ssrc) {
registered_ssrcs_.insert(*config.media_send_ssrc);
}
if (config.rtx_send_ssrc) {
registered_ssrcs_.insert(*config.rtx_send_ssrc);
}
if (config.flexfec_sender) {
registered_ssrcs_.insert(config.flexfec_sender->ssrc());
}
} }
RTCPReceiver::~RTCPReceiver() {} RTCPReceiver::~RTCPReceiver() {}

View File

@ -19,6 +19,7 @@
#include "modules/rtp_rtcp/include/report_block_data.h" #include "modules/rtp_rtcp/include/report_block_data.h"
#include "modules/rtp_rtcp/include/rtcp_statistics.h" #include "modules/rtp_rtcp/include/rtcp_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/dlrr.h" #include "modules/rtp_rtcp/source/rtcp_packet/dlrr.h"
@ -51,16 +52,7 @@ class RTCPReceiver {
virtual ~ModuleRtpRtcp() = default; virtual ~ModuleRtpRtcp() = default;
}; };
RTCPReceiver(Clock* clock, RTCPReceiver(const RtpRtcp::Configuration& config, ModuleRtpRtcp* owner);
bool receiver_only,
RtcpPacketTypeCounterObserver* packet_type_counter_observer,
RtcpBandwidthObserver* rtcp_bandwidth_observer,
RtcpIntraFrameObserver* rtcp_intra_frame_observer,
RtcpLossNotificationObserver* rtcp_loss_notification_observer,
TransportFeedbackObserver* transport_feedback_observer,
VideoBitrateAllocationObserver* bitrate_allocation_observer,
int report_interval_ms,
ModuleRtpRtcp* owner);
virtual ~RTCPReceiver(); virtual ~RTCPReceiver();
void IncomingPacket(const uint8_t* packet, size_t packet_size); void IncomingPacket(const uint8_t* packet, size_t packet_size);

View File

@ -132,20 +132,28 @@ class RtcpReceiverTest : public ::testing::Test {
protected: protected:
RtcpReceiverTest() RtcpReceiverTest()
: system_clock_(1335900000), : system_clock_(1335900000),
rtcp_receiver_(&system_clock_, rtcp_receiver_(
false, [&] {
&packet_type_counter_observer_, RtpRtcp::Configuration config;
&bandwidth_observer_, config.clock = &system_clock_;
&intra_frame_observer_, config.receiver_only = false;
&rtcp_loss_notification_observer_, config.rtcp_packet_type_counter_observer =
&transport_feedback_observer_, &packet_type_counter_observer_;
&bitrate_allocation_observer_, config.bandwidth_callback = &bandwidth_observer_;
kRtcpIntervalMs, config.intra_frame_callback = &intra_frame_observer_;
config.rtcp_loss_notification_observer =
&rtcp_loss_notification_observer_;
config.transport_feedback_callback =
&transport_feedback_observer_;
config.bitrate_allocation_observer =
&bitrate_allocation_observer_;
config.rtcp_report_interval_ms = kRtcpIntervalMs;
config.media_send_ssrc = kReceiverMainSsrc;
config.rtx_send_ssrc = kReceiverExtraSsrc;
return config;
}(),
&rtp_rtcp_impl_) {} &rtp_rtcp_impl_) {}
void SetUp() { void SetUp() {
std::set<uint32_t> ssrcs = {kReceiverMainSsrc, kReceiverExtraSsrc};
rtcp_receiver_.SetSsrcs(kReceiverMainSsrc, ssrcs);
rtcp_receiver_.SetRemoteSSRC(kSenderSsrc); rtcp_receiver_.SetRemoteSSRC(kSenderSsrc);
} }

View File

@ -36,8 +36,6 @@ const int64_t kRtpRtcpMaxIdleTimeProcessMs = 5;
const int64_t kRtpRtcpRttProcessTimeMs = 1000; const int64_t kRtpRtcpRttProcessTimeMs = 1000;
const int64_t kRtpRtcpBitrateProcessTimeMs = 10; const int64_t kRtpRtcpBitrateProcessTimeMs = 10;
const int64_t kDefaultExpectedRetransmissionTimeMs = 125; const int64_t kDefaultExpectedRetransmissionTimeMs = 125;
constexpr int32_t kDefaultVideoReportInterval = 1000;
constexpr int32_t kDefaultAudioReportInterval = 5000;
} // namespace } // namespace
RtpRtcp::Configuration::Configuration() = default; RtpRtcp::Configuration::Configuration() = default;
@ -62,19 +60,7 @@ RtpRtcp* RtpRtcp::CreateRtpRtcp(const RtpRtcp::Configuration& configuration) {
ModuleRtpRtcpImpl::ModuleRtpRtcpImpl(const Configuration& configuration) ModuleRtpRtcpImpl::ModuleRtpRtcpImpl(const Configuration& configuration)
: rtcp_sender_(configuration), : rtcp_sender_(configuration),
rtcp_receiver_(configuration.clock, rtcp_receiver_(configuration, this),
configuration.receiver_only,
configuration.rtcp_packet_type_counter_observer,
configuration.bandwidth_callback,
configuration.intra_frame_callback,
configuration.rtcp_loss_notification_observer,
configuration.transport_feedback_callback,
configuration.bitrate_allocation_observer,
configuration.rtcp_report_interval_ms > 0
? configuration.rtcp_report_interval_ms
: (configuration.audio ? kDefaultAudioReportInterval
: kDefaultVideoReportInterval),
this),
clock_(configuration.clock), clock_(configuration.clock),
last_bitrate_process_time_(clock_->TimeInMilliseconds()), last_bitrate_process_time_(clock_->TimeInMilliseconds()),
last_rtt_process_time_(clock_->TimeInMilliseconds()), last_rtt_process_time_(clock_->TimeInMilliseconds()),

View File

@ -7,6 +7,7 @@
* in the file PATENTS. All contributing project authors may * in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree. * be found in the AUTHORS file in the root of the source tree.
*/ */
#include "modules/rtp_rtcp/include/rtp_rtcp.h"
#include "modules/rtp_rtcp/source/rtcp_packet/tmmb_item.h" #include "modules/rtp_rtcp/source/rtcp_packet/tmmb_item.h"
#include "modules/rtp_rtcp/source/rtcp_receiver.h" #include "modules/rtp_rtcp/source/rtcp_receiver.h"
#include "rtc_base/checks.h" #include "rtc_base/checks.h"
@ -39,8 +40,11 @@ void FuzzOneInput(const uint8_t* data, size_t size) {
NullModuleRtpRtcp rtp_rtcp_module; NullModuleRtpRtcp rtp_rtcp_module;
SimulatedClock clock(1234); SimulatedClock clock(1234);
RTCPReceiver receiver(&clock, false, nullptr, nullptr, nullptr, nullptr, RtpRtcp::Configuration config;
nullptr, nullptr, kRtcpIntervalMs, &rtp_rtcp_module); config.clock = &clock;
config.rtcp_report_interval_ms = kRtcpIntervalMs;
RTCPReceiver receiver(config, &rtp_rtcp_module);
receiver.IncomingPacket(data, size); receiver.IncomingPacket(data, size);
} }