Skip to content

Commit

Permalink
Snap for 12385180 from 7e3bd36 to 24Q4-release
Browse files Browse the repository at this point in the history
Change-Id: I786bc78d076b82d592993a5761dc83a206604561
  • Loading branch information
Android Build Coastguard Worker committed Sep 18, 2024
2 parents b419327 + 7e3bd36 commit 823dc48
Show file tree
Hide file tree
Showing 8 changed files with 97 additions and 49 deletions.
15 changes: 15 additions & 0 deletions audio/aidl/vts/EffectHelper.h
Original file line number Diff line number Diff line change
Expand Up @@ -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<IFactory> factory, std::shared_ptr<IEffect>& effect,
Expand Down Expand Up @@ -413,6 +415,19 @@ class EffectHelper {
}
}

// Fill inputBuffer with random values between -maxAudioSampleValue to maxAudioSampleValue
void generateInputBuffer(std::vector<float>& 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<float>(std::rand()) / RAND_MAX) * 2 - 1) * maxAudioSampleValue;
}
}

// Generate multitone input between -1 to +1 using testFrequencies
void generateMultiTone(const std::vector<int>& testFrequencies, std::vector<float>& input,
const int samplingFrequency) {
Expand Down
22 changes: 4 additions & 18 deletions audio/aidl/vts/VtsHalDownmixTargetTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<float>(std::rand()) / RAND_MAX) * 2 - 1) * kMaxDownmixSample;
}
}

