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"