From 5ec48c2d4d7a8ccdea489ad4b34a7cf75480ffcc Mon Sep 17 00:00:00 2001 From: Mikhail Naganov Date: Fri, 15 Jan 2021 19:05:04 +0000 Subject: audio: Create libraries for data types in core and effect Add 'CoreUtils' library similar to 'HidlUtils' for the types specific to the core HAL. Add 'EffectUtils' library similar to 'HidlUtils' for the types specific to the effects HAL. Move into them and de-duplicate code previously scattered across the default HAL implementation and libaudiohal. Add unit tests. Removed 'AUDIO_{INPUT|OUTPUT}_FLAG_NONE' from the list of values in the XSD file to avoid additional complexity due to equivalence of this value to an empty list of flags. Bug: 142480271 Test: m android.hardware.audio@X.0-impl Test: m android.hardware.audio.effect@X.0-impl Test: atest android.hardware.audio@7.0-util_tests Test: atest android.hardware.audio.common@7.0-util_tests Test: atest android.hardware.audio.effect@7.0-util_tests Change-Id: I71a95cbe07fcc162dc6d74ff9665747a17ce5a80 --- audio/core/all-versions/default/Device.cpp | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) (limited to 'audio/core/all-versions/default/Device.cpp') diff --git a/audio/core/all-versions/default/Device.cpp b/audio/core/all-versions/default/Device.cpp index 7caed44bc9..70a1a4d1c1 100644 --- a/audio/core/all-versions/default/Device.cpp +++ b/audio/core/all-versions/default/Device.cpp @@ -17,9 +17,7 @@ #define LOG_TAG "DeviceHAL" #include "core/default/Device.h" -#include #include "common/all-versions/default/EffectMap.h" -#include "core/default/Conversions.h" #include "core/default/StreamIn.h" #include "core/default/StreamOut.h" #include "core/default/Util.h" @@ -33,6 +31,8 @@ #include +#include + namespace android { namespace hardware { namespace audio { @@ -160,11 +160,11 @@ std::tuple> Device::openOutputStreamImpl(int32_t ioHandle audio_stream_out_t* halStream; audio_devices_t halDevice; char halDeviceAddress[AUDIO_DEVICE_MAX_ADDRESS_LEN]; - if (deviceAddressToHal(device, &halDevice, halDeviceAddress) != NO_ERROR) { + if (CoreUtils::deviceAddressToHal(device, &halDevice, halDeviceAddress) != NO_ERROR) { return {Result::INVALID_ARGUMENTS, nullptr}; } audio_output_flags_t halFlags; - if (!audioOutputFlagsToHal(flags, &halFlags)) { + if (CoreUtils::audioOutputFlagsToHal(flags, &halFlags) != NO_ERROR) { return {Result::INVALID_ARGUMENTS, nullptr}; } ALOGV("open_output_stream handle: %d devices: %x flags: %#x " @@ -195,12 +195,12 @@ std::tuple> Device::openInputStreamImpl( audio_stream_in_t* halStream; audio_devices_t halDevice; char halDeviceAddress[AUDIO_DEVICE_MAX_ADDRESS_LEN]; - if (deviceAddressToHal(device, &halDevice, halDeviceAddress) != NO_ERROR) { + if (CoreUtils::deviceAddressToHal(device, &halDevice, halDeviceAddress) != NO_ERROR) { return {Result::INVALID_ARGUMENTS, nullptr}; } audio_input_flags_t halFlags; audio_source_t halSource; - if (!audioInputFlagsToHal(flags, &halFlags) || + if (CoreUtils::audioInputFlagsToHal(flags, &halFlags) != NO_ERROR || HidlUtils::audioSourceToHal(source, &halSource) != NO_ERROR) { return {Result::INVALID_ARGUMENTS, nullptr}; } @@ -254,9 +254,12 @@ Return Device::openOutputStream(int32_t ioHandle, const DeviceAddress& dev const SourceMetadata& sourceMetadata, openOutputStream_cb _hidl_cb) { #if MAJOR_VERSION <= 6 - if (status_t status = sourceMetadataToHal(sourceMetadata, nullptr); status != NO_ERROR) { + if (status_t status = CoreUtils::sourceMetadataToHal(sourceMetadata, nullptr); + status != NO_ERROR) { #else - if (status_t status = sourceMetadataToHalV7(sourceMetadata, nullptr); status != NO_ERROR) { + if (status_t status = CoreUtils::sourceMetadataToHalV7(sourceMetadata, + false /*ignoreNonVendorTags*/, nullptr); + status != NO_ERROR) { #endif _hidl_cb(analyzeStatus("sourceMetadataToHal", status), nullptr, AudioConfig{}); return Void(); @@ -288,9 +291,11 @@ Return Device::openInputStream(int32_t ioHandle, const DeviceAddress& devi return Void(); } #if MAJOR_VERSION <= 6 - if (status_t status = sinkMetadataToHal(sinkMetadata, nullptr); status != NO_ERROR) { + if (status_t status = CoreUtils::sinkMetadataToHal(sinkMetadata, nullptr); status != NO_ERROR) { #else - if (status_t status = sinkMetadataToHalV7(sinkMetadata, nullptr); status != NO_ERROR) { + if (status_t status = CoreUtils::sinkMetadataToHalV7(sinkMetadata, + false /*ignoreNonVendorTags*/, nullptr); + status != NO_ERROR) { #endif _hidl_cb(analyzeStatus("sinkMetadataToHal", status), nullptr, AudioConfig{}); return Void(); @@ -444,7 +449,7 @@ Return Device::getMicrophones(getMicrophones_cb _hidl_cb) { mDevice->get_microphones(mDevice, &mic_array[0], &actual_mics) == 0) { microphones.resize(actual_mics); for (size_t i = 0; i < actual_mics; ++i) { - halToMicrophoneCharacteristics(µphones[i], mic_array[i]); + (void)CoreUtils::microphoneInfoFromHal(mic_array[i], µphones[i]); } retval = Result::OK; } -- cgit v1.2.3