mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 11:36:00 +00:00
Merge "Refactor VTS tests to use common sine input generation method" into main am: 79c86b7b99
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/3334854 Change-Id: I66b548879a05bf40f9b4936c7d3ef48f550da84e Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -429,19 +429,28 @@ class EffectHelper {
|
||||
}
|
||||
}
|
||||
|
||||
// Generate multitone input between -1 to +1 using testFrequencies
|
||||
void generateMultiTone(const std::vector<int>& testFrequencies, std::vector<float>& input,
|
||||
const int samplingFrequency) {
|
||||
// Generate multitone input between -amplitude to +amplitude using testFrequencies
|
||||
// All test frequencies are considered having the same amplitude
|
||||
void generateSineWave(const std::vector<int>& testFrequencies, std::vector<float>& input,
|
||||
const float amplitude = 1.0,
|
||||
const int samplingFrequency = kSamplingFrequency) {
|
||||
for (size_t i = 0; i < input.size(); i++) {
|
||||
input[i] = 0;
|
||||
|
||||
for (size_t j = 0; j < testFrequencies.size(); j++) {
|
||||
input[i] += sin(2 * M_PI * testFrequencies[j] * i / samplingFrequency);
|
||||
}
|
||||
input[i] /= testFrequencies.size();
|
||||
input[i] *= amplitude / testFrequencies.size();
|
||||
}
|
||||
}
|
||||
|
||||
// Generate single tone input between -amplitude to +amplitude using testFrequency
|
||||
void generateSineWave(const int testFrequency, std::vector<float>& input,
|
||||
const float amplitude = 1.0,
|
||||
const int samplingFrequency = kSamplingFrequency) {
|
||||
generateSineWave(std::vector<int>{testFrequency}, input, amplitude, samplingFrequency);
|
||||
}
|
||||
|
||||
// Use FFT transform to convert the buffer to frequency domain
|
||||
// Compute its magnitude at binOffsets
|
||||
std::vector<float> calculateMagnitude(const std::vector<float>& buffer,
|
||||
|
||||
@@ -187,18 +187,6 @@ class BassBoostDataTest : public ::testing::TestWithParam<BassBoostDataTestParam
|
||||
}
|
||||
}
|
||||
|
||||
// Generate multitone input between -1 to +1 using testFrequencies
|
||||
void generateMultiTone(const std::vector<int>& testFrequencies, std::vector<float>& input) {
|
||||
for (auto i = 0; i < kInputSize; i++) {
|
||||
input[i] = 0;
|
||||
|
||||
for (size_t j = 0; j < testFrequencies.size(); j++) {
|
||||
input[i] += sin(2 * M_PI * testFrequencies[j] * i / kSamplingFrequency);
|
||||
}
|
||||
input[i] /= testFrequencies.size();
|
||||
}
|
||||
}
|
||||
|
||||
// Use FFT transform to convert the buffer to frequency domain
|
||||
// Compute its magnitude at binOffsets
|
||||
std::vector<float> calculateMagnitude(const std::vector<float>& buffer,
|
||||
@@ -251,7 +239,8 @@ TEST_P(BassBoostDataTest, IncreasingStrength) {
|
||||
|
||||
roundToFreqCenteredToFftBin(testFrequencies, binOffsets);
|
||||
|
||||
generateMultiTone(testFrequencies, input);
|
||||
// Generate multitone input
|
||||
generateSineWave(testFrequencies, input);
|
||||
|
||||
inputMag = calculateMagnitude(input, binOffsets);
|
||||
|
||||
|
||||
@@ -224,12 +224,6 @@ class EnvironmentalReverbHelper : public EffectHelper {
|
||||
output.size());
|
||||
}
|
||||
|
||||
void generateSineWaveInput(std::vector<float>& input) {
|
||||
int frequency = 1000;
|
||||
for (size_t i = 0; i < input.size(); i++) {
|
||||
input[i] = sin(2 * M_PI * frequency * i / kSamplingFrequency);
|
||||
}
|
||||
}
|
||||
using Maker = EnvironmentalReverb (*)(int);
|
||||
|
||||
static constexpr std::array<Maker, static_cast<int>(EnvironmentalReverb::bypass) + 1>
|
||||
@@ -287,6 +281,7 @@ class EnvironmentalReverbHelper : public EffectHelper {
|
||||
|
||||
static constexpr int kDurationMilliSec = 500;
|
||||
static constexpr int kBufferSize = kSamplingFrequency * kDurationMilliSec / 1000;
|
||||
static constexpr int kInputFrequency = 1000;
|
||||
|
||||
int mStereoChannelCount =
|
||||
getChannelCount(AudioChannelLayout::make<AudioChannelLayout::layoutMask>(
|
||||
@@ -349,7 +344,7 @@ class EnvironmentalReverbDataTest
|
||||
: EnvironmentalReverbHelper(std::get<DESCRIPTOR_INDEX>(GetParam())) {
|
||||
std::tie(mTag, mParamValues) = std::get<TAG_VALUE_PAIR>(GetParam());
|
||||
mInput.resize(kBufferSize);
|
||||
generateSineWaveInput(mInput);
|
||||
generateSineWave(kInputFrequency, mInput);
|
||||
}
|
||||
void SetUp() override {
|
||||
SKIP_TEST_IF_DATA_UNSUPPORTED(mDescriptor.common.flags);
|
||||
@@ -439,7 +434,7 @@ class EnvironmentalReverbMinimumParamTest
|
||||
|
||||
TEST_P(EnvironmentalReverbMinimumParamTest, MinimumValueTest) {
|
||||
std::vector<float> input(kBufferSize);
|
||||
generateSineWaveInput(input);
|
||||
generateSineWave(kInputFrequency, input);
|
||||
std::vector<float> output(kBufferSize);
|
||||
setParameterAndProcess(input, output, mValue, mTag);
|
||||
float energy = computeOutputEnergy(input, output);
|
||||
@@ -475,7 +470,7 @@ class EnvironmentalReverbDiffusionTest
|
||||
: EnvironmentalReverbHelper(std::get<DESCRIPTOR_INDEX>(GetParam())) {
|
||||
std::tie(mTag, mParamValues) = std::get<TAG_VALUE_PAIR>(GetParam());
|
||||
mInput.resize(kBufferSize);
|
||||
generateSineWaveInput(mInput);
|
||||
generateSineWave(kInputFrequency, mInput);
|
||||
}
|
||||
void SetUp() override {
|
||||
SKIP_TEST_IF_DATA_UNSUPPORTED(mDescriptor.common.flags);
|
||||
@@ -554,7 +549,7 @@ class EnvironmentalReverbDensityTest
|
||||
if (mIsInputMute) {
|
||||
std::fill(mInput.begin(), mInput.end(), 0);
|
||||
} else {
|
||||
generateSineWaveInput(mInput);
|
||||
generateSineWave(kInputFrequency, mInput);
|
||||
}
|
||||
}
|
||||
void SetUp() override {
|
||||
|
||||
@@ -132,7 +132,8 @@ class PresetReverbProcessTest : public ::testing::TestWithParam<PresetReverbProc
|
||||
public:
|
||||
PresetReverbProcessTest() {
|
||||
std::tie(mFactory, mDescriptor) = GetParam();
|
||||
generateSineWaveInput();
|
||||
mInput.resize(kBufferSize);
|
||||
generateSineWave(1000 /*Input Frequency*/, mInput);
|
||||
}
|
||||
|
||||
void SetUp() override {
|
||||
@@ -144,13 +145,6 @@ class PresetReverbProcessTest : public ::testing::TestWithParam<PresetReverbProc
|
||||
ASSERT_NO_FATAL_FAILURE(TearDownPresetReverb());
|
||||
}
|
||||
|
||||
void generateSineWaveInput() {
|
||||
int frequency = 1000;
|
||||
for (size_t i = 0; i < kBufferSize; i++) {
|
||||
mInput.push_back(sin(2 * M_PI * frequency * i / kSamplingFrequency));
|
||||
}
|
||||
}
|
||||
|
||||
bool isAuxiliary() {
|
||||
return mDescriptor.common.flags.type ==
|
||||
aidl::android::hardware::audio::effect::Flags::Type::AUXILIARY;
|
||||
|
||||
@@ -163,10 +163,7 @@ class VirtualizerProcessTest : public ::testing::TestWithParam<VirtualizerProces
|
||||
if (mZeroInput) {
|
||||
std::fill(buffer.begin(), buffer.end(), 0);
|
||||
} else {
|
||||
int frequency = 100;
|
||||
for (size_t i = 0; i < buffer.size(); i++) {
|
||||
buffer[i] = sin(2 * M_PI * frequency * i / kSamplingFrequency);
|
||||
}
|
||||
generateSineWave(1000 /*Input Frequency*/, buffer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -162,7 +162,7 @@ class VolumeDataTest : public ::testing::TestWithParam<VolumeDataTestParam>,
|
||||
mInputMag.resize(mTestFrequencies.size());
|
||||
mBinOffsets.resize(mTestFrequencies.size());
|
||||
roundToFreqCenteredToFftBin(mTestFrequencies, mBinOffsets, kBinWidth);
|
||||
generateMultiTone(mTestFrequencies, mInput, kSamplingFrequency);
|
||||
generateSineWave(mTestFrequencies, mInput);
|
||||
mInputMag = calculateMagnitude(mInput, mBinOffsets, kNPointFFT);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user