mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-02 20:24:19 +00:00
Merge "EnvironmentalReverb: Add Basic Validation for Density Parameter" into main
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
#define LOG_TAG "VtsHalEnvironmentalReverbTest"
|
||||
#include <android-base/logging.h>
|
||||
#include <audio_utils/power.h>
|
||||
#include <audio_utils/primitives.h>
|
||||
#include <system/audio.h>
|
||||
#include <numeric>
|
||||
|
||||
@@ -49,6 +50,8 @@ static const std::vector<TagVectorPair> 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<TagValuePair> kParamsMinimumValue = {
|
||||
{EnvironmentalReverb::roomLevelMb, kMinRoomLevel},
|
||||
@@ -475,9 +478,7 @@ class EnvironmentalReverbDiffusionTest
|
||||
|
||||
float getVariance(std::vector<float>& 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<std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>,
|
||||
EnvironmentalReverb::Tag, int, bool>>,
|
||||
public EnvironmentalReverbHelper {
|
||||
public:
|
||||
EnvironmentalReverbDensityTest() : EnvironmentalReverbHelper(std::get<DESCRIPTOR>(GetParam())) {
|
||||
mTag = std::get<TAG_DENSITY_VALUE>(GetParam());
|
||||
mParamValues = std::get<PARAM_DENSITY_VALUE>(GetParam());
|
||||
mIsInputMute = (std::get<IS_INPUT_MUTE>(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<float> mInput;
|
||||
bool mIsInputMute;
|
||||
};
|
||||
|
||||
TEST_P(EnvironmentalReverbDensityTest, DensityOutput) {
|
||||
float inputRmse =
|
||||
audio_utils_compute_energy_mono(mInput.data(), AUDIO_FORMAT_PCM_FLOAT, mInput.size());
|
||||
|
||||
std::vector<float> 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<EnvironmentalReverbDensityTest::ParamType>& info) {
|
||||
auto descriptor = std::get<DESCRIPTOR>(info.param).second;
|
||||
auto tag = std::get<TAG_DENSITY_VALUE>(info.param);
|
||||
auto value = std::get<PARAM_DENSITY_VALUE>(info.param);
|
||||
std::string isInputMute = std::to_string(std::get<IS_INPUT_MUTE>(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());
|
||||
|
||||
Reference in New Issue
Block a user