Remove PacedSender::PacketSender interface and use PacketRouter directly

This interface makes future refactoring difficult and is now in practice
only implemented by PacketRouter.

Bug: webrtc:10633
Change-Id: I3fcb8940781aa7431119649bde7594592a8c8851
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/141669
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28251}
diff --git a/modules/pacing/paced_sender.cc b/modules/pacing/paced_sender.cc
index bcda710..3e36f14 100644
--- a/modules/pacing/paced_sender.cc
+++ b/modules/pacing/paced_sender.cc
@@ -49,11 +49,11 @@
 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<FieldTrialBasedConfig>() : nullptr),
       field_trials_(field_trials ? field_trials : fallback_field_trials_.get()),
@@ -280,7 +280,7 @@
   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 @@
       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 @@
       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 5266cd9..eb98ca2 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 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 @@
   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 @@
   int64_t TimeMilliseconds() const RTC_EXCLUSIVE_LOCKS_REQUIRED(critsect_);
 
   Clock* const clock_;
-  PacketSender* const packet_sender_;
+  PacketRouter* const packet_router_;
   const std::unique_ptr<FieldTrialBasedConfig> fallback_field_trials_;
   const WebRtcKeyValueConfig* field_trials_;
 
diff --git a/modules/pacing/paced_sender_unittest.cc b/modules/pacing/paced_sender_unittest.cc
index 2e43069..d991d61 100644
--- a/modules/pacing/paced_sender_unittest.cc
+++ b/modules/pacing/paced_sender_unittest.cc
@@ -13,6 +13,7 @@
 #include <string>
 
 #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 @@
 
 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 @@
                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 @@
   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 23a4c4a..4ff5a0b 100644
--- a/modules/pacing/packet_router.h
+++ b/modules/pacing/packet_router.h
@@ -17,7 +17,6 @@
 #include <vector>
 
 #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 @@
 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 @@
                            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 c15454b..428300d 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"