From 724b24f895ca8cce6cd6ce07bbea725e8eb6c79f Mon Sep 17 00:00:00 2001 From: Mikhail Naganov Date: Thu, 6 Jul 2023 09:58:14 -0700 Subject: [PATCH] audio: Fix default surround sound config Ensure that all formats returned by AudioPolicyConfigXmlConverter::getDefaultSurroundSoundConfig can be converted into legacy values. Bug: 290116634 Test: atest audio_policy_config_xml_converter_tests Change-Id: I3a46ea5ee4805f719c8977064c9d8d681a75cff2 --- audio/aidl/TEST_MAPPING | 6 +++ audio/aidl/default/Android.bp | 44 ++++++++++++++++ .../default/AudioPolicyConfigXmlConverter.cpp | 2 +- .../core-impl/AudioPolicyConfigXmlConverter.h | 3 +- .../AudioPolicyConfigXmlConverterTest.cpp | 50 +++++++++++++++++++ 5 files changed, 103 insertions(+), 2 deletions(-) create mode 100644 audio/aidl/default/tests/AudioPolicyConfigXmlConverterTest.cpp diff --git a/audio/aidl/TEST_MAPPING b/audio/aidl/TEST_MAPPING index 3e06595fe1..12bce0b47c 100644 --- a/audio/aidl/TEST_MAPPING +++ b/audio/aidl/TEST_MAPPING @@ -3,6 +3,12 @@ { "name": "VtsHalAudioCoreTargetTest" }, + { + "name": "VtsHalAudioCoreConfigTargetTest" + }, + { + "name": "audio_policy_config_xml_converter_tests" + }, { "name": "VtsHalAudioEffectFactoryTargetTest" }, diff --git a/audio/aidl/default/Android.bp b/audio/aidl/default/Android.bp index e9294cf930..78b59d4efe 100644 --- a/audio/aidl/default/Android.bp +++ b/audio/aidl/default/Android.bp @@ -144,6 +144,50 @@ cc_binary { ], } +cc_test { + name: "audio_policy_config_xml_converter_tests", + vendor_available: true, + defaults: [ + "latest_android_media_audio_common_types_ndk_static", + "latest_android_hardware_audio_core_ndk_static", + ], + shared_libs: [ + "libaudio_aidl_conversion_common_ndk", + "libaudioaidlcommon", + "libaudioutils", + "libbase", + "libbinder_ndk", + "libcutils", + "libmedia_helper", + "libstagefright_foundation", + "libutils", + "libxml2", + ], + header_libs: [ + "libaudio_system_headers", + "libaudioaidl_headers", + "libxsdc-utils", + ], + generated_sources: [ + "audio_policy_configuration_aidl_default", + ], + generated_headers: [ + "audio_policy_configuration_aidl_default", + ], + srcs: [ + "AudioPolicyConfigXmlConverter.cpp", + "tests/AudioPolicyConfigXmlConverterTest.cpp", + ], + cflags: [ + "-Wall", + "-Wextra", + "-Werror", + "-Wthread-safety", + "-DBACKEND_NDK", + ], + test_suites: ["general-tests"], +} + cc_defaults { name: "aidlaudioeffectservice_defaults", defaults: [ diff --git a/audio/aidl/default/AudioPolicyConfigXmlConverter.cpp b/audio/aidl/default/AudioPolicyConfigXmlConverter.cpp index 2848d719c7..7452c8ec7a 100644 --- a/audio/aidl/default/AudioPolicyConfigXmlConverter.cpp +++ b/audio/aidl/default/AudioPolicyConfigXmlConverter.cpp @@ -137,7 +137,7 @@ const SurroundSoundConfig& AudioPolicyConfigXmlConverter::getDefaultSurroundSoun SIMPLE_FORMAT(MEDIA_MIMETYPE_AUDIO_DTS), SIMPLE_FORMAT(MEDIA_MIMETYPE_AUDIO_DTS_HD), SIMPLE_FORMAT(MEDIA_MIMETYPE_AUDIO_DTS_HD_MA), - SIMPLE_FORMAT(MEDIA_MIMETYPE_AUDIO_DTS_UHD), + SIMPLE_FORMAT(MEDIA_MIMETYPE_AUDIO_DTS_UHD_P1), SIMPLE_FORMAT(MEDIA_MIMETYPE_AUDIO_DTS_UHD_P2), SIMPLE_FORMAT(MEDIA_MIMETYPE_AUDIO_DOLBY_TRUEHD), SIMPLE_FORMAT(MEDIA_MIMETYPE_AUDIO_EAC3_JOC), diff --git a/audio/aidl/default/include/core-impl/AudioPolicyConfigXmlConverter.h b/audio/aidl/default/include/core-impl/AudioPolicyConfigXmlConverter.h index 94501a81ba..090d58585f 100644 --- a/audio/aidl/default/include/core-impl/AudioPolicyConfigXmlConverter.h +++ b/audio/aidl/default/include/core-impl/AudioPolicyConfigXmlConverter.h @@ -38,9 +38,10 @@ class AudioPolicyConfigXmlConverter { const ::aidl::android::media::audio::common::AudioHalEngineConfig& getAidlEngineConfig(); const SurroundSoundConfig& getSurroundSoundConfig(); - private: + // Public for testing purposes. static const SurroundSoundConfig& getDefaultSurroundSoundConfig(); + private: const std::optional<::android::audio::policy::configuration::AudioPolicyConfiguration>& getXsdcConfig() const { return mConverter.getXsdcConfig(); diff --git a/audio/aidl/default/tests/AudioPolicyConfigXmlConverterTest.cpp b/audio/aidl/default/tests/AudioPolicyConfigXmlConverterTest.cpp new file mode 100644 index 0000000000..572bc5a77c --- /dev/null +++ b/audio/aidl/default/tests/AudioPolicyConfigXmlConverterTest.cpp @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// #include +// #include +// #include + +#include +#include +#define LOG_TAG "AudioPolicyConfigXmlConverterTest" +#include + +#include +#include + +using aidl::android::hardware::audio::core::internal::AudioPolicyConfigXmlConverter; +using aidl::android::media::audio::common::AudioFormatDescription; + +namespace { + +void ValidateAudioFormatDescription(const AudioFormatDescription& format) { + auto conv = ::aidl::android::aidl2legacy_AudioFormatDescription_audio_format_t(format); + ASSERT_TRUE(conv.ok()) << format.toString(); +} + +} // namespace + +TEST(AudioPolicyConfigXmlConverterTest, DefaultSurroundSoundConfigIsValid) { + auto config = AudioPolicyConfigXmlConverter::getDefaultSurroundSoundConfig(); + for (const auto& family : config.formatFamilies) { + EXPECT_NO_FATAL_FAILURE(ValidateAudioFormatDescription(family.primaryFormat)); + SCOPED_TRACE(family.primaryFormat.toString()); + for (const auto& sub : family.subFormats) { + EXPECT_NO_FATAL_FAILURE(ValidateAudioFormatDescription(sub)); + } + } +}