Index: webrtc/modules/pacing/alr_detector.cc |
diff --git a/webrtc/modules/pacing/alr_detector.cc b/webrtc/modules/pacing/alr_detector.cc |
index 993c6cd07edde5b87d2ea5f4b061dc5c183c5a40..49163cac7e37e80ff5967fd987ab255133efb02d 100644 |
--- a/webrtc/modules/pacing/alr_detector.cc |
+++ b/webrtc/modules/pacing/alr_detector.cc |
@@ -12,6 +12,7 @@ |
#include <string> |
+#include "webrtc/logging/rtc_event_log/rtc_event_log.h" |
#include "webrtc/rtc_base/checks.h" |
#include "webrtc/rtc_base/format_macros.h" |
#include "webrtc/rtc_base/logging.h" |
@@ -25,11 +26,14 @@ const char AlrDetector::kScreenshareProbingBweExperimentName[] = |
const char AlrDetector::kStrictPacingAndProbingExperimentName[] = |
"WebRTC-StrictPacingAndProbing"; |
-AlrDetector::AlrDetector() |
+AlrDetector::AlrDetector() : AlrDetector(nullptr) {} |
+ |
+AlrDetector::AlrDetector(RtcEventLog* event_log) |
: bandwidth_usage_percent_(kDefaultAlrBandwidthUsagePercent), |
alr_start_budget_level_percent_(kDefaultAlrStartBudgetLevelPercent), |
alr_stop_budget_level_percent_(kDefaultAlrStopBudgetLevelPercent), |
- alr_budget_(0, true) { |
+ alr_budget_(0, true), |
+ event_log_(event_log) { |
RTC_CHECK( |
field_trial::FindFullName(kStrictPacingAndProbingExperimentName) |
.empty() || |
@@ -54,7 +58,6 @@ AlrDetector::~AlrDetector() {} |
void AlrDetector::OnBytesSent(size_t bytes_sent, int64_t delta_time_ms) { |
alr_budget_.UseBudget(bytes_sent); |
alr_budget_.IncreaseBudget(delta_time_ms); |
- |
if (alr_budget_.budget_level_percent() > alr_start_budget_level_percent_ && |
!alr_started_time_ms_) { |
alr_started_time_ms_.emplace(rtc::TimeMillis()); |
@@ -63,6 +66,12 @@ void AlrDetector::OnBytesSent(size_t bytes_sent, int64_t delta_time_ms) { |
alr_started_time_ms_) { |
alr_started_time_ms_.reset(); |
} |
+ int usage = 100 - alr_budget_.budget_level_percent(); |
+ uint32_t usage_kbps = usage * alr_budget_.target_rate_kbps() / 200; |
+ usage_kbps *= 100.0 / bandwidth_usage_percent_; |
+ if (event_log_) |
+ event_log_->LogAlrState(alr_started_time_ms_.has_value(), |
+ usage_kbps * 1000); |
} |
void AlrDetector::SetEstimatedBitrate(int bitrate_bps) { |