Source code
Revision control
Copy as Markdown
Other Tools
From: Michael Froman <mfroman@mozilla.com>
Date: Fri, 8 Aug 2025 15:49:00 -0500
Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/313582b2ffb3f3f9aaffd399e07f55c2589a587d
---
common_audio/window_generator.cc | 5 ++---
.../aec3/comfort_noise_generator.cc | 9 ++-------
modules/audio_processing/agc/utility.cc | 4 +---
modules/audio_processing/ns/fast_math.cc | 6 ++----
modules/audio_processing/ns/noise_estimator.cc | 8 +-------
modules/audio_processing/three_band_filter_bank.cc | 13 ++++---------
.../event_based_exponential_moving_average.cc | 3 +--
rtc_base/random.cc | 4 +---
8 files changed, 14 insertions(+), 38 deletions(-)
diff --git a/common_audio/window_generator.cc b/common_audio/window_generator.cc
index 7c33d255f0..da5603d9e7 100644
--- a/common_audio/window_generator.cc
+++ b/common_audio/window_generator.cc
@@ -14,7 +14,6 @@
#include <cmath>
#include <complex>
-#include <numbers>
#include "rtc_base/checks.h"
@@ -42,7 +41,7 @@ void WindowGenerator::Hanning(int length, float* window) {
RTC_CHECK(window != nullptr);
for (int i = 0; i < length; ++i) {
window[i] =
- 0.5f * (1 - cosf(2 * std::numbers::pi_v<float> * i / (length - 1)));
+ 0.5f * (1 - cosf(2 * static_cast<float>(M_PI) * i / (length - 1)));
}
}
@@ -57,7 +56,7 @@ void WindowGenerator::KaiserBesselDerived(float alpha,
for (size_t i = 0; i <= half; ++i) {
complex<float> r = (4.0f * i) / length - 1.0f;
- sum += I0(std::numbers::pi_v<float> * alpha * sqrt(1.0f - r * r)).real();
+ sum += I0(static_cast<float>(M_PI) * alpha * sqrt(1.0f - r * r)).real();
window[i] = sum;
}
for (size_t i = length - 1; i >= half; --i) {
diff --git a/modules/audio_processing/aec3/comfort_noise_generator.cc b/modules/audio_processing/aec3/comfort_noise_generator.cc
index 17a3b70d36..ed643f4400 100644
--- a/modules/audio_processing/aec3/comfort_noise_generator.cc
+++ b/modules/audio_processing/aec3/comfort_noise_generator.cc
@@ -21,7 +21,6 @@
#include <cmath>
#include <cstdint>
#include <functional>
-#include <numbers>
#include <numeric>
#include "common_audio/signal_processing/include/signal_processing_library.h"
@@ -32,8 +31,6 @@ namespace webrtc {
namespace {
-using std::numbers::sqrt2_v;
-
// Computes the noise floor value that matches a WGN input of noise_floor_dbfs.
float GetNoiseFloorFactor(float noise_floor_dbfs) {
// kdBfsNormalization = 20.f*log10(32768.f).
@@ -42,16 +39,14 @@ float GetNoiseFloorFactor(float noise_floor_dbfs) {
}
// Table of sqrt(2) * sin(2*pi*i/32).
-// clang-format off
constexpr float kSqrt2Sin[32] = {
+0.0000000f, +0.2758994f, +0.5411961f, +0.7856950f, +1.0000000f,
- +1.1758756f, +1.3065630f, +1.3870398f, +sqrt2_v<float>, +1.3870398f,
+ +1.1758756f, +1.3065630f, +1.3870398f, +1.4142136f, +1.3870398f,
+1.3065630f, +1.1758756f, +1.0000000f, +0.7856950f, +0.5411961f,
+0.2758994f, +0.0000000f, -0.2758994f, -0.5411961f, -0.7856950f,
- -1.0000000f, -1.1758756f, -1.3065630f, -1.3870398f, -sqrt2_v<float>,
+ -1.0000000f, -1.1758756f, -1.3065630f, -1.3870398f, -1.4142136f,
-1.3870398f, -1.3065630f, -1.1758756f, -1.0000000f, -0.7856950f,
-0.5411961f, -0.2758994f};
-// clang-format on
void GenerateComfortNoise(Aec3Optimization optimization,
const std::array<float, kFftLengthBy2Plus1>& N2,
diff --git a/modules/audio_processing/agc/utility.cc b/modules/audio_processing/agc/utility.cc
index b8fa3605ea..2a87e5ce74 100644
--- a/modules/audio_processing/agc/utility.cc
+++ b/modules/audio_processing/agc/utility.cc
@@ -12,11 +12,9 @@
#include <math.h>
-#include <numbers>
-
namespace webrtc {
-static const double kLog10 = std::numbers::ln10;
+static const double kLog10 = 2.30258509299;
static const double kLinear2DbScale = 20.0 / kLog10;
static const double kLinear2LoudnessScale = 13.4 / kLog10;
diff --git a/modules/audio_processing/ns/fast_math.cc b/modules/audio_processing/ns/fast_math.cc
index 7b8fe1f55b..72f6fb2145 100644
--- a/modules/audio_processing/ns/fast_math.cc
+++ b/modules/audio_processing/ns/fast_math.cc
@@ -13,8 +13,6 @@
#include <math.h>
#include <stdint.h>
-#include <numbers>
-
#include "rtc_base/checks.h"
namespace webrtc {
@@ -55,7 +53,7 @@ float PowApproximation(float x, float p) {
}
float LogApproximation(float x) {
- constexpr float kLogOf2 = std::numbers::ln2_v<float>;
+ constexpr float kLogOf2 = 0.69314718056f;
return FastLog2f(x) * kLogOf2;
}
@@ -66,7 +64,7 @@ void LogApproximation(ArrayView<const float> x, ArrayView<float> y) {
}
float ExpApproximation(float x) {
- constexpr float kLog10Ofe = std::numbers::log10e_v<float>;
+ constexpr float kLog10Ofe = 0.4342944819f;
return PowApproximation(10.f, x * kLog10Ofe);
}
diff --git a/modules/audio_processing/ns/noise_estimator.cc b/modules/audio_processing/ns/noise_estimator.cc
index 00b647ca35..bf21d38d0b 100644
--- a/modules/audio_processing/ns/noise_estimator.cc
+++ b/modules/audio_processing/ns/noise_estimator.cc
@@ -14,7 +14,6 @@
#include <array>
#include <cstddef>
#include <cstdint>
-#include <numbers>
#include "api/array_view.h"
#include "modules/audio_processing/ns/fast_math.h"
@@ -26,14 +25,10 @@ namespace webrtc {
namespace {
-using std::numbers::ln10_v;
-
// Log(i).
-// clang-format off
constexpr std::array<float, 129> log_table = {
0.f, 0.f, 0.f, 0.f, 0.f, 1.609438f, 1.791759f,
- 1.945910f, 2.079442f, 2.197225f, ln10_v<float>, 2.397895f, 2.484907f,
- 2.564949f,
+ 1.945910f, 2.079442f, 2.197225f, 2.302585f, 2.397895f, 2.484907f, 2.564949f,
2.639057f, 2.708050f, 2.772589f, 2.833213f, 2.890372f, 2.944439f, 2.995732f,
3.044522f, 3.091043f, 3.135494f, 3.178054f, 3.218876f, 3.258097f, 3.295837f,
3.332205f, 3.367296f, 3.401197f, 3.433987f, 3.465736f, 3.496507f, 3.526361f,
@@ -51,7 +46,6 @@ constexpr std::array<float, 129> log_table = {
4.718499f, 4.727388f, 4.736198f, 4.744932f, 4.753591f, 4.762174f, 4.770685f,
4.779124f, 4.787492f, 4.795791f, 4.804021f, 4.812184f, 4.820282f, 4.828314f,
4.836282f, 4.844187f, 4.852030f};
-// clang-format on
} // namespace
diff --git a/modules/audio_processing/three_band_filter_bank.cc b/modules/audio_processing/three_band_filter_bank.cc
index 45b44a7762..d69db9bf9a 100644
--- a/modules/audio_processing/three_band_filter_bank.cc
+++ b/modules/audio_processing/three_band_filter_bank.cc
@@ -33,7 +33,6 @@
#include "modules/audio_processing/three_band_filter_bank.h"
#include <array>
-#include <numbers>
#include "rtc_base/checks.h"
@@ -89,21 +88,17 @@ const float
constexpr int kZeroFilterIndex1 = 3;
constexpr int kZeroFilterIndex2 = 9;
-constexpr float kSqrt3 = std::numbers::sqrt3_v<float>;
-
-// clang-format off
const float kDctModulation[ThreeBandFilterBank::kNumNonZeroFilters][kDctSize] =
{{2.f, 2.f, 2.f},
- {kSqrt3, 0.f, -kSqrt3},
+ {1.73205077f, 0.f, -1.73205077f},
{1.f, -2.f, 1.f},
{-1.f, 2.f, -1.f},
- {-kSqrt3, 0.f, kSqrt3},
+ {-1.73205077f, 0.f, 1.73205077f},
{-2.f, -2.f, -2.f},
- {-kSqrt3, 0.f, kSqrt3},
+ {-1.73205077f, 0.f, 1.73205077f},
{-1.f, 2.f, -1.f},
{1.f, -2.f, 1.f},
- {kSqrt3, 0.f, -kSqrt3}};
-// clang-format on
+ {1.73205077f, 0.f, -1.73205077f}};
// Filters the input signal `in` with the filter `filter` using a shift by
// `in_shift`, taking into account the previous state.
diff --git a/rtc_base/numerics/event_based_exponential_moving_average.cc b/rtc_base/numerics/event_based_exponential_moving_average.cc
index 419902dc52..27b2066a97 100644
--- a/rtc_base/numerics/event_based_exponential_moving_average.cc
+++ b/rtc_base/numerics/event_based_exponential_moving_average.cc
@@ -13,7 +13,6 @@
#include <cmath>
#include <cstdint>
#include <limits>
-#include <numbers>
#include "rtc_base/checks.h"
@@ -36,7 +35,7 @@ EventBasedExponentialMovingAverage::EventBasedExponentialMovingAverage(
}
void EventBasedExponentialMovingAverage::SetHalfTime(int half_time) {
- tau_ = static_cast<double>(half_time) / std::numbers::ln2;
+ tau_ = static_cast<double>(half_time) / log(2);
Reset();
}
diff --git a/rtc_base/random.cc b/rtc_base/random.cc
index 28e48f0d3d..55b8749cb7 100644
--- a/rtc_base/random.cc
+++ b/rtc_base/random.cc
@@ -11,8 +11,6 @@
#include <math.h>
-#include <numbers>
-
#include "rtc_base/checks.h"
#include "rtc_base/numerics/safe_conversions.h"
@@ -73,7 +71,7 @@ double Random::Gaussian(double mean, double standard_deviation) {
// interval (0, 1]. Note that we rely on NextOutput to generate integers
// in the range [1, 2^64-1]. Normally this behavior is a bit frustrating,
// but here it is exactly what we need.
- const double kPi = std::numbers::pi;
+ const double kPi = 3.14159265358979323846;
double u1 = static_cast<double>(NextOutput()) /
static_cast<double>(0xFFFFFFFFFFFFFFFFull);
double u2 = static_cast<double>(NextOutput()) /