VtsHalTargetTest: Configure channel layout and generate input data
correctly
This commit includes multiple changes:
- Updated generateSineWave function to generate both mono and stereo data
- Moved the calculateMagnitude function to a common location, the EffectHelper
class and added support for both mono and stereo data
- Modified the createParamCommon function
- Moved some constants to a common location, EffectHelper.h
- Updated some test functions to add support for both mono and stereo
- Added a function in EffectHelper to validate pffft input size
- Added checks in calculateMagnitudeMono() function to validate
input and output buffer size
Bug: 305866207
Test: atest hardware/interfaces/audio/aidl/vts/
Change-Id: Ia68108ad79349559b5b12bd6574da79fb1e117f3
diff --git a/audio/aidl/vts/VtsHalDynamicsProcessingTest.cpp b/audio/aidl/vts/VtsHalDynamicsProcessingTest.cpp
index 3b1f3d9..9c23e94 100644
--- a/audio/aidl/vts/VtsHalDynamicsProcessingTest.cpp
+++ b/audio/aidl/vts/VtsHalDynamicsProcessingTest.cpp
@@ -46,8 +46,8 @@
class DynamicsProcessingTestHelper : public EffectHelper {
public:
DynamicsProcessingTestHelper(std::pair<std::shared_ptr<IFactory>, Descriptor> pair,
- int32_t channelLayOut = AudioChannelLayout::LAYOUT_STEREO)
- : mChannelLayout(channelLayOut),
+ int32_t channelLayout = kDefaultChannelLayout)
+ : mChannelLayout(channelLayout),
mChannelCount(::aidl::android::hardware::audio::common::getChannelCount(
AudioChannelLayout::make<AudioChannelLayout::layoutMask>(mChannelLayout))) {
std::tie(mFactory, mDescriptor) = pair;
@@ -162,11 +162,12 @@
static const std::set<std::vector<DynamicsProcessing::InputGain>> kInputGainTestSet;
private:
- const int32_t mChannelLayout;
std::vector<std::pair<DynamicsProcessing::Tag, DynamicsProcessing>> mTags;
protected:
+ const int32_t mChannelLayout;
const int mChannelCount;
+
void CleanUp() {
mTags.clear();
mPreEqChannelEnable.clear();
@@ -397,6 +398,8 @@
return true;
}
+// This function calculates power for both and mono and stereo data as the total power for
+// interleaved multichannel data can be calculated by treating it as a continuous mono input.
float DynamicsProcessingTestHelper::calculateDb(const std::vector<float>& input,
size_t startSamplePos = 0) {
return audio_utils_compute_power_mono(input.data() + startSamplePos, AUDIO_FORMAT_PCM_FLOAT,
@@ -623,13 +626,14 @@
DynamicsProcessingInputGainDataTest()
: DynamicsProcessingTestHelper((GetParam()), AudioChannelLayout::LAYOUT_MONO) {
mInput.resize(kFrameCount * mChannelCount);
- generateSineWave(kInputFrequency /*Input Frequency*/, mInput);
- mInputDb = calculateDb(mInput);
}
void SetUp() override {
SetUpDynamicsProcessingEffect();
SKIP_TEST_IF_DATA_UNSUPPORTED(mDescriptor.common.flags);
+ ASSERT_NO_FATAL_FAILURE(generateSineWave(kInputFrequency /*Input Frequency*/, mInput, 1.0,
+ kSamplingFrequency, mChannelLayout));
+ mInputDb = calculateDb(mInput);
}
void TearDown() override { TearDownDynamicsProcessingEffect(); }
@@ -758,13 +762,14 @@
: DynamicsProcessingTestHelper(GetParam(), AudioChannelLayout::LAYOUT_MONO) {
mBufferSize = kFrameCount * mChannelCount;
mInput.resize(mBufferSize);
- generateSineWave(1000 /*Input Frequency*/, mInput);
- mInputDb = calculateDb(mInput);
}
void SetUp() override {
SetUpDynamicsProcessingEffect();
SKIP_TEST_IF_DATA_UNSUPPORTED(mDescriptor.common.flags);
+ ASSERT_NO_FATAL_FAILURE(generateSineWave(1000 /*Input Frequency*/, mInput, 1.0,
+ kSamplingFrequency, mChannelLayout));
+ mInputDb = calculateDb(mInput);
}
void TearDown() override { TearDownDynamicsProcessingEffect(); }