From 118c2610107f308c539a3f83d5e969aa8834b572 Mon Sep 17 00:00:00 2001 From: jiabin Date: Tue, 21 Mar 2023 23:04:57 +0000 Subject: [PATCH] AHAL: fix USB HAL issues with reporting device capabilities. 1. The card and device must be specified before reading device info. 2. Map PcmType::FIXED_Q_8_24 to PCM_FORMAT_S24_LE. Map PcmType::INT_24_BIT to PCM_FORMAT_S24_3LE. Bug: 266216550 Test: atest VtsHalAudioCoreTargetTest Change-Id: Ib48538d01bc980524e2c4c5b221f6d7e479beba6 --- audio/aidl/default/usb/ModuleUsb.cpp | 4 ++++ audio/aidl/default/usb/UsbAlsaUtils.cpp | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/audio/aidl/default/usb/ModuleUsb.cpp b/audio/aidl/default/usb/ModuleUsb.cpp index e8034209d8..d1804cbf5c 100644 --- a/audio/aidl/default/usb/ModuleUsb.cpp +++ b/audio/aidl/default/usb/ModuleUsb.cpp @@ -139,7 +139,11 @@ ndk::ScopedAStatus ModuleUsb::populateConnectedDevicePort(AudioPort* audioPort) const bool isInput = isUsbInputDeviceType(devicePort.device.type.type); alsa_device_profile profile; profile_init(&profile, isInput ? PCM_IN : PCM_OUT); + profile.card = alsaAddress[0]; + profile.device = alsaAddress[1]; if (!profile_read_device_info(&profile)) { + LOG(ERROR) << __func__ << ": failed to read device info, card=" << profile.card + << ", device=" << profile.device; return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_STATE); } diff --git a/audio/aidl/default/usb/UsbAlsaUtils.cpp b/audio/aidl/default/usb/UsbAlsaUtils.cpp index 3c79e1dfc0..5c933ace5b 100644 --- a/audio/aidl/default/usb/UsbAlsaUtils.cpp +++ b/audio/aidl/default/usb/UsbAlsaUtils.cpp @@ -114,8 +114,8 @@ const AudioFormatDescToPcmFormatMap& getAudioFormatDescriptorToPcmFormatMap() { static const AudioFormatDescToPcmFormatMap formatDescToPcmFormatMap = { {make_AudioFormatDescription(PcmType::UINT_8_BIT), PCM_FORMAT_S8}, {make_AudioFormatDescription(PcmType::INT_16_BIT), PCM_FORMAT_S16_LE}, - {make_AudioFormatDescription(PcmType::INT_24_BIT), PCM_FORMAT_S24_LE}, - {make_AudioFormatDescription(PcmType::FIXED_Q_8_24), PCM_FORMAT_S24_3LE}, + {make_AudioFormatDescription(PcmType::FIXED_Q_8_24), PCM_FORMAT_S24_LE}, + {make_AudioFormatDescription(PcmType::INT_24_BIT), PCM_FORMAT_S24_3LE}, {make_AudioFormatDescription(PcmType::INT_32_BIT), PCM_FORMAT_S32_LE}, {make_AudioFormatDescription(PcmType::FLOAT_32_BIT), PCM_FORMAT_FLOAT_LE}, }; @@ -178,4 +178,4 @@ pcm_format aidl2legacy_AudioFormatDescription_pcm_format(const AudioFormatDescri return findValueOrDefault(getAudioFormatDescriptorToPcmFormatMap(), aidl, PCM_FORMAT_INVALID); } -} // namespace aidl::android::hardware::audio::core::usb \ No newline at end of file +} // namespace aidl::android::hardware::audio::core::usb