Fix issue with pacing rate after long queue times.
A recent cleanup cl (r36900) had an unintended side-effect. If the queue-time limit is expected to be hit, we adjust the pacing bitrate up to make sure all packets are sent within the nominal time frame. However after that change we stopped adjusting the pacing rate back to normal levels when queue clears - at least not until the next BWE update (which is fairly often - but not immediate). This CL fixes that, and also makes sure whe properly update the adjusted media rate on enqueu, dequeue and set rate calls. Bug: webrtc:10809 Change-Id: If00dc35169f1a1347fea6eb44fdb2868282ed3b7 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/265387 Reviewed-by: Per Kjellander <perkj@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#37178}
This commit is contained in:
committed by
WebRTC LUCI CQ
parent
da12e10aba
commit
df9e51a190
@ -145,7 +145,7 @@ class PacingController {
|
||||
|
||||
// Sets the pacing rates. Must be called once before packets can be sent.
|
||||
void SetPacingRates(DataRate pacing_rate, DataRate padding_rate);
|
||||
DataRate pacing_rate() const { return media_rate_; }
|
||||
DataRate pacing_rate() const { return adjusted_media_rate_; }
|
||||
|
||||
// Currently audio traffic is not accounted by pacer and passed through.
|
||||
// With the introduction of audio BWE audio traffic will be accounted for
|
||||
@ -217,6 +217,7 @@ class PacingController {
|
||||
void OnPacketSent(RtpPacketMediaType packet_type,
|
||||
DataSize packet_size,
|
||||
Timestamp send_time);
|
||||
void MaybeUpdateMediaRateDueToLongQueue(Timestamp now);
|
||||
|
||||
Timestamp CurrentTime() const;
|
||||
|
||||
@ -241,9 +242,17 @@ class PacingController {
|
||||
mutable Timestamp last_timestamp_;
|
||||
bool paused_;
|
||||
|
||||
// Amount of outstanding data for media and padding.
|
||||
DataSize media_debt_;
|
||||
DataSize padding_debt_;
|
||||
DataRate media_rate_;
|
||||
|
||||
// The target pacing rate, signaled via SetPacingRates().
|
||||
DataRate pacing_rate_;
|
||||
// The media send rate, which might adjusted from pacing_rate_, e.g. if the
|
||||
// pacing queue is growing too long.
|
||||
DataRate adjusted_media_rate_;
|
||||
// The padding target rate. We aim to fill up to this rate with padding what
|
||||
// is not already used by media.
|
||||
DataRate padding_rate_;
|
||||
|
||||
BitrateProber prober_;
|
||||
|
||||
Reference in New Issue
Block a user