Index: webrtc/modules/bitrate_controller/send_side_bandwidth_estimation.cc |
diff --git a/webrtc/modules/bitrate_controller/send_side_bandwidth_estimation.cc b/webrtc/modules/bitrate_controller/send_side_bandwidth_estimation.cc |
index 02103716000649a333aca31b5ad5e24fd562f1fd..4bc8fffe33a43462b8dffc341cf3388f722ead7c 100644 |
--- a/webrtc/modules/bitrate_controller/send_side_bandwidth_estimation.cc |
+++ b/webrtc/modules/bitrate_controller/send_side_bandwidth_estimation.cc |
@@ -49,7 +49,8 @@ SendSideBandwidthEstimation::SendSideBandwidthEstimation() |
min_bitrate_configured_(kDefaultMinBitrateBps), |
max_bitrate_configured_(kDefaultMaxBitrateBps), |
last_low_bitrate_log_ms_(-1), |
- time_last_receiver_block_ms_(0), |
+ has_decreased_since_last_fraction_loss_(false), |
+ time_last_receiver_block_ms_(-1), |
last_fraction_loss_(0), |
last_round_trip_time_ms_(0), |
bwe_incoming_(0), |
@@ -58,8 +59,7 @@ SendSideBandwidthEstimation::SendSideBandwidthEstimation() |
initially_lost_packets_(0), |
bitrate_at_2_seconds_kbps_(0), |
uma_update_state_(kNoUpdate), |
- rampup_uma_stats_updated_(kNumUmaRampupMetrics, false) { |
-} |
+ rampup_uma_stats_updated_(kNumUmaRampupMetrics, false) {} |
SendSideBandwidthEstimation::~SendSideBandwidthEstimation() {} |
@@ -121,17 +121,16 @@ void SendSideBandwidthEstimation::UpdateReceiverBlock(uint8_t fraction_loss, |
accumulate_expected_packets_ += number_of_packets; |
mflodman
2015/10/22 07:06:58
Old, but I'd like to change name on this variable,
pbos-webrtc
2015/10/22 13:16:06
Done.
mflodman
2015/10/22 14:34:34
Thanks!
|
// Report loss if the total report is based on sufficiently many packets. |
stefan-webrtc
2015/10/22 09:20:47
Maybe change this comment to explain the if-statem
pbos-webrtc
2015/10/22 13:16:05
Done.
|
- if (accumulate_expected_packets_ >= kLimitNumPackets) { |
- last_fraction_loss_ = |
- accumulate_lost_packets_Q8_ / accumulate_expected_packets_; |
- |
- // Reset accumulators. |
- accumulate_lost_packets_Q8_ = 0; |
- accumulate_expected_packets_ = 0; |
- } else { |
- // Early return without updating estimate. |
+ if (accumulate_expected_packets_ < kLimitNumPackets) |
return; |
- } |
+ |
+ has_decreased_since_last_fraction_loss_ = false; |
+ last_fraction_loss_ = |
+ accumulate_lost_packets_Q8_ / accumulate_expected_packets_; |
+ |
+ // Reset accumulators. |
+ accumulate_lost_packets_Q8_ = 0; |
+ accumulate_expected_packets_ = 0; |
} |
time_last_receiver_block_ms_ = now_ms; |
UpdateEstimate(now_ms); |
@@ -186,7 +185,7 @@ void SendSideBandwidthEstimation::UpdateEstimate(int64_t now_ms) { |
} |
UpdateMinHistory(now_ms); |
// Only start updating bitrate when receiving receiver blocks. |
- if (time_last_receiver_block_ms_ != 0) { |
+ if (time_last_receiver_block_ms_ != -1) { |
mflodman
2015/10/22 07:06:57
I'd like to discuss if we should check already her
stefan-webrtc
2015/10/22 09:20:47
Are you talking about whether we should check for
mflodman
2015/10/22 11:22:29
Yes. But also, what happens if we're in an increas
stefan-webrtc
2015/10/22 11:28:06
Yes, if we don't have REMB this isn't great. Overa
pbos-webrtc
2015/10/22 13:16:06
Sure, I put a TODO for now.
|
if (last_fraction_loss_ <= 5) { |
// Loss < 2%: Increase rate by 8% of the min bitrate in the last |
// kBweIncreaseIntervalMs. |
@@ -207,12 +206,12 @@ void SendSideBandwidthEstimation::UpdateEstimate(int64_t now_ms) { |
} else if (last_fraction_loss_ <= 26) { |
// Loss between 2% - 10%: Do nothing. |
- |
} else { |
// Loss > 10%: Limit the rate decreases to once a kBweDecreaseIntervalMs + |
// rtt. |
- if ((now_ms - time_last_decrease_ms_) >= |
- (kBweDecreaseIntervalMs + last_round_trip_time_ms_)) { |
+ if (!has_decreased_since_last_fraction_loss_ && |
mflodman
2015/10/22 07:06:57
You can use 'accumulate_expected_packets_' instead
pbos-webrtc
2015/10/22 13:16:05
Nope, accumulate_expected_packets_ gets reset ever
mflodman
2015/10/22 14:34:34
I was unclear in this comment, but we can avoid th
pbos-webrtc
2015/10/22 14:59:45
That sounds like it'd be a bit harder to understan
|
+ (now_ms - time_last_decrease_ms_) >= |
+ (kBweDecreaseIntervalMs + last_round_trip_time_ms_)) { |
time_last_decrease_ms_ = now_ms; |
// Reduce rate: |
@@ -221,6 +220,7 @@ void SendSideBandwidthEstimation::UpdateEstimate(int64_t now_ms) { |
bitrate_ = static_cast<uint32_t>( |
(bitrate_ * static_cast<double>(512 - last_fraction_loss_)) / |
512.0); |
+ has_decreased_since_last_fraction_loss_ = true; |
} |
} |
} |