From 8ff6035fdab0f94b19ff44f5c69a3282303e73d5 Mon Sep 17 00:00:00 2001 From: Sneha Patil Date: Fri, 21 Jun 2024 12:47:30 +0000 Subject: [PATCH] EnvironmentalReverb: Add Basic Validation for Density Parameter Bug: 305866207 Test: atest VtsHalEnvironmentalReverbTargetTest Change-Id: I846dda585d788e808b8164d09ac088edbb05f160 --- .../VtsHalEnvironmentalReverbTargetTest.cpp | 73 ++++++++++++++++++- 1 file changed, 70 insertions(+), 3 deletions(-) diff --git a/audio/aidl/vts/VtsHalEnvironmentalReverbTargetTest.cpp b/audio/aidl/vts/VtsHalEnvironmentalReverbTargetTest.cpp index 5fe27f6656..82a194e287 100644 --- a/audio/aidl/vts/VtsHalEnvironmentalReverbTargetTest.cpp +++ b/audio/aidl/vts/VtsHalEnvironmentalReverbTargetTest.cpp @@ -17,6 +17,7 @@ #define LOG_TAG "VtsHalEnvironmentalReverbTest" #include #include +#include #include #include @@ -49,6 +50,8 @@ static const std::vector kParamsIncreasingVector = { static const TagVectorPair kDiffusionParam = {EnvironmentalReverb::diffusionPm, {200, 400, 600, 800, 1000}}; +static const TagVectorPair kDensityParam = {EnvironmentalReverb::densityPm, + {0, 200, 400, 600, 800, 1000}}; static const std::vector kParamsMinimumValue = { {EnvironmentalReverb::roomLevelMb, kMinRoomLevel}, @@ -475,9 +478,7 @@ class EnvironmentalReverbDiffusionTest float getVariance(std::vector& buffer) { if (isAuxiliary()) { - for (size_t i = 0; i < buffer.size(); i++) { - buffer[i] += mInput[i]; - } + accumulate_float(buffer.data(), mInput.data(), buffer.size()); } float mean = getMean(buffer); float squaredDeltas = @@ -524,6 +525,72 @@ INSTANTIATE_TEST_SUITE_P( GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDiffusionTest); +enum ParamDensityTest { DESCRIPTOR, TAG_DENSITY_VALUE, PARAM_DENSITY_VALUE, IS_INPUT_MUTE }; + +class EnvironmentalReverbDensityTest + : public ::testing::TestWithParam, Descriptor>, + EnvironmentalReverb::Tag, int, bool>>, + public EnvironmentalReverbHelper { + public: + EnvironmentalReverbDensityTest() : EnvironmentalReverbHelper(std::get(GetParam())) { + mTag = std::get(GetParam()); + mParamValues = std::get(GetParam()); + mIsInputMute = (std::get(GetParam())); + mInput.resize(kBufferSize); + if (mIsInputMute) { + std::fill(mInput.begin(), mInput.end(), 0); + } else { + generateSineWaveInput(mInput); + } + } + void SetUp() override { SetUpReverb(); } + void TearDown() override { TearDownReverb(); } + + EnvironmentalReverb::Tag mTag; + int mParamValues; + std::vector mInput; + bool mIsInputMute; +}; + +TEST_P(EnvironmentalReverbDensityTest, DensityOutput) { + float inputRmse = + audio_utils_compute_energy_mono(mInput.data(), AUDIO_FORMAT_PCM_FLOAT, mInput.size()); + + std::vector output(kBufferSize); + setParameterAndProcess(mInput, output, mParamValues, mTag); + + if (isAuxiliary() && !mIsInputMute) { + accumulate_float(output.data(), mInput.data(), output.size()); + } + + float outputRmse = + audio_utils_compute_energy_mono(output.data(), AUDIO_FORMAT_PCM_FLOAT, output.size()); + if (inputRmse != 0) { + EXPECT_GT(outputRmse, 0); + } else { + EXPECT_EQ(outputRmse, inputRmse); + } +} + +INSTANTIATE_TEST_SUITE_P( + EnvironmentalReverbTest, EnvironmentalReverbDensityTest, + ::testing::Combine( + testing::ValuesIn(kDescPair = EffectFactoryHelper::getAllEffectDescriptors( + IFactory::descriptor, getEffectTypeUuidEnvReverb())), + testing::Values(kDensityParam.first), testing::ValuesIn(kDensityParam.second), + testing::Bool()), + [](const testing::TestParamInfo& info) { + auto descriptor = std::get(info.param).second; + auto tag = std::get(info.param); + auto value = std::get(info.param); + std::string isInputMute = std::to_string(std::get(info.param)); + std::string name = getPrefix(descriptor) + "_Tag_" + toString(tag) + "_Value_" + + std::to_string(value) + "_isInputMute_" + isInputMute; + return name; + }); + +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDensityTest); + int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); ::testing::UnitTest::GetInstance()->listeners().Append(new TestExecutionTracer());