diff --git a/modules/pacing/paced_sender.cc b/modules/pacing/paced_sender.cc index bcda710bb6..3e36f14740 100644 --- a/modules/pacing/paced_sender.cc +++ b/modules/pacing/paced_sender.cc @@ -49,11 +49,11 @@ const int64_t PacedSender::kMaxQueueLengthMs = 2000; const float PacedSender::kDefaultPaceMultiplier = 2.5f; PacedSender::PacedSender(Clock* clock, - PacketSender* packet_sender, + PacketRouter* packet_router, RtcEventLog* event_log, const WebRtcKeyValueConfig* field_trials) : clock_(clock), - packet_sender_(packet_sender), + packet_router_(packet_router), fallback_field_trials_( !field_trials ? absl::make_unique() : nullptr), field_trials_(field_trials ? field_trials : fallback_field_trials_.get()), @@ -280,7 +280,7 @@ void PacedSender::Process() { int64_t elapsed_time_ms = UpdateTimeAndGetElapsedMs(now_us); if (ShouldSendKeepalive(now_us)) { critsect_.Leave(); - size_t bytes_sent = packet_sender_->TimeToSendPadding(1, PacedPacketInfo()); + size_t bytes_sent = packet_router_->TimeToSendPadding(1, PacedPacketInfo()); critsect_.Enter(); OnPaddingSent(bytes_sent); } @@ -329,7 +329,7 @@ void PacedSender::Process() { break; critsect_.Leave(); - RtpPacketSendResult success = packet_sender_->TimeToSendPacket( + RtpPacketSendResult success = packet_router_->TimeToSendPacket( packet->ssrc, packet->sequence_number, packet->capture_time_ms, packet->retransmission, pacing_info); critsect_.Enter(); @@ -359,7 +359,7 @@ void PacedSender::Process() { if (padding_needed > 0) { critsect_.Leave(); size_t padding_sent = - packet_sender_->TimeToSendPadding(padding_needed, pacing_info); + packet_router_->TimeToSendPadding(padding_needed, pacing_info); critsect_.Enter(); bytes_sent += padding_sent; OnPaddingSent(padding_sent); diff --git a/modules/pacing/paced_sender.h b/modules/pacing/paced_sender.h index 5266cd904c..eb98ca2571 100644 --- a/modules/pacing/paced_sender.h +++ b/modules/pacing/paced_sender.h @@ -23,6 +23,7 @@ #include "modules/include/module.h" #include "modules/pacing/bitrate_prober.h" #include "modules/pacing/interval_budget.h" +#include "modules/pacing/packet_router.h" #include "modules/pacing/round_robin_packet_queue.h" #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" #include "modules/utility/include/process_thread.h" @@ -36,26 +37,6 @@ class RtcEventLog; class PacedSender : public Module, public RtpPacketSender { public: - class PacketSender { - public: - // Note: packets sent as a result of a callback should not pass by this - // module again. - // Called when it's time to send a queued packet. - // Returns false if packet cannot be sent. - virtual RtpPacketSendResult TimeToSendPacket( - uint32_t ssrc, - uint16_t sequence_number, - int64_t capture_time_ms, - bool retransmission, - const PacedPacketInfo& cluster_info) = 0; - // Called when it's a good time to send a padding data. - // Returns the number of bytes sent. - virtual size_t TimeToSendPadding(size_t bytes, - const PacedPacketInfo& cluster_info) = 0; - - protected: - virtual ~PacketSender() {} - }; static constexpr int64_t kNoCongestionWindow = -1; // Expected max pacer delay in ms. If ExpectedQueueTimeMs() is higher than @@ -71,7 +52,7 @@ class PacedSender : public Module, public RtpPacketSender { static const float kDefaultPaceMultiplier; PacedSender(Clock* clock, - PacketSender* packet_sender, + PacketRouter* packet_router, RtcEventLog* event_log, const WebRtcKeyValueConfig* field_trials = nullptr); @@ -160,7 +141,7 @@ class PacedSender : public Module, public RtpPacketSender { int64_t TimeMilliseconds() const RTC_EXCLUSIVE_LOCKS_REQUIRED(critsect_); Clock* const clock_; - PacketSender* const packet_sender_; + PacketRouter* const packet_router_; const std::unique_ptr fallback_field_trials_; const WebRtcKeyValueConfig* field_trials_; diff --git a/modules/pacing/paced_sender_unittest.cc b/modules/pacing/paced_sender_unittest.cc index 2e430693ff..d991d61e31 100644 --- a/modules/pacing/paced_sender_unittest.cc +++ b/modules/pacing/paced_sender_unittest.cc @@ -13,6 +13,7 @@ #include #include "modules/pacing/paced_sender.h" +#include "modules/pacing/packet_router.h" #include "system_wrappers/include/clock.h" #include "system_wrappers/include/field_trial.h" #include "test/field_trial.h" @@ -40,7 +41,7 @@ namespace test { static const int kTargetBitrateBps = 800000; -class MockPacedSenderCallback : public PacedSender::PacketSender { +class MockPacedSenderCallback : public PacketRouter { public: MOCK_METHOD5(TimeToSendPacket, RtpPacketSendResult(uint32_t ssrc, @@ -52,7 +53,7 @@ class MockPacedSenderCallback : public PacedSender::PacketSender { size_t(size_t bytes, const PacedPacketInfo& pacing_info)); }; -class PacedSenderPadding : public PacedSender::PacketSender { +class PacedSenderPadding : public PacketRouter { public: PacedSenderPadding() : padding_sent_(0) {} @@ -79,7 +80,7 @@ class PacedSenderPadding : public PacedSender::PacketSender { size_t padding_sent_; }; -class PacedSenderProbing : public PacedSender::PacketSender { +class PacedSenderProbing : public PacketRouter { public: PacedSenderProbing() : packets_sent_(0), padding_sent_(0) {} diff --git a/modules/pacing/packet_router.h b/modules/pacing/packet_router.h index 23a4c4aad9..4ff5a0b476 100644 --- a/modules/pacing/packet_router.h +++ b/modules/pacing/packet_router.h @@ -17,7 +17,6 @@ #include #include "api/transport/network_types.h" -#include "modules/pacing/paced_sender.h" #include "modules/remote_bitrate_estimator/include/remote_bitrate_estimator.h" #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" #include "rtc_base/constructor_magic.h" @@ -31,13 +30,12 @@ namespace rtcp { class TransportFeedback; } // namespace rtcp -// PacketRouter keeps track of rtp send modules to support the pacer. +// PacketRouter keeps track of RTP send modules to support the pacer. // In addition, it handles feedback messages, which are sent on a send // module if possible (sender report), otherwise on receive module // (receiver report). For the latter case, we also keep track of the // receive modules. -class PacketRouter : public PacedSender::PacketSender, - public TransportSequenceNumberAllocator, +class PacketRouter : public TransportSequenceNumberAllocator, public RemoteBitrateObserver, public TransportFeedbackSenderInterface { public: @@ -51,16 +49,15 @@ class PacketRouter : public PacedSender::PacketSender, bool remb_candidate); void RemoveReceiveRtpModule(RtcpFeedbackSenderInterface* rtcp_sender); - // Implements PacedSender::Callback. - RtpPacketSendResult TimeToSendPacket( + virtual RtpPacketSendResult TimeToSendPacket( uint32_t ssrc, uint16_t sequence_number, int64_t capture_timestamp, bool retransmission, - const PacedPacketInfo& packet_info) override; + const PacedPacketInfo& packet_info); - size_t TimeToSendPadding(size_t bytes, - const PacedPacketInfo& packet_info) override; + virtual size_t TimeToSendPadding(size_t bytes, + const PacedPacketInfo& packet_info); void SetTransportWideSequenceNumber(uint16_t sequence_number); uint16_t AllocateSequenceNumber() override; diff --git a/rtc_tools/event_log_visualizer/analyzer.cc b/rtc_tools/event_log_visualizer/analyzer.cc index c15454b0f0..428300dbe2 100644 --- a/rtc_tools/event_log_visualizer/analyzer.cc +++ b/rtc_tools/event_log_visualizer/analyzer.cc @@ -40,6 +40,7 @@ #include "modules/congestion_controller/goog_cc/delay_based_bwe.h" #include "modules/congestion_controller/include/receive_side_congestion_controller.h" #include "modules/congestion_controller/rtp/transport_feedback_adapter.h" +#include "modules/pacing/paced_sender.h" #include "modules/pacing/packet_router.h" #include "modules/remote_bitrate_estimator/include/bwe_defines.h" #include "modules/rtp_rtcp/include/rtp_rtcp.h"