summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-10-10 16:18:40 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-10-10 16:18:40 +0000
commit09d74dcff5769211fee77ed59314e46d86d7404f (patch)
treea22273761ca16c4c728070a6724ffcfedb9dd9d9
parent573809833f2ff6cc4ca23cd27c0719ae7516440f (diff)
parent0d43585645abeead0fd2bda8f854ce68e41cf0e5 (diff)
downloadinterfaces-android12-mainline-tzdata3-release.tar.gz
Change-Id: Iecc3389c87bb48cfc8a41cd2dc28d685917bdf86
-rw-r--r--audio/common/all-versions/default/7.0/HidlUtils.cpp5
-rw-r--r--audio/common/all-versions/default/tests/hidlutils_tests.cpp42
2 files changed, 36 insertions, 11 deletions
diff --git a/audio/common/all-versions/default/7.0/HidlUtils.cpp b/audio/common/all-versions/default/7.0/HidlUtils.cpp
index 5a5b5d276a..af29da61f3 100644
--- a/audio/common/all-versions/default/7.0/HidlUtils.cpp
+++ b/audio/common/all-versions/default/7.0/HidlUtils.cpp
@@ -894,7 +894,7 @@ status_t HidlUtils::audioTransportsToHal(const hidl_vec<AudioTransport>& transpo
for (const auto& transport : transports) {
switch (transport.audioCapability.getDiscriminator()) {
case AudioTransport::AudioCapability::hidl_discriminator::profile:
- if (halPort->num_audio_profiles > AUDIO_PORT_MAX_AUDIO_PROFILES) {
+ if (halPort->num_audio_profiles >= AUDIO_PORT_MAX_AUDIO_PROFILES) {
ALOGE("%s, too many audio profiles", __func__);
result = BAD_VALUE;
break;
@@ -910,7 +910,8 @@ status_t HidlUtils::audioTransportsToHal(const hidl_vec<AudioTransport>& transpo
result);
break;
case AudioTransport::AudioCapability::hidl_discriminator::edid:
- if (halPort->num_extra_audio_descriptors > AUDIO_PORT_MAX_EXTRA_AUDIO_DESCRIPTORS) {
+ if (halPort->num_extra_audio_descriptors >=
+ AUDIO_PORT_MAX_EXTRA_AUDIO_DESCRIPTORS) {
ALOGE("%s, too many extra audio descriptors", __func__);
result = BAD_VALUE;
break;
diff --git a/audio/common/all-versions/default/tests/hidlutils_tests.cpp b/audio/common/all-versions/default/tests/hidlutils_tests.cpp
index c9e6fac7b2..33ed3b99bb 100644
--- a/audio/common/all-versions/default/tests/hidlutils_tests.cpp
+++ b/audio/common/all-versions/default/tests/hidlutils_tests.cpp
@@ -954,6 +954,18 @@ TEST(HidlUtils, ConvertAudioPortConfig) {
EXPECT_TRUE(audio_port_configs_are_equal(&halConfig, &halConfigBack));
}
+static AudioProfile generateValidAudioProfile() {
+ AudioProfile profile;
+ profile.format = toString(xsd::AudioFormat::AUDIO_FORMAT_PCM_16_BIT);
+ profile.sampleRates.resize(2);
+ profile.sampleRates[0] = 44100;
+ profile.sampleRates[1] = 48000;
+ profile.channelMasks.resize(2);
+ profile.channelMasks[0] = toString(xsd::AudioChannelMask::AUDIO_CHANNEL_OUT_MONO);
+ profile.channelMasks[1] = toString(xsd::AudioChannelMask::AUDIO_CHANNEL_OUT_STEREO);
+ return profile;
+}
+
TEST(HidlUtils, ConvertInvalidAudioTransports) {
hidl_vec<AudioTransport> invalid;
struct audio_port_v7 halInvalid = {};
@@ -973,20 +985,32 @@ TEST(HidlUtils, ConvertInvalidAudioTransports) {
invalid[0].audioCapability.edid(hidl_vec<uint8_t>(EXTRA_AUDIO_DESCRIPTOR_SIZE + 1));
invalid[1].encapsulationType = "random string";
EXPECT_EQ(BAD_VALUE, HidlUtils::audioTransportsToHal(invalid, &halInvalid));
+
+ // The size of audio profile must not be greater than the maximum value.
+ invalid.resize(0);
+ invalid.resize(AUDIO_PORT_MAX_AUDIO_PROFILES + 1);
+ for (size_t i = 0; i < invalid.size(); ++i) {
+ invalid[i].audioCapability.profile(generateValidAudioProfile());
+ invalid[i].encapsulationType =
+ toString(xsd::AudioEncapsulationType::AUDIO_ENCAPSULATION_TYPE_NONE);
+ }
+ EXPECT_EQ(BAD_VALUE, HidlUtils::audioTransportsToHal(invalid, &halInvalid));
+
+ // The size of extra audio descriptors must not be greater than the maximum value.
+ invalid.resize(0);
+ invalid.resize(AUDIO_PORT_MAX_EXTRA_AUDIO_DESCRIPTORS + 1);
+ for (size_t i = 0; i < invalid.size(); ++i) {
+ invalid[i].audioCapability.edid({0x11, 0x06, 0x01});
+ invalid[i].encapsulationType =
+ toString(xsd::AudioEncapsulationType::AUDIO_ENCAPSULATION_TYPE_IEC61937);
+ }
+ EXPECT_EQ(BAD_VALUE, HidlUtils::audioTransportsToHal(invalid, &halInvalid));
}
TEST(HidlUtils, ConvertAudioTransports) {
hidl_vec<AudioTransport> transports;
transports.resize(2);
- AudioProfile profile;
- profile.format = toString(xsd::AudioFormat::AUDIO_FORMAT_PCM_16_BIT);
- profile.sampleRates.resize(2);
- profile.sampleRates[0] = 44100;
- profile.sampleRates[1] = 48000;
- profile.channelMasks.resize(2);
- profile.channelMasks[0] = toString(xsd::AudioChannelMask::AUDIO_CHANNEL_OUT_MONO);
- profile.channelMasks[1] = toString(xsd::AudioChannelMask::AUDIO_CHANNEL_OUT_STEREO);
- transports[0].audioCapability.profile(profile);
+ transports[0].audioCapability.profile(generateValidAudioProfile());
hidl_vec<uint8_t> shortAudioDescriptor({0x11, 0x06, 0x01});
transports[0].encapsulationType =
toString(xsd::AudioEncapsulationType::AUDIO_ENCAPSULATION_TYPE_NONE);