Chromium Code Reviews| 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..c175ff2caac867a178f4602b163e33a4821420b4 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 { |
|
philipel
2016/09/19 11:25:22
Add a unittest that use the PacingObserver.
Irfan
2016/09/19 22:15:03
Done.
|
| + 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,8 @@ class PacedSender : public Module, public RtpPacketSender { |
| static const size_t kMinProbePacketSize = 200; |
| PacedSender(Clock* clock, |
| - PacketSender* packet_sender); |
| + PacketSender* packet_sender, |
| + PacingObserver* pacing_observer); |
| virtual ~PacedSender(); |
| @@ -132,7 +142,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 +154,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_); |