From c2c965b514e38134f3a373b4dbb4ba7cb8ad4e29 Mon Sep 17 00:00:00 2001 From: Trevor Knight Date: Fri, 1 Nov 2024 23:06:27 +0000 Subject: [PATCH] Add speaker layout validation to VtsHalAudioCoreModuleTargetTest. This CL adds validation to the VtsHalAudioCoreModuleTargetTest to ensure that the speaker layout is not null and either none or layoutMask. This is a new required field for the audio HAL. Bug: 337522902 Test: m Change-Id: I59fc58b32f0ceb09a58271e5ea71c8b69fa2bfc3 --- audio/aidl/vts/VtsHalAudioCoreModuleTargetTest.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/audio/aidl/vts/VtsHalAudioCoreModuleTargetTest.cpp b/audio/aidl/vts/VtsHalAudioCoreModuleTargetTest.cpp index 9fe5801682..6bfba65ae6 100644 --- a/audio/aidl/vts/VtsHalAudioCoreModuleTargetTest.cpp +++ b/audio/aidl/vts/VtsHalAudioCoreModuleTargetTest.cpp @@ -80,6 +80,7 @@ using aidl::android::hardware::audio::core::StreamDescriptor; using aidl::android::hardware::audio::core::VendorParameter; using aidl::android::hardware::audio::core::sounddose::ISoundDose; using aidl::android::hardware::common::fmq::SynchronizedReadWrite; +using aidl::android::media::audio::common::AudioChannelLayout; using aidl::android::media::audio::common::AudioContentType; using aidl::android::media::audio::common::AudioDevice; using aidl::android::media::audio::common::AudioDeviceAddress; @@ -1514,7 +1515,7 @@ TEST_P(AudioCoreModule, CheckDevicePorts) { const int defaultDeviceFlag = 1 << AudioPortDeviceExt::FLAG_INDEX_DEFAULT_DEVICE; for (const auto& port : ports) { if (port.ext.getTag() != AudioPortExt::Tag::device) continue; - const auto& devicePort = port.ext.get(); + const AudioPortDeviceExt& devicePort = port.ext.get(); EXPECT_NE(AudioDeviceType::NONE, devicePort.device.type.type); EXPECT_NE(AudioDeviceType::IN_DEFAULT, devicePort.device.type.type); EXPECT_NE(AudioDeviceType::OUT_DEFAULT, devicePort.device.type.type); @@ -1549,6 +1550,15 @@ TEST_P(AudioCoreModule, CheckDevicePorts) { FAIL() << "Invalid AudioIoFlags Tag: " << toString(port.flags.getTag()); } } + // Speaker layout can be null or layoutMask variant. + if (devicePort.speakerLayout.has_value()) { + // Should only be set for output ports. + EXPECT_EQ(AudioIoFlags::Tag::output, port.flags.getTag()); + const auto speakerLayoutTag = devicePort.speakerLayout.value().getTag(); + EXPECT_EQ(AudioChannelLayout::Tag::layoutMask, speakerLayoutTag) + << "If set, speaker layout must be layoutMask. Received: " + << toString(speakerLayoutTag); + } } }