Initialize signal processing function pointers statically
The last run-time logic for selecting function pointers was removed in May 2016, here: https://codereview.webrtc.org/1955413003 It would be even better if we could eliminate the function pointers entirely and just have different implementations that we select at compile time; I've left a TODO asking for this. Bug: webrtc:9553 Change-Id: Ica71d71e19759da00967168f6479b7eb8b46c590 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144053 Reviewed-by: Alessio Bazzica <alessiob@webrtc.org> Commit-Queue: Karl Wiberg <kwiberg@webrtc.org> Cr-Commit-Position: refs/heads/master@{#28414}
This commit is contained in:
@ -25,13 +25,7 @@ static const int16_t vector16[kVector16Size] = {1,
|
||||
-3333,
|
||||
345};
|
||||
|
||||
class SplTest : public ::testing::Test {
|
||||
protected:
|
||||
SplTest() { WebRtcSpl_Init(); }
|
||||
~SplTest() override {}
|
||||
};
|
||||
|
||||
TEST_F(SplTest, MacroTest) {
|
||||
TEST(SplTest, MacroTest) {
|
||||
// Macros with inputs.
|
||||
int A = 10;
|
||||
int B = 21;
|
||||
@ -93,7 +87,7 @@ TEST_F(SplTest, MacroTest) {
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST_F(SplTest, InlineTest) {
|
||||
TEST(SplTest, InlineTest) {
|
||||
int16_t a16 = 121;
|
||||
int16_t b16 = -17;
|
||||
int32_t a32 = 111121;
|
||||
@ -124,7 +118,7 @@ TEST_F(SplTest, InlineTest) {
|
||||
EXPECT_EQ(138, WebRtcSpl_SubSatW16(a16, b16));
|
||||
}
|
||||
|
||||
TEST_F(SplTest, AddSubSatW32) {
|
||||
TEST(SplTest, AddSubSatW32) {
|
||||
static constexpr int32_t kAddSubArgs[] = {
|
||||
INT32_MIN, INT32_MIN + 1, -3, -2, -1, 0, 1, -1, 2,
|
||||
3, INT32_MAX - 1, INT32_MAX};
|
||||
@ -143,7 +137,7 @@ TEST_F(SplTest, AddSubSatW32) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(SplTest, CountLeadingZeros32) {
|
||||
TEST(SplTest, CountLeadingZeros32) {
|
||||
EXPECT_EQ(32, WebRtcSpl_CountLeadingZeros32(0));
|
||||
EXPECT_EQ(32, WebRtcSpl_CountLeadingZeros32_NotBuiltin(0));
|
||||
for (int i = 0; i < 32; ++i) {
|
||||
@ -156,7 +150,7 @@ TEST_F(SplTest, CountLeadingZeros32) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(SplTest, CountLeadingZeros64) {
|
||||
TEST(SplTest, CountLeadingZeros64) {
|
||||
EXPECT_EQ(64, WebRtcSpl_CountLeadingZeros64(0));
|
||||
EXPECT_EQ(64, WebRtcSpl_CountLeadingZeros64_NotBuiltin(0));
|
||||
for (int i = 0; i < 64; ++i) {
|
||||
@ -169,7 +163,7 @@ TEST_F(SplTest, CountLeadingZeros64) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(SplTest, MathOperationsTest) {
|
||||
TEST(SplTest, MathOperationsTest) {
|
||||
int A = 1134567892;
|
||||
int32_t num = 117;
|
||||
int32_t den = -5;
|
||||
@ -184,7 +178,7 @@ TEST_F(SplTest, MathOperationsTest) {
|
||||
EXPECT_EQ(0, WebRtcSpl_DivW32HiLow(128, 0, 256));
|
||||
}
|
||||
|
||||
TEST_F(SplTest, BasicArrayOperationsTest) {
|
||||
TEST(SplTest, BasicArrayOperationsTest) {
|
||||
const size_t kVectorSize = 4;
|
||||
int B[] = {4, 12, 133, 1100};
|
||||
int16_t b16[kVectorSize];
|
||||
@ -249,7 +243,7 @@ TEST_F(SplTest, BasicArrayOperationsTest) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(SplTest, MinMaxOperationsTest) {
|
||||
TEST(SplTest, MinMaxOperationsTest) {
|
||||
const size_t kVectorSize = 17;
|
||||
|
||||
// Vectors to test the cases where minimum values have to be caught
|
||||
@ -340,7 +334,7 @@ TEST_F(SplTest, MinMaxOperationsTest) {
|
||||
EXPECT_EQ(6u, WebRtcSpl_MinIndexW32(vector32, kVectorSize));
|
||||
}
|
||||
|
||||
TEST_F(SplTest, VectorOperationsTest) {
|
||||
TEST(SplTest, VectorOperationsTest) {
|
||||
const size_t kVectorSize = 4;
|
||||
int B[] = {4, 12, 133, 1100};
|
||||
int16_t a16[kVectorSize];
|
||||
@ -402,7 +396,7 @@ TEST_F(SplTest, VectorOperationsTest) {
|
||||
EXPECT_EQ(0, WebRtcSpl_GetScalingSquare(b16, kVectorSize, 1));
|
||||
}
|
||||
|
||||
TEST_F(SplTest, EstimatorsTest) {
|
||||
TEST(SplTest, EstimatorsTest) {
|
||||
const size_t kOrder = 2;
|
||||
const int32_t unstable_filter[] = {4, 12, 133, 1100};
|
||||
const int32_t stable_filter[] = {1100, 133, 12, 4};
|
||||
@ -419,7 +413,7 @@ TEST_F(SplTest, EstimatorsTest) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(SplTest, FilterTest) {
|
||||
TEST(SplTest, FilterTest) {
|
||||
const size_t kVectorSize = 4;
|
||||
const size_t kFilterOrder = 3;
|
||||
int16_t A[] = {1, 2, 33, 100};
|
||||
@ -457,7 +451,7 @@ TEST_F(SplTest, FilterTest) {
|
||||
data_out, bTmp16Low, kVectorSize));
|
||||
}
|
||||
|
||||
TEST_F(SplTest, RandTest) {
|
||||
TEST(SplTest, RandTest) {
|
||||
const int kVectorSize = 4;
|
||||
int16_t BU[] = {3653, 12446, 8525, 30691};
|
||||
int16_t b16[kVectorSize];
|
||||
@ -472,12 +466,12 @@ TEST_F(SplTest, RandTest) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(SplTest, DotProductWithScaleTest) {
|
||||
TEST(SplTest, DotProductWithScaleTest) {
|
||||
EXPECT_EQ(605362796, WebRtcSpl_DotProductWithScale(vector16, vector16,
|
||||
kVector16Size, 2));
|
||||
}
|
||||
|
||||
TEST_F(SplTest, CrossCorrelationTest) {
|
||||
TEST(SplTest, CrossCorrelationTest) {
|
||||
// Note the function arguments relation specificed by API.
|
||||
const size_t kCrossCorrelationDimension = 3;
|
||||
const int kShift = 2;
|
||||
@ -509,7 +503,7 @@ TEST_F(SplTest, CrossCorrelationTest) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(SplTest, AutoCorrelationTest) {
|
||||
TEST(SplTest, AutoCorrelationTest) {
|
||||
int scale = 0;
|
||||
int32_t vector32[kVector16Size];
|
||||
const int32_t expected[kVector16Size] = {302681398, 14223410, -121705063,
|
||||
@ -525,7 +519,7 @@ TEST_F(SplTest, AutoCorrelationTest) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(SplTest, SignalProcessingTest) {
|
||||
TEST(SplTest, SignalProcessingTest) {
|
||||
const size_t kVectorSize = 4;
|
||||
int A[] = {1, 2, 33, 100};
|
||||
const int16_t kHanning[4] = {2399, 8192, 13985, 16384};
|
||||
@ -565,7 +559,7 @@ TEST_F(SplTest, SignalProcessingTest) {
|
||||
EXPECT_EQ(0, bScale);
|
||||
}
|
||||
|
||||
TEST_F(SplTest, FFTTest) {
|
||||
TEST(SplTest, FFTTest) {
|
||||
int16_t B[] = {1, 2, 33, 100, 2, 3, 34, 101, 3, 4, 35, 102, 4, 5, 36, 103};
|
||||
|
||||
EXPECT_EQ(0, WebRtcSpl_ComplexFFT(B, 3, 1));
|
||||
@ -582,7 +576,7 @@ TEST_F(SplTest, FFTTest) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(SplTest, Resample48WithSaturationTest) {
|
||||
TEST(SplTest, Resample48WithSaturationTest) {
|
||||
// The test resamples 3*kBlockSize number of samples to 2*kBlockSize number
|
||||
// of samples.
|
||||
const size_t kBlockSize = 16;
|
||||
|
||||
Reference in New Issue
Block a user