Remove unit_base functions FromStaticX

instead make functions FromX constexpr and use them.

Bug: None
Change-Id: I826c8ad5ac8b3bd97f298a99c40b31b8c63b5f85
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159220
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30321}
diff --git a/api/units/data_rate.h b/api/units/data_rate.h
index b04ee38..0d3d653 100644
--- a/api/units/data_rate.h
+++ b/api/units/data_rate.h
@@ -35,11 +35,11 @@
   static constexpr DataRate Infinity() { return PlusInfinity(); }
   template <int64_t bps>
   static constexpr DataRate BitsPerSec() {
-    return FromStaticValue<bps>();
+    return FromValue(bps);
   }
   template <int64_t kbps>
   static constexpr DataRate KilobitsPerSec() {
-    return FromStaticFraction<kbps, 1000>();
+    return FromFraction(1000, kbps);
   }
   template <typename T>
   static constexpr DataRate bps(T bits_per_second) {
@@ -49,12 +49,12 @@
   template <typename T>
   static constexpr DataRate bytes_per_sec(T bytes_per_second) {
     static_assert(std::is_arithmetic<T>::value, "");
-    return FromFraction<8>(bytes_per_second);
+    return FromFraction(8, bytes_per_second);
   }
   template <typename T>
   static constexpr DataRate kbps(T kilobits_per_sec) {
     static_assert(std::is_arithmetic<T>::value, "");
-    return FromFraction<1000>(kilobits_per_sec);
+    return FromFraction(1000, kilobits_per_sec);
   }
   template <typename T = int64_t>
   constexpr T bps() const {
diff --git a/api/units/data_size.h b/api/units/data_size.h
index 24a1351..ca4c1da 100644
--- a/api/units/data_size.h
+++ b/api/units/data_size.h
@@ -28,7 +28,7 @@
   static constexpr DataSize Infinity() { return PlusInfinity(); }
   template <int64_t bytes>
   static constexpr DataSize Bytes() {
-    return FromStaticValue<bytes>();
+    return FromValue(bytes);
   }
 
   template <typename T>
diff --git a/api/units/frequency.h b/api/units/frequency.h
index e9aa64a..aa54cb5 100644
--- a/api/units/frequency.h
+++ b/api/units/frequency.h
@@ -29,12 +29,12 @@
   Frequency() = delete;
   template <int64_t hertz>
   static constexpr Frequency Hertz() {
-    return FromStaticFraction<hertz, 1000>();
+    return FromFraction(1000, hertz);
   }
   template <typename T>
   static Frequency hertz(T hertz) {
     static_assert(std::is_arithmetic<T>::value, "");
-    return FromFraction<1000>(hertz);
+    return FromFraction(1000, hertz);
   }
   template <typename T>
   static Frequency millihertz(T hertz) {
diff --git a/api/units/time_delta.h b/api/units/time_delta.h
index 4ab83ec..0c3fd9d 100644
--- a/api/units/time_delta.h
+++ b/api/units/time_delta.h
@@ -35,25 +35,25 @@
   TimeDelta() = delete;
   template <int64_t seconds>
   static constexpr TimeDelta Seconds() {
-    return FromStaticFraction<seconds, 1000000>();
+    return FromFraction(1'000'000, seconds);
   }
   template <int64_t ms>
   static constexpr TimeDelta Millis() {
-    return FromStaticFraction<ms, 1000>();
+    return FromFraction(1000, ms);
   }
   template <int64_t us>
   static constexpr TimeDelta Micros() {
-    return FromStaticValue<us>();
+    return FromValue(us);
   }
   template <typename T>
   static TimeDelta seconds(T seconds) {
     static_assert(std::is_arithmetic<T>::value, "");
-    return FromFraction<1000000>(seconds);
+    return FromFraction(1'000'000, seconds);
   }
   template <typename T>
   static TimeDelta ms(T milliseconds) {
     static_assert(std::is_arithmetic<T>::value, "");
-    return FromFraction<1000>(milliseconds);
+    return FromFraction(1000, milliseconds);
   }
   template <typename T>
   static TimeDelta us(T microseconds) {
diff --git a/api/units/timestamp.h b/api/units/timestamp.h
index ed757af..e12e99d 100644
--- a/api/units/timestamp.h
+++ b/api/units/timestamp.h
@@ -32,26 +32,26 @@
 
   template <int64_t seconds>
   static constexpr Timestamp Seconds() {
-    return FromStaticFraction<seconds, 1000000>();
+    return FromFraction(1'000'000, seconds);
   }
   template <int64_t ms>
   static constexpr Timestamp Millis() {
-    return FromStaticFraction<ms, 1000>();
+    return FromFraction(1000, ms);
   }
   template <int64_t us>
   static constexpr Timestamp Micros() {
-    return FromStaticValue<us>();
+    return FromValue(us);
   }
 
   template <typename T>
   static Timestamp seconds(T seconds) {
     static_assert(std::is_arithmetic<T>::value, "");
-    return FromFraction<1000000>(seconds);
+    return FromFraction(1'000'000, seconds);
   }
   template <typename T>
   static Timestamp ms(T milliseconds) {
     static_assert(std::is_arithmetic<T>::value, "");
-    return FromFraction<1000>(milliseconds);
+    return FromFraction(1000, milliseconds);
   }
   template <typename T>
   static Timestamp us(T microseconds) {
diff --git a/rtc_base/units/unit_base.h b/rtc_base/units/unit_base.h
index 533d355..b988f28 100644
--- a/rtc_base/units/unit_base.h
+++ b/rtc_base/units/unit_base.h
@@ -90,26 +90,10 @@
   }
 
  protected:
-  template <int64_t value>
-  static constexpr Unit_T FromStaticValue() {
-    static_assert(value >= 0 || !Unit_T::one_sided, "");
-    static_assert(value > MinusInfinityVal(), "");
-    static_assert(value < PlusInfinityVal(), "");
-    return Unit_T(value);
-  }
-
-  template <int64_t fraction_value, int64_t Denominator>
-  static constexpr Unit_T FromStaticFraction() {
-    static_assert(fraction_value >= 0 || !Unit_T::one_sided, "");
-    static_assert(fraction_value > MinusInfinityVal() / Denominator, "");
-    static_assert(fraction_value < PlusInfinityVal() / Denominator, "");
-    return Unit_T(fraction_value * Denominator);
-  }
-
   template <
       typename T,
       typename std::enable_if<std::is_integral<T>::value>::type* = nullptr>
-  static Unit_T FromValue(T value) {
+  static constexpr Unit_T FromValue(T value) {
     if (Unit_T::one_sided)
       RTC_DCHECK_GE(value, 0);
     RTC_DCHECK_GT(value, MinusInfinityVal());
@@ -119,7 +103,7 @@
   template <typename T,
             typename std::enable_if<std::is_floating_point<T>::value>::type* =
                 nullptr>
-  static Unit_T FromValue(T value) {
+  static constexpr Unit_T FromValue(T value) {
     if (value == std::numeric_limits<T>::infinity()) {
       return PlusInfinity();
     } else if (value == -std::numeric_limits<T>::infinity()) {
@@ -131,22 +115,20 @@
   }
 
   template <
-      int64_t Denominator,
       typename T,
       typename std::enable_if<std::is_integral<T>::value>::type* = nullptr>
-  static Unit_T FromFraction(T value) {
+  static constexpr Unit_T FromFraction(int64_t denominator, T value) {
     if (Unit_T::one_sided)
       RTC_DCHECK_GE(value, 0);
-    RTC_DCHECK_GT(value, MinusInfinityVal() / Denominator);
-    RTC_DCHECK_LT(value, PlusInfinityVal() / Denominator);
-    return Unit_T(rtc::dchecked_cast<int64_t>(value * Denominator));
+    RTC_DCHECK_GT(value, MinusInfinityVal() / denominator);
+    RTC_DCHECK_LT(value, PlusInfinityVal() / denominator);
+    return Unit_T(rtc::dchecked_cast<int64_t>(value * denominator));
   }
-  template <int64_t Denominator,
-            typename T,
+  template <typename T,
             typename std::enable_if<std::is_floating_point<T>::value>::type* =
                 nullptr>
-  static Unit_T FromFraction(T value) {
-    return FromValue(value * Denominator);
+  static constexpr Unit_T FromFraction(int64_t denominator, T value) {
+    return FromValue(value * denominator);
   }
 
   template <typename T = int64_t>
diff --git a/rtc_base/units/unit_base_unittest.cc b/rtc_base/units/unit_base_unittest.cc
index f8c8503..ccb5ce0 100644
--- a/rtc_base/units/unit_base_unittest.cc
+++ b/rtc_base/units/unit_base_unittest.cc
@@ -18,18 +18,13 @@
  public:
   TestUnit() = delete;
 
-  using UnitBase::FromStaticValue;
   using UnitBase::FromValue;
   using UnitBase::ToValue;
   using UnitBase::ToValueOr;
 
-  template <int64_t kilo>
-  static constexpr TestUnit FromStaticKilo() {
-    return FromStaticFraction<kilo, 1000>();
-  }
   template <typename T>
-  static TestUnit FromKilo(T kilo) {
-    return FromFraction<1000>(kilo);
+  static constexpr TestUnit FromKilo(T kilo) {
+    return FromFraction(1000, kilo);
   }
   template <typename T = int64_t>
   T ToKilo() const {
@@ -62,8 +57,8 @@
 
   static_assert(kTestUnitPlusInf > kTestUnitZero, "");
 
-  constexpr TestUnit kTestUnitKilo = TestUnit::FromStaticKilo<kValue>();
-  constexpr TestUnit kTestUnitValue = TestUnit::FromStaticValue<kValue>();
+  constexpr TestUnit kTestUnitKilo = TestUnit::FromKilo(kValue);
+  constexpr TestUnit kTestUnitValue = TestUnit::FromValue(kValue);
 
   static_assert(kTestUnitKilo.ToKiloOr(0) == kValue, "");
   static_assert(kTestUnitValue.ToValueOr(0) == kValue, "");