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}
This commit is contained in:
@ -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<FieldTrialBasedConfig>() : 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);
|
||||
|
@ -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<FieldTrialBasedConfig> fallback_field_trials_;
|
||||
const WebRtcKeyValueConfig* field_trials_;
|
||||
|
||||
|
@ -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 @@ 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) {}
|
||||
|
||||
|
@ -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 @@ 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;
|
||||
|
@ -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"
|
||||
|
Reference in New Issue
Block a user