Adds product operator for TimeDelta and Frequency

Also adding kHz factory function for Frequency class.

Bug: webrtc:9883
Change-Id: Ide44910d50eb9616de2bb0c66b8c62493d2be92e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/167725
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Ali Tofigh <alito@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30416}
diff --git a/api/units/frequency.h b/api/units/frequency.h
index 45561f4..53bd7c9 100644
--- a/api/units/frequency.h
+++ b/api/units/frequency.h
@@ -32,6 +32,11 @@
     return FromFraction(1000, hertz);
   }
   template <typename T>
+  static constexpr Frequency kHz(T hertz) {
+    static_assert(std::is_arithmetic<T>::value, "");
+    return FromFraction(1000000, hertz);
+  }
+  template <typename T>
   static constexpr Frequency hertz(T hertz) {
     static_assert(std::is_arithmetic<T>::value, "");
     return FromFraction(1000, hertz);
@@ -74,6 +79,13 @@
   return TimeDelta::us(nominator * kMegaPerMilli / frequency.millihertz());
 }
 
+inline constexpr double operator*(Frequency frequency, TimeDelta time_delta) {
+  return frequency.hertz<double>() * time_delta.seconds<double>();
+}
+inline constexpr double operator*(TimeDelta time_delta, Frequency frequency) {
+  return frequency * time_delta;
+}
+
 std::string ToString(Frequency value);
 inline std::string ToLogString(Frequency value) {
   return ToString(value);
diff --git a/api/units/frequency_unittest.cc b/api/units/frequency_unittest.cc
index cabfdfa..16a7e1b 100644
--- a/api/units/frequency_unittest.cc
+++ b/api/units/frequency_unittest.cc
@@ -154,6 +154,7 @@
 TEST(UnitConversionTest, TimeDeltaAndFrequency) {
   EXPECT_EQ(1 / Frequency::hertz(50), TimeDelta::ms(20));
   EXPECT_EQ(1 / TimeDelta::ms(20), Frequency::hertz(50));
+  EXPECT_EQ(Frequency::kHz(200) * TimeDelta::ms(2), 400.0);
 }
 }  // namespace test
 }  // namespace webrtc