From 50ead276092f473604b03065cbf39de4c3cd82df Mon Sep 17 00:00:00 2001 From: Mikhail Naganov Date: Wed, 4 May 2022 22:13:12 +0000 Subject: [PATCH] audio VTS: Fix handling of ULTRASOUND sources When opening a stream on an ultrasound input (AUDIO_INPUT_FLAG_ULTRASOUND), the source type AUDIO_SOURCE_ULTRASOUND must be used. Bug: 231275185 Test: atest VtsHalAudioV7_0TargetTest Test: atest VtsHalAudioV7_1TargetTest Change-Id: Ib1fb5b8218eb0c52edf31789fa937c0a8b6c5082 Merged-In: Ib1fb5b8218eb0c52edf31789fa937c0a8b6c5082 (cherry picked from commit 1ce9d5488ab1ebb885d49f9b15eecedf67be5e09) --- .../vts/functional/7.0/AudioPrimaryHidlHalTest.cpp | 2 +- .../vts/functional/AudioPrimaryHidlHalTest.h | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/audio/core/all-versions/vts/functional/7.0/AudioPrimaryHidlHalTest.cpp b/audio/core/all-versions/vts/functional/7.0/AudioPrimaryHidlHalTest.cpp index f25c391ba9..dfc238623c 100644 --- a/audio/core/all-versions/vts/functional/7.0/AudioPrimaryHidlHalTest.cpp +++ b/audio/core/all-versions/vts/functional/7.0/AudioPrimaryHidlHalTest.cpp @@ -715,7 +715,7 @@ class PcmOnlyConfigInputStreamTest : public InputStreamTest { sink.base.channelMask.value(getConfig().base.channelMask); sink.ext.mix({}); sink.ext.mix().ioHandle = helper.getIoHandle(); - sink.ext.mix().useCase.source(toString(xsd::AudioSource::AUDIO_SOURCE_MIC)); + sink.ext.mix().useCase.source(initMetadata.tracks[0].source); EXPECT_OK(getDevice()->createAudioPatch(hidl_vec{source}, hidl_vec{sink}, returnIn(res, mPatchHandle))); diff --git a/audio/core/all-versions/vts/functional/AudioPrimaryHidlHalTest.h b/audio/core/all-versions/vts/functional/AudioPrimaryHidlHalTest.h index 435c62dae9..61d447dbd4 100644 --- a/audio/core/all-versions/vts/functional/AudioPrimaryHidlHalTest.h +++ b/audio/core/all-versions/vts/functional/AudioPrimaryHidlHalTest.h @@ -1239,23 +1239,30 @@ class InputStreamTest : public OpenStreamTest<::android::hardware::audio::CORE_TYPES_CPP_VERSION::IStreamIn> { void SetUp() override { ASSERT_NO_FATAL_FAILURE(OpenStreamTest::SetUp()); // setup base + auto flags = getInputFlags(); #if MAJOR_VERSION <= 6 address.device = AudioDevice::IN_DEFAULT; #elif MAJOR_VERSION >= 7 auto maybeSourceAddress = getCachedPolicyConfig().getSourceDeviceForMixPort( getDeviceName(), getMixPortName()); + auto& metadata = initMetadata.tracks[0]; if (maybeSourceAddress.has_value() && !xsd::isTelephonyDevice(maybeSourceAddress.value().deviceType)) { address = maybeSourceAddress.value(); - auto& metadata = initMetadata.tracks[0]; metadata.source = toString(xsd::AudioSource::AUDIO_SOURCE_UNPROCESSED); metadata.channelMask = getConfig().base.channelMask; } else { address.deviceType = toString(xsd::AudioDevice::AUDIO_DEVICE_IN_DEFAULT); } -#endif +#if MAJOR_VERSION == 7 && MINOR_VERSION >= 1 + auto flagsIt = std::find(flags.begin(), flags.end(), + toString(xsd::AudioInOutFlag::AUDIO_INPUT_FLAG_ULTRASOUND)); + if (flagsIt != flags.end()) { + metadata.source = toString(xsd::AudioSource::AUDIO_SOURCE_ULTRASOUND); + } +#endif // 7.1 +#endif // MAJOR_VERSION >= 7 const AudioConfig& config = getConfig(); - auto flags = getInputFlags(); testOpen( [&](AudioIoHandle handle, AudioConfig config, auto cb) { return getDevice()->openInputStream(handle, address, config, flags,