Index: webrtc/modules/pacing/paced_sender.h |
diff --git a/webrtc/modules/pacing/paced_sender.h b/webrtc/modules/pacing/paced_sender.h |
index 02d1dbd3d65a17262c697f364db2c02ec0eb9c2a..092b42bc54668e844fa7ba5e1e0548e63861e8fc 100644 |
--- a/webrtc/modules/pacing/paced_sender.h |
+++ b/webrtc/modules/pacing/paced_sender.h |
@@ -21,6 +21,7 @@ |
#include "webrtc/typedefs.h" |
namespace webrtc { |
+class AlrDetector; |
class BitrateProber; |
class Clock; |
class CriticalSectionWrapper; |
@@ -52,6 +53,14 @@ class PacedSender : public Module, public RtpPacketSender { |
virtual ~PacketSender() {} |
}; |
+ class PacingObserver { |
stefan-webrtc
2016/09/27 14:26:09
Wouldn't it be simpler to let the PacedSender own
|
+ public: |
+ virtual void OnBytesSent(size_t bytes_sent, int64_t elapsed_time_ms) = 0; |
+ |
+ protected: |
+ virtual ~PacingObserver() {} |
+ }; |
+ |
// Expected max pacer delay in ms. If ExpectedQueueTimeMs() is higher than |
// this value, the packet producers should wait (eg drop frames rather than |
// encoding them). Bitrate sent may temporarily exceed target set by |
@@ -67,7 +76,9 @@ class PacedSender : public Module, public RtpPacketSender { |
static const size_t kMinProbePacketSize = 200; |
PacedSender(Clock* clock, |
- PacketSender* packet_sender); |
+ PacketSender* packet_sender, |
+ PacingObserver* pacing_observer); |
+ PacedSender(Clock* clock, PacketSender* packet_sender); |
virtual ~PacedSender(); |
@@ -132,7 +143,9 @@ class PacedSender : public Module, public RtpPacketSender { |
private: |
// Updates the number of bytes that can be sent for the next time interval. |
- void UpdateBytesPerInterval(int64_t delta_time_in_ms) |
+ void UpdateBudgetWithElapsedTime(int64_t delta_time_in_ms) |
+ EXCLUSIVE_LOCKS_REQUIRED(critsect_); |
+ void UpdateBudgetWithBytesSent(size_t bytes) |
EXCLUSIVE_LOCKS_REQUIRED(critsect_); |
bool SendPacket(const paced_sender::Packet& packet, int probe_cluster_id) |
@@ -142,6 +155,7 @@ class PacedSender : public Module, public RtpPacketSender { |
Clock* const clock_; |
PacketSender* const packet_sender_; |
+ PacingObserver* const pacing_observer_; |
std::unique_ptr<CriticalSectionWrapper> critsect_; |
bool paused_ GUARDED_BY(critsect_); |