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:
Erik Språng
2019-06-12 13:30:02 +02:00
committed by Commit Bot
parent 6e9c2fd08e
commit e794243650
5 changed files with 19 additions and 39 deletions

View File

@ -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);

View File

@ -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_;

View File

@ -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) {}

View File

@ -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;

View File

@ -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"