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); + } } }