From 08233d44a6cfde878d7e10bca38ae935ed1c8fd5 Mon Sep 17 00:00:00 2001 From: Mauro Date: Wed, 30 Jun 2021 07:57:22 +0000 Subject: [HICN-713] Transport Library Major Refactoring 2 Co-authored-by: Luca Muscariello Co-authored-by: Michele Papalini Co-authored-by: Olivier Roques Co-authored-by: Giulio Grassi Signed-off-by: Mauro Sardara Change-Id: I5b2c667bad66feb45abdb5effe22ed0f6c85d1c2 --- .../src/protocols/rtc/trendline_estimator.h | 147 --------------------- 1 file changed, 147 deletions(-) delete mode 100644 libtransport/src/protocols/rtc/trendline_estimator.h (limited to 'libtransport/src/protocols/rtc/trendline_estimator.h') diff --git a/libtransport/src/protocols/rtc/trendline_estimator.h b/libtransport/src/protocols/rtc/trendline_estimator.h deleted file mode 100644 index 372acbc67..000000000 --- a/libtransport/src/protocols/rtc/trendline_estimator.h +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -// FROM -// https://source.chromium.org/chromium/chromium/src/+/master:third_party/webrtc/modules/congestion_controller/goog_cc/trendline_estimator.h - -#ifndef MODULES_CONGESTION_CONTROLLER_GOOG_CC_TRENDLINE_ESTIMATOR_H_ -#define MODULES_CONGESTION_CONTROLLER_GOOG_CC_TRENDLINE_ESTIMATOR_H_ - -#include -#include - -#include -#include -#include -#include - -namespace transport { - -namespace protocol { - -namespace rtc { - -class OptionalDouble { - public: - OptionalDouble() : val(0), has_val(false){}; - OptionalDouble(double val) : val(val), has_val(true){}; - - double value() { return val; } - bool has_value() { return has_val; } - - private: - double val; - bool has_val; -}; - -enum class BandwidthUsage { - kBwNormal = 0, - kBwUnderusing = 1, - kBwOverusing = 2, - kLast -}; - -struct TrendlineEstimatorSettings { - static constexpr char kKey[] = "WebRTC-Bwe-TrendlineEstimatorSettings"; - static constexpr unsigned kDefaultTrendlineWindowSize = 20; - - // TrendlineEstimatorSettings() = delete; - TrendlineEstimatorSettings( - /*const WebRtcKeyValueConfig* key_value_config*/); - - // Sort the packets in the window. Should be redundant, - // but then almost no cost. - bool enable_sort = false; - - // Cap the trendline slope based on the minimum delay seen - // in the beginning_packets and end_packets respectively. - bool enable_cap = false; - unsigned beginning_packets = 7; - unsigned end_packets = 7; - double cap_uncertainty = 0.0; - - // Size (in packets) of the window. - unsigned window_size = kDefaultTrendlineWindowSize; - - // std::unique_ptr Parser(); -}; - -class TrendlineEstimator /*: public DelayIncreaseDetectorInterface */ { - public: - TrendlineEstimator(/*const WebRtcKeyValueConfig* key_value_config, - NetworkStatePredictor* network_state_predictor*/); - - ~TrendlineEstimator(); - - // Update the estimator with a new sample. The deltas should represent deltas - // between timestamp groups as defined by the InterArrival class. - void Update(double recv_delta_ms, double send_delta_ms, int64_t send_time_ms, - int64_t arrival_time_ms, size_t packet_size, - bool calculated_deltas); - - void UpdateTrendline(double recv_delta_ms, double send_delta_ms, - int64_t send_time_ms, int64_t arrival_time_ms, - size_t packet_size); - - BandwidthUsage State() const; - - struct PacketTiming { - PacketTiming(double arrival_time_ms, double smoothed_delay_ms, - double raw_delay_ms) - : arrival_time_ms(arrival_time_ms), - smoothed_delay_ms(smoothed_delay_ms), - raw_delay_ms(raw_delay_ms) {} - double arrival_time_ms; - double smoothed_delay_ms; - double raw_delay_ms; - }; - - private: - // friend class GoogCcStatePrinter; - void Detect(double trend, double ts_delta, int64_t now_ms); - - void UpdateThreshold(double modified_offset, int64_t now_ms); - - // Parameters. - TrendlineEstimatorSettings settings_; - const double smoothing_coef_; - const double threshold_gain_; - // Used by the existing threshold. - int num_of_deltas_; - // Keep the arrival times small by using the change from the first packet. - int64_t first_arrival_time_ms_; - // Exponential backoff filtering. - double accumulated_delay_; - double smoothed_delay_; - // Linear least squares regression. - std::deque delay_hist_; - - const double k_up_; - const double k_down_; - double overusing_time_threshold_; - double threshold_; - double prev_modified_trend_; - int64_t last_update_ms_; - double prev_trend_; - double time_over_using_; - int overuse_counter_; - BandwidthUsage hypothesis_; - // BandwidthUsage hypothesis_predicted_; - // NetworkStatePredictor* network_state_predictor_; - - // RTC_DISALLOW_COPY_AND_ASSIGN(TrendlineEstimator); -}; - -} // namespace rtc - -} // end namespace protocol - -} // end namespace transport -#endif // MODULES_CONGESTION_CONTROLLER_GOOG_CC_TRENDLINE_ESTIMATOR_H_ -- cgit 1.2.3-korg