Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(38)

Side by Side Diff: webrtc/modules/bitrate_controller/send_side_bandwidth_estimation.cc

Issue 2415543002: Set min BWE bitrate form 10kbps to 5kbps and centralize minimum bitrate. (Closed)
Patch Set: Response to comments Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #include "webrtc/modules/bitrate_controller/send_side_bandwidth_estimation.h" 11 #include "webrtc/modules/bitrate_controller/send_side_bandwidth_estimation.h"
12 12
13 #include <algorithm> 13 #include <algorithm>
14 #include <cmath> 14 #include <cmath>
15 15
16 #include "webrtc/base/checks.h" 16 #include "webrtc/base/checks.h"
17 #include "webrtc/base/logging.h" 17 #include "webrtc/base/logging.h"
18 #include "webrtc/logging/rtc_event_log/rtc_event_log.h" 18 #include "webrtc/logging/rtc_event_log/rtc_event_log.h"
19 #include "webrtc/modules/congestion_controller/include/defines.h"
19 #include "webrtc/system_wrappers/include/field_trial.h" 20 #include "webrtc/system_wrappers/include/field_trial.h"
20 #include "webrtc/system_wrappers/include/metrics.h" 21 #include "webrtc/system_wrappers/include/metrics.h"
21 22
22 namespace webrtc { 23 namespace webrtc {
23 namespace { 24 namespace {
24 const int64_t kBweIncreaseIntervalMs = 1000; 25 const int64_t kBweIncreaseIntervalMs = 1000;
25 const int64_t kBweDecreaseIntervalMs = 300; 26 const int64_t kBweDecreaseIntervalMs = 300;
26 const int64_t kStartPhaseMs = 2000; 27 const int64_t kStartPhaseMs = 2000;
27 const int64_t kBweConverganceTimeMs = 20000; 28 const int64_t kBweConverganceTimeMs = 20000;
28 const int kLimitNumPackets = 20; 29 const int kLimitNumPackets = 20;
29 const int kDefaultMinBitrateBps = 10000;
30 const int kDefaultMaxBitrateBps = 1000000000; 30 const int kDefaultMaxBitrateBps = 1000000000;
31 const int64_t kLowBitrateLogPeriodMs = 10000; 31 const int64_t kLowBitrateLogPeriodMs = 10000;
32 const int64_t kRtcEventLogPeriodMs = 5000; 32 const int64_t kRtcEventLogPeriodMs = 5000;
33 // Expecting that RTCP feedback is sent uniformly within [0.5, 1.5]s intervals. 33 // Expecting that RTCP feedback is sent uniformly within [0.5, 1.5]s intervals.
34 const int64_t kFeedbackIntervalMs = 1500; 34 const int64_t kFeedbackIntervalMs = 1500;
35 const int64_t kFeedbackTimeoutIntervals = 3; 35 const int64_t kFeedbackTimeoutIntervals = 3;
36 const int64_t kTimeoutIntervalMs = 1000; 36 const int64_t kTimeoutIntervalMs = 1000;
37 37
38 struct UmaRampUpMetric { 38 struct UmaRampUpMetric {
39 const char* metric_name; 39 const char* metric_name;
40 int bitrate_kbps; 40 int bitrate_kbps;
41 }; 41 };
42 42
43 const UmaRampUpMetric kUmaRampupMetrics[] = { 43 const UmaRampUpMetric kUmaRampupMetrics[] = {
44 {"WebRTC.BWE.RampUpTimeTo500kbpsInMs", 500}, 44 {"WebRTC.BWE.RampUpTimeTo500kbpsInMs", 500},
45 {"WebRTC.BWE.RampUpTimeTo1000kbpsInMs", 1000}, 45 {"WebRTC.BWE.RampUpTimeTo1000kbpsInMs", 1000},
46 {"WebRTC.BWE.RampUpTimeTo2000kbpsInMs", 2000}}; 46 {"WebRTC.BWE.RampUpTimeTo2000kbpsInMs", 2000}};
47 const size_t kNumUmaRampupMetrics = 47 const size_t kNumUmaRampupMetrics =
48 sizeof(kUmaRampupMetrics) / sizeof(kUmaRampupMetrics[0]); 48 sizeof(kUmaRampupMetrics) / sizeof(kUmaRampupMetrics[0]);
49 49
50 } // namespace 50 } // namespace
51 51
52 SendSideBandwidthEstimation::SendSideBandwidthEstimation(RtcEventLog* event_log) 52 SendSideBandwidthEstimation::SendSideBandwidthEstimation(RtcEventLog* event_log)
53 : lost_packets_since_last_loss_update_Q8_(0), 53 : lost_packets_since_last_loss_update_Q8_(0),
54 expected_packets_since_last_loss_update_(0), 54 expected_packets_since_last_loss_update_(0),
55 bitrate_(0), 55 bitrate_(0),
56 min_bitrate_configured_(kDefaultMinBitrateBps), 56 min_bitrate_configured_(congestion_controller::kMinBitrateBps),
57 max_bitrate_configured_(kDefaultMaxBitrateBps), 57 max_bitrate_configured_(kDefaultMaxBitrateBps),
58 last_low_bitrate_log_ms_(-1), 58 last_low_bitrate_log_ms_(-1),
59 has_decreased_since_last_fraction_loss_(false), 59 has_decreased_since_last_fraction_loss_(false),
60 last_feedback_ms_(-1), 60 last_feedback_ms_(-1),
61 last_packet_report_ms_(-1), 61 last_packet_report_ms_(-1),
62 last_timeout_ms_(-1), 62 last_timeout_ms_(-1),
63 last_fraction_loss_(0), 63 last_fraction_loss_(0),
64 last_logged_fraction_loss_(0), 64 last_logged_fraction_loss_(0),
65 last_round_trip_time_ms_(0), 65 last_round_trip_time_ms_(0),
66 bwe_incoming_(0), 66 bwe_incoming_(0),
(...skipping 26 matching lines...) Expand all
93 bitrate_ = bitrate; 93 bitrate_ = bitrate;
94 94
95 // Clear last sent bitrate history so the new value can be used directly 95 // Clear last sent bitrate history so the new value can be used directly
96 // and not capped. 96 // and not capped.
97 min_bitrate_history_.clear(); 97 min_bitrate_history_.clear();
98 } 98 }
99 99
100 void SendSideBandwidthEstimation::SetMinMaxBitrate(int min_bitrate, 100 void SendSideBandwidthEstimation::SetMinMaxBitrate(int min_bitrate,
101 int max_bitrate) { 101 int max_bitrate) {
102 RTC_DCHECK_GE(min_bitrate, 0); 102 RTC_DCHECK_GE(min_bitrate, 0);
103 min_bitrate_configured_ = std::max(min_bitrate, kDefaultMinBitrateBps); 103 min_bitrate_configured_ =
104 std::max(min_bitrate, congestion_controller::kMinBitrateBps);
104 if (max_bitrate > 0) { 105 if (max_bitrate > 0) {
105 max_bitrate_configured_ = 106 max_bitrate_configured_ =
106 std::max<uint32_t>(min_bitrate_configured_, max_bitrate); 107 std::max<uint32_t>(min_bitrate_configured_, max_bitrate);
107 } else { 108 } else {
108 max_bitrate_configured_ = kDefaultMaxBitrateBps; 109 max_bitrate_configured_ = kDefaultMaxBitrateBps;
109 } 110 }
110 } 111 }
111 112
112 int SendSideBandwidthEstimation::GetMinBitrate() const { 113 int SendSideBandwidthEstimation::GetMinBitrate() const {
113 return min_bitrate_configured_; 114 return min_bitrate_configured_;
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 LOG(LS_WARNING) << "Estimated available bandwidth " << bitrate / 1000 336 LOG(LS_WARNING) << "Estimated available bandwidth " << bitrate / 1000
336 << " kbps is below configured min bitrate " 337 << " kbps is below configured min bitrate "
337 << min_bitrate_configured_ / 1000 << " kbps."; 338 << min_bitrate_configured_ / 1000 << " kbps.";
338 last_low_bitrate_log_ms_ = now_ms; 339 last_low_bitrate_log_ms_ = now_ms;
339 } 340 }
340 bitrate = min_bitrate_configured_; 341 bitrate = min_bitrate_configured_;
341 } 342 }
342 return bitrate; 343 return bitrate;
343 } 344 }
344 } // namespace webrtc 345 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698