Add RtpPacketPacer interface for pacer control

The PacedSender is being reworked and will need an interface so we can
inject different implementations of it.

This CL introduces a new RtpPacketPacer interface inside the pacing
module. This interface handles the details of _how_ packets should be
paced, such as pacing rates/account for audio/max queue length etc.

The RtpPacketSender interface exposed from the rtp_rtcp module handles
only the actual sending of packets.

Some minor cleanups are included here.

Bug: webrtc:10809
Change-Id: I150b1a6262306d99e3f9d5f0b4afdb16a50e5ad8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145212
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28699}
This commit is contained in:
Erik Språng
2019-07-29 16:38:27 +02:00
committed by Commit Bot
parent 96ea8c00e7
commit 425d6aaa4c
12 changed files with 326 additions and 182 deletions

View File

@ -23,6 +23,7 @@
#include "api/crypto/crypto_options.h"
#include "api/fec_controller.h"
#include "api/transport/bitrate_settings.h"
#include "api/units/timestamp.h"
#include "call/rtp_config.h"
#include "logging/rtc_event_log/rtc_event_log.h"
#include "modules/rtp_rtcp/include/report_block_data.h"
@ -148,7 +149,7 @@ class RtpTransportControllerSendInterface {
virtual void OnNetworkAvailability(bool network_available) = 0;
virtual RtcpBandwidthObserver* GetBandwidthObserver() = 0;
virtual int64_t GetPacerQueuingDelayMs() const = 0;
virtual int64_t GetFirstPacketTimeMs() const = 0;
virtual absl::optional<Timestamp> GetFirstPacketTime() const = 0;
virtual void EnablePeriodicAlrProbing(bool enable) = 0;
virtual void OnSentPacket(const rtc::SentPacket& sent_packet) = 0;
virtual void OnReceivedPacket(const ReceivedPacket& received_packet) = 0;