diff --git a/audio/aidl/vts/EffectHelper.h b/audio/aidl/vts/EffectHelper.h index 0fa170f989..3877c602ef 100644 --- a/audio/aidl/vts/EffectHelper.h +++ b/audio/aidl/vts/EffectHelper.h @@ -83,6 +83,8 @@ static inline std::string getPrefix(Descriptor& descriptor) { return prefix; } +static constexpr float kMaxAudioSampleValue = 1; + class EffectHelper { public: void create(std::shared_ptr factory, std::shared_ptr& effect, @@ -413,6 +415,19 @@ class EffectHelper { } } + // Fill inputBuffer with random values between -maxAudioSampleValue to maxAudioSampleValue + void generateInputBuffer(std::vector& inputBuffer, size_t startPosition, bool isStrip, + size_t channelCount, + float maxAudioSampleValue = kMaxAudioSampleValue) { + size_t increment = isStrip ? 1 /*Fill input at all the channels*/ + : channelCount /*Fill input at only one channel*/; + + for (size_t i = startPosition; i < inputBuffer.size(); i += increment) { + inputBuffer[i] = + ((static_cast(std::rand()) / RAND_MAX) * 2 - 1) * maxAudioSampleValue; + } + } + // Generate multitone input between -1 to +1 using testFrequencies void generateMultiTone(const std::vector& testFrequencies, std::vector& input, const int samplingFrequency) { diff --git a/audio/aidl/vts/VtsHalDownmixTargetTest.cpp b/audio/aidl/vts/VtsHalDownmixTargetTest.cpp index a1491e608a..bf2283958d 100644 --- a/audio/aidl/vts/VtsHalDownmixTargetTest.cpp +++ b/audio/aidl/vts/VtsHalDownmixTargetTest.cpp @@ -149,22 +149,6 @@ class DownmixEffectHelper : public EffectHelper { mOutputBuffer.resize(mOutputBufferSize); } - // Generate mInputBuffer values between -kMaxDownmixSample to kMaxDownmixSample - void generateInputBuffer(size_t position, bool isStrip) { - size_t increment; - if (isStrip) - // Fill input at all the channels - increment = 1; - else - // Fill input at only one channel - increment = mInputChannelCount; - - for (size_t i = position; i < mInputBuffer.size(); i += increment) { - mInputBuffer[i] = - ((static_cast(std::rand()) / RAND_MAX) * 2 - 1) * kMaxDownmixSample; - } - } - bool isLayoutValid(int32_t inputLayout) { if (inputLayout & kMaxChannelMask) { return false; @@ -365,7 +349,8 @@ TEST_P(DownmixFoldDataTest, DownmixProcessData) { for (int32_t channel : supportedChannels) { size_t position = std::distance(supportedChannels.begin(), supportedChannels.find(channel)); - generateInputBuffer(position, false /*isStripe*/); + generateInputBuffer(mInputBuffer, position, false /*isStripe*/, + mInputChannelCount /*channelCount*/, kMaxDownmixSample); ASSERT_NO_FATAL_FAILURE( processAndWriteToOutput(mInputBuffer, mOutputBuffer, mEffect, &mOpenEffectReturn)); validateOutput(channel, position); @@ -417,7 +402,8 @@ TEST_P(DownmixStripDataTest, DownmixProcessData) { ASSERT_NO_FATAL_FAILURE(setParameters(Downmix::Type::STRIP)); // Generate input buffer, call process and compare outputs - generateInputBuffer(0 /*position*/, true /*isStripe*/); + generateInputBuffer(mInputBuffer, 0 /*position*/, true /*isStripe*/, + mInputChannelCount /*channelCount*/, kMaxDownmixSample); ASSERT_NO_FATAL_FAILURE( processAndWriteToOutput(mInputBuffer, mOutputBuffer, mEffect, &mOpenEffectReturn)); validateOutput(); diff --git a/audio/aidl/vts/VtsHalLoudnessEnhancerTargetTest.cpp b/audio/aidl/vts/VtsHalLoudnessEnhancerTargetTest.cpp index 1fe8beba7b..4c868a9baa 100644 --- a/audio/aidl/vts/VtsHalLoudnessEnhancerTargetTest.cpp +++ b/audio/aidl/vts/VtsHalLoudnessEnhancerTargetTest.cpp @@ -32,7 +32,6 @@ using aidl::android::hardware::audio::effect::LoudnessEnhancer; using aidl::android::hardware::audio::effect::Parameter; using android::hardware::audio::common::testing::detail::TestExecutionTracer; -static constexpr float kMaxAudioSample = 1; static constexpr int kZeroGain = 0; static constexpr int kMaxGain = std::numeric_limits::max(); static constexpr int kMinGain = std::numeric_limits::min(); @@ -154,12 +153,14 @@ class LoudnessEnhancerDataTest : public ::testing::TestWithParam( - AudioChannelLayout::LAYOUT_STEREO)); - generateInputBuffer(); + size_t channelCount = + getChannelCount(AudioChannelLayout::make( + AudioChannelLayout::LAYOUT_STEREO)); + mBufferSizeInFrames = kFrameCount * channelCount; + mInputBuffer.resize(mBufferSizeInFrames); + generateInputBuffer(mInputBuffer, 0, true, channelCount, kMaxAudioSampleValue); - mOutputBuffer.resize(mBufferSize); + mOutputBuffer.resize(mBufferSizeInFrames); } void SetUp() override { @@ -177,14 +178,6 @@ class LoudnessEnhancerDataTest : public ::testing::TestWithParam(std::rand()) / RAND_MAX) * 2 - 1) * - kMaxAudioSample); - } - } - // Add gains to the mInputBuffer and store processed output to mOutputBuffer void processAndWriteToOutput() { // Check AidlMessageQueues are not null @@ -220,7 +213,7 @@ class LoudnessEnhancerDataTest : public ::testing::TestWithParam& gainValues, bool isIncreasing) { - std::vector baseOutput(mBufferSize); + std::vector baseOutput(mBufferSizeInFrames); // Process a reference output buffer with 0 gain which gives compressed input values binder_exception_t expected; @@ -257,7 +250,7 @@ class LoudnessEnhancerDataTest : public ::testing::TestWithParam mInputBuffer; std::vector mOutputBuffer; - size_t mBufferSize; + size_t mBufferSizeInFrames; }; TEST_P(LoudnessEnhancerDataTest, IncreasingGains) { @@ -296,10 +289,10 @@ TEST_P(LoudnessEnhancerDataTest, MaximumGain) { setParameters(kMaxGain, expected); ASSERT_NO_FATAL_FAILURE(processAndWriteToOutput()); - // Validate that mOutputBuffer reaches to kMaxAudioSample for INT_MAX gain + // Validate that mOutputBuffer reaches to kMaxAudioSampleValue for INT_MAX gain for (size_t i = 0; i < mOutputBuffer.size(); i++) { if (mInputBuffer[i] != 0) { - EXPECT_NEAR(kMaxAudioSample, abs(mOutputBuffer[i]), kAbsError); + EXPECT_NEAR(kMaxAudioSampleValue, abs(mOutputBuffer[i]), kAbsError); } else { ASSERT_EQ(mOutputBuffer[i], mInputBuffer[i]); } diff --git a/audio/aidl/vts/VtsHalVisualizerTargetTest.cpp b/audio/aidl/vts/VtsHalVisualizerTargetTest.cpp index f215a8ee33..c77a228bef 100644 --- a/audio/aidl/vts/VtsHalVisualizerTargetTest.cpp +++ b/audio/aidl/vts/VtsHalVisualizerTargetTest.cpp @@ -24,6 +24,7 @@ using namespace android; +using aidl::android::hardware::audio::common::getChannelCount; using aidl::android::hardware::audio::effect::Descriptor; using aidl::android::hardware::audio::effect::getEffectTypeUuidVisualizer; using aidl::android::hardware::audio::effect::IEffect; @@ -56,6 +57,15 @@ class VisualizerParamTest : public ::testing::TestWithParam(GetParam())), mLatency(std::get(GetParam())) { std::tie(mFactory, mDescriptor) = std::get(GetParam()); + + size_t channelCount = + getChannelCount(AudioChannelLayout::make( + AudioChannelLayout::LAYOUT_STEREO)); + mBufferSizeInFrames = kInputFrameCount * channelCount; + mInputBuffer.resize(mBufferSizeInFrames); + generateInputBuffer(mInputBuffer, 0, true, channelCount, kMaxAudioSampleValue); + + mOutputBuffer.resize(mBufferSizeInFrames); } void SetUp() override { @@ -65,14 +75,15 @@ class VisualizerParamTest : public ::testing::TestWithParam mInputBuffer; + std::vector mOutputBuffer; + size_t mBufferSizeInFrames; + IEffect::OpenEffectReturn mOpenEffectReturn; + bool mAllParamsValid = true; void SetAndGetParameters() { for (auto& it : mCommonTags) { @@ -94,6 +111,7 @@ class VisualizerParamTest : public ::testing::TestWithParamgetDescriptor(&desc)); const bool valid = isParameterValid(vs, desc); const binder_exception_t expected = valid ? EX_NONE : EX_ILLEGAL_ARGUMENT; + if (expected == EX_ILLEGAL_ARGUMENT) mAllParamsValid = false; // set parameter Parameter expectParam; @@ -153,23 +171,49 @@ class VisualizerParamTest : public ::testing::TestWithParam(Visualizer::captureSampleBuffer); + id.set(vsId); + EXPECT_STATUS(EX_NONE, mEffect->getParameter(id, &getParam)) << " with: " << id.toString(); + + ASSERT_NO_FATAL_FAILURE(processAndWriteToOutput(mInputBuffer, mOutputBuffer, mEffect, + &mOpenEffectReturn, mVersion)); + ASSERT_EQ(mInputBuffer, mOutputBuffer); + + if (mAllParamsValid) { + std::vector captureBuffer = getParam.get() + .get() + .get(); + ASSERT_EQ((size_t)mCaptureSize, captureBuffer.size()); + } } std::vector, Descriptor>> kDescPair;