Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ed98f7b2 authored by Sneha Patil's avatar Sneha Patil
Browse files

Refactor VTS tests to use common sine input generation method

Bug: 305866207
Test: atest VtsHalVolumeTargetTest
      atest VtsHalPresetReverbTargetTest
      atest VtsHalVirtualizerTargetTest
      atest VtsHalBassBoostTargetTest
      atest VtsHalEnvironmentalReverbTargetTest
Change-Id: I6b31ba94ffed15b4ac467eec87e45c4c5f5b3805
parent c5d9dca9
Loading
Loading
Loading
Loading
+13 −4
Original line number Diff line number Diff line
@@ -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,
+2 −13
Original line number Diff line number Diff line
@@ -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);

+5 −10
Original line number Diff line number Diff line
@@ -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 {
+2 −8
Original line number Diff line number Diff line
@@ -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;
+1 −4
Original line number Diff line number Diff line
@@ -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);
        }
    }

Loading