Skip to content

Commit a064ffe

Browse files
committed
libwebrtc fixes and updates
- Fix calculation of feedback min_pending_time in goog_cc - Fixes #849 - Commit in libwebrtc: https://webrtc.googlesource.com/src/+/d65dc979b17cdc7cd359aada59e5bce8a6f1b8ce%5E%21/ - Fix signed-to-unsigned overflow in send_side_bandwidth_estimation.cc - Fixes #872 - Issue in libwebrtc: https://bugs.chromium.org/p/webrtc/issues/detail?id=14272 - Commit in libwebrtc: https://webrtc.googlesource.com/src/+/9804aa5f6ad26a45338d685da66497c3bbd88ca6%5E%21/ NOTE: Some changes are already present in ongoing PR #922 but it's not yet merged.
1 parent 235afe3 commit a064ffe

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

worker/deps/libwebrtc/libwebrtc/modules/bitrate_controller/send_side_bandwidth_estimation.cc

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -382,26 +382,29 @@ void SendSideBandwidthEstimation::UpdatePacketsLost(int packets_lost,
382382

383383
// Check sequence number diff and weight loss report
384384
if (number_of_packets > 0) {
385-
// Accumulate reports.
386-
lost_packets_since_last_loss_update_ += packets_lost;
387-
expected_packets_since_last_loss_update_ += number_of_packets;
385+
int64_t expected =
386+
expected_packets_since_last_loss_update_ + number_of_packets;
388387

389388
// Don't generate a loss rate until it can be based on enough packets.
390-
if (expected_packets_since_last_loss_update_ < kLimitNumPackets)
389+
if (expected < kLimitNumPackets) {
390+
// Accumulate reports.
391+
expected_packets_since_last_loss_update_ = expected;
392+
lost_packets_since_last_loss_update_ += packets_lost;
391393
return;
394+
}
392395

393396
has_decreased_since_last_fraction_loss_ = false;
394-
int64_t lost_q8 = lost_packets_since_last_loss_update_ << 8;
395-
int64_t expected = expected_packets_since_last_loss_update_;
397+
int64_t lost_q8 =
398+
std::max<int64_t>(lost_packets_since_last_loss_update_ + packets_lost, 0) << 8;
396399
last_fraction_loss_ = std::min<int>(lost_q8 / expected, 255);
397400

398401
// Reset accumulators.
399-
400402
lost_packets_since_last_loss_update_ = 0;
401403
expected_packets_since_last_loss_update_ = 0;
402404
last_loss_packet_report_ = at_time;
403405
UpdateEstimate(at_time);
404406
}
407+
405408
UpdateUmaStatsPacketsLost(at_time, packets_lost);
406409
}
407410

worker/deps/libwebrtc/libwebrtc/modules/congestion_controller/goog_cc/goog_cc_network_control.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ NetworkControlUpdate GoogCcNetworkController::OnTransportPacketsFeedback(
431431
for (const auto& feedback : feedbacks) {
432432
TimeDelta feedback_rtt =
433433
report.feedback_time - feedback.sent_packet.send_time;
434-
TimeDelta min_pending_time = feedback.receive_time - max_recv_time;
434+
TimeDelta min_pending_time = max_recv_time - feedback.receive_time;
435435
TimeDelta propagation_rtt = feedback_rtt - min_pending_time;
436436
max_feedback_rtt = std::max(max_feedback_rtt, feedback_rtt);
437437
min_propagation_rtt = std::min(min_propagation_rtt, propagation_rtt);

0 commit comments

Comments
 (0)