bool isLayoutValid(int32_t inputLayout) {
if (inputLayout & kMaxChannelMask) {
return false;
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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();
Expand Down
31 changes: 12 additions & 19 deletions audio/aidl/vts/VtsHalLoudnessEnhancerTargetTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<int>::max();
static constexpr int kMinGain = std::numeric_limits<int>::min();
Expand Down Expand Up @@ -154,12 +153,14 @@ class LoudnessEnhancerDataTest : public ::testing::TestWithParam<LoudnessEnhance
public:
LoudnessEnhancerDataTest() {
std::tie(mFactory, mDescriptor) = GetParam();
mBufferSize = kFrameCount *
getChannelCount(AudioChannelLayout::make<AudioChannelLayout::layoutMask>(
AudioChannelLayout::LAYOUT_STEREO));
generateInputBuffer();

mOutputBuffer.resize(mBufferSize);
size_t channelCount =
getChannelCount(AudioChannelLayout::make<AudioChannelLayout::layoutMask>(
AudioChannelLayout::LAYOUT_STEREO));
mBufferSizeInFrames = kFrameCount * channelCount;
mInputBuffer.resize(mBufferSizeInFrames);
generateInputBuffer(mInputBuffer, 0, true, channelCount, kMaxAudioSampleValue);

mOutputBuffer.resize(mBufferSizeInFrames);
}

void SetUp() override {
Expand All @@ -177,14 +178,6 @@ class LoudnessEnhancerDataTest : public ::testing::TestWithParam<LoudnessEnhance
TearDownLoudnessEnhancer();
}

// Fill inputBuffer with random values between -kMaxAudioSample to kMaxAudioSample
void generateInputBuffer() {
for (size_t i = 0; i < mBufferSize; i++) {
mInputBuffer.push_back(((static_cast<float>(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
Expand Down Expand Up @@ -220,7 +213,7 @@ class LoudnessEnhancerDataTest : public ::testing::TestWithParam<LoudnessEnhance
}

void assertSequentialGains(const std::vector<int>& gainValues, bool isIncreasing) {
std::vector<float> baseOutput(mBufferSize);
std::vector<float> baseOutput(mBufferSizeInFrames);

// Process a reference output buffer with 0 gain which gives compressed input values
binder_exception_t expected;
Expand Down Expand Up @@ -257,7 +250,7 @@ class LoudnessEnhancerDataTest : public ::testing::TestWithParam<LoudnessEnhance

std::vector<float> mInputBuffer;
std::vector<float> mOutputBuffer;
size_t mBufferSize;
size_t mBufferSizeInFrames;
};

TEST_P(LoudnessEnhancerDataTest, IncreasingGains) {
Expand Down Expand Up @@ -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]);
}
Expand Down
64 changes: 54 additions & 10 deletions audio/aidl/vts/VtsHalVisualizerTargetTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -56,6 +57,15 @@ class VisualizerParamTest : public ::testing::TestWithParam<VisualizerParamTestP
mMeasurementMode(std::get<PARAM_MEASUREMENT_MODE>(GetParam())),
mLatency(std::get<PARAM_LATENCY>(GetParam())) {
std::tie(mFactory, mDescriptor) = std::get<PARAM_INSTANCE_NAME>(GetParam());

size_t channelCount =
getChannelCount(AudioChannelLayout::make<AudioChannelLayout::layoutMask>(
AudioChannelLayout::LAYOUT_STEREO));
mBufferSizeInFrames = kInputFrameCount * channelCount;
mInputBuffer.resize(mBufferSizeInFrames);
generateInputBuffer(mInputBuffer, 0, true, channelCount, kMaxAudioSampleValue);

mOutputBuffer.resize(mBufferSizeInFrames);
}

void SetUp() override {
Expand All @@ -65,14 +75,15 @@ class VisualizerParamTest : public ::testing::TestWithParam<VisualizerParamTestP
Parameter::Common common = createParamCommon(
0 /* session */, 1 /* ioHandle */, 44100 /* iSampleRate */, 44100 /* oSampleRate */,
kInputFrameCount /* iFrameCount */, kOutputFrameCount /* oFrameCount */);
IEffect::OpenEffectReturn ret;
ASSERT_NO_FATAL_FAILURE(open(mEffect, common, std::nullopt, &ret, EX_NONE));
ASSERT_NO_FATAL_FAILURE(open(mEffect, common, std::nullopt, &mOpenEffectReturn, EX_NONE));
ASSERT_NE(nullptr, mEffect);
mVersion = EffectFactoryHelper::getHalVersion(mFactory);
}

void TearDown() override {
ASSERT_NO_FATAL_FAILURE(close(mEffect));
ASSERT_NO_FATAL_FAILURE(destroy(mFactory, mEffect));
mOpenEffectReturn = IEffect::OpenEffectReturn{};
}

static const long kInputFrameCount = 0x100, kOutputFrameCount = 0x100;
Expand All @@ -83,6 +94,12 @@ class VisualizerParamTest : public ::testing::TestWithParam<VisualizerParamTestP
Visualizer::ScalingMode mScalingMode = Visualizer::ScalingMode::NORMALIZED;
Visualizer::MeasurementMode mMeasurementMode = Visualizer::MeasurementMode::NONE;
int mLatency = 0;
int mVersion = 0;
std::vector<float> mInputBuffer;
std::vector<float> mOutputBuffer;
size_t mBufferSizeInFrames;
IEffect::OpenEffectReturn mOpenEffectReturn;
bool mAllParamsValid = true;

void SetAndGetParameters() {
for (auto& it : mCommonTags) {
Expand All @@ -94,6 +111,7 @@ class VisualizerParamTest : public ::testing::TestWithParam<VisualizerParamTestP
ASSERT_STATUS(EX_NONE, mEffect->getDescriptor(&desc));
const bool valid = isParameterValid<Visualizer, Range::visualizer>(vs, desc);
const binder_exception_t expected = valid ? EX_NONE : EX_ILLEGAL_ARGUMENT;
if (expected == EX_ILLEGAL_ARGUMENT) mAllParamsValid = false;

// set parameter
Parameter expectParam;
Expand Down Expand Up @@ -153,23 +171,49 @@ class VisualizerParamTest : public ::testing::TestWithParam<VisualizerParamTestP
};

TEST_P(VisualizerParamTest, SetAndGetCaptureSize) {
EXPECT_NO_FATAL_FAILURE(addCaptureSizeParam(mCaptureSize));
SetAndGetParameters();
ASSERT_NO_FATAL_FAILURE(addCaptureSizeParam(mCaptureSize));
ASSERT_NO_FATAL_FAILURE(SetAndGetParameters());
}

TEST_P(VisualizerParamTest, SetAndGetScalingMode) {
EXPECT_NO_FATAL_FAILURE(addScalingModeParam(mScalingMode));
SetAndGetParameters();
ASSERT_NO_FATAL_FAILURE(addScalingModeParam(mScalingMode));
ASSERT_NO_FATAL_FAILURE(SetAndGetParameters());
}

TEST_P(VisualizerParamTest, SetAndGetMeasurementMode) {
EXPECT_NO_FATAL_FAILURE(addMeasurementModeParam(mMeasurementMode));
SetAndGetParameters();
ASSERT_NO_FATAL_FAILURE(addMeasurementModeParam(mMeasurementMode));
ASSERT_NO_FATAL_FAILURE(SetAndGetParameters());
}

TEST_P(VisualizerParamTest, SetAndGetLatency) {
EXPECT_NO_FATAL_FAILURE(addLatencyParam(mLatency));
SetAndGetParameters();
ASSERT_NO_FATAL_FAILURE(addLatencyParam(mLatency));
ASSERT_NO_FATAL_FAILURE(SetAndGetParameters());
}

TEST_P(VisualizerParamTest, testCaptureSampleBufferSizeAndOutput) {
ASSERT_NO_FATAL_FAILURE(addCaptureSizeParam(mCaptureSize));
ASSERT_NO_FATAL_FAILURE(addScalingModeParam(mScalingMode));
ASSERT_NO_FATAL_FAILURE(addMeasurementModeParam(mMeasurementMode));
ASSERT_NO_FATAL_FAILURE(addLatencyParam(mLatency));
ASSERT_NO_FATAL_FAILURE(SetAndGetParameters());

Parameter getParam;
Parameter::Id id;
Visualizer::Id vsId;
vsId.set<Visualizer::Id::commonTag>(Visualizer::captureSampleBuffer);
id.set<Parameter::Id::visualizerTag>(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<uint8_t> captureBuffer = getParam.get<Parameter::specific>()
.get<Parameter::Specific::visualizer>()
.get<Visualizer::captureSampleBuffer>();
ASSERT_EQ((size_t)mCaptureSize, captureBuffer.size());
}
}

std::vector<std::pair<std::shared_ptr<IFactory>, Descriptor>> kDescPair;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,5 @@ parcelable NfcConfig {
byte[] offHostRouteUicc;
byte[] offHostRouteEse;
byte defaultIsoDepRoute;
byte[] offHostSimPipeIds = {};
}
4 changes: 4 additions & 0 deletions nfc/aidl/android/hardware/nfc/NfcConfig.aidl
Original file line number Diff line number Diff line change
Expand Up @@ -86,4 +86,8 @@ parcelable NfcConfig {
* Default IsoDep route. 0x00 if there aren't any. Refer to NCI spec.
*/
byte defaultIsoDepRoute;
/**
* Pipe IDs for UICC. Empty if not available
*/
byte[] offHostSimPipeIds = {};
}
5 changes: 5 additions & 0 deletions nfc/aidl/vts/functional/VtsAidlHalNfcTargetTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,11 @@ TEST_P(NfcAidl, CheckGetConfigValues) {
EXPECT_GE((uint8_t)configValue.defaultIsoDepRoute, MIN_OFFHOST_ROUTE_ID);
EXPECT_LE((uint8_t)configValue.defaultIsoDepRoute, MAX_OFFHOST_ROUTE_ID);
}
for (auto simPipeId : configValue.offHostSimPipeIds) {
LOG(INFO) << StringPrintf("offHostSimPipeId= %x", simPipeId);
EXPECT_GE(simPipeId, MIN_OFFHOST_ROUTE_ID);
EXPECT_LE(simPipeId, MAX_OFFHOST_ROUTE_ID);
}
}

/*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ SignerName = tstr

UdsCertChain = [
+ X509Certificate ; Root -> ... -> Leaf. "Root" is the vendor self-signed
; cert, "Leaf" contains UDS_Public. It's recommended to
; cert, "Leaf" contains UDS_Pub. It's recommended to
; have at least 3 certificates in the chain.
; The Root certificate is recommended to be generated in an air-gapped,
; HSM-based secure environment. The intermediate signing keys may be
Expand All @@ -77,7 +77,7 @@ X509Certificate = bstr
; The DICE Chain contains measurements about the device firmware.
; The first entry in the DICE Chain is the UDS_Pub, encoded as a COSE_key. All entries
; after the first describe a link in the boot chain (e.g. bootloaders: BL1, BL2, ... BLN)
; Note that there is no DiceChainEntry for UDS_pub, only a "bare" COSE_key.
; Note that there is no DiceChainEntry for UDS_Pub, only a "bare" COSE_key.
DiceCertChain = [
PubKeyEd25519 / PubKeyECDSA256 / PubKeyECDSA384, ; UDS_Pub
+ DiceChainEntry, ; First CDI_Certificate -> Last CDI_Certificate
Expand Down

0 comments on commit 823dc48

Please sign in to comment.