diff options
author | jiabin <jiabin@google.com> | 2019-11-22 14:13:23 -0800 |
---|---|---|
committer | jiabin <jiabin@google.com> | 2019-12-04 17:51:05 -0800 |
commit | f17047d8927aa24a27639d909c6f2a4e6f64fadd (patch) | |
tree | cf2b65f48527150b4c191643c293803620dc1a8e /audio/core/all-versions/default/Conversions.cpp | |
parent | e7044daa5b021aac5d78fbc541a0f65e0d4aa59a (diff) |
Refactor for audio device type in conversion.
As audio device type can not be used as bit mask any more, refactoring
audio device type usages in conversion from/to HAL. Use a set of audio
device types instead of bit mask.
Bug: 135621476
Test: atest VtsHalAudioV5_0TargetTest
Change-Id: I1a0f574744f855bb1684cd28613571399781abbc
Merged-In: I1a0f574744f855bb1684cd28613571399781abbc
Diffstat (limited to 'audio/core/all-versions/default/Conversions.cpp')
-rw-r--r-- | audio/core/all-versions/default/Conversions.cpp | 41 |
1 files changed, 17 insertions, 24 deletions
diff --git a/audio/core/all-versions/default/Conversions.cpp b/audio/core/all-versions/default/Conversions.cpp index 11872c0e00..eddff556e7 100644 --- a/audio/core/all-versions/default/Conversions.cpp +++ b/audio/core/all-versions/default/Conversions.cpp @@ -19,6 +19,7 @@ #include <stdio.h> #include <log/log.h> +#include <media/AudioContainers.h> namespace android { namespace hardware { @@ -31,26 +32,22 @@ std::string deviceAddressToHal(const DeviceAddress& address) { char halAddress[AUDIO_DEVICE_MAX_ADDRESS_LEN]; memset(halAddress, 0, sizeof(halAddress)); uint32_t halDevice = static_cast<uint32_t>(address.device); - const bool isInput = (halDevice & AUDIO_DEVICE_BIT_IN) != 0; - if (isInput) halDevice &= ~AUDIO_DEVICE_BIT_IN; - if ((!isInput && (halDevice & AUDIO_DEVICE_OUT_ALL_A2DP) != 0) || - (isInput && (halDevice & AUDIO_DEVICE_IN_BLUETOOTH_A2DP) != 0)) { + if (getAudioDeviceOutAllA2dpSet().count(halDevice) > 0 || + halDevice == AUDIO_DEVICE_IN_BLUETOOTH_A2DP) { snprintf(halAddress, sizeof(halAddress), "%02X:%02X:%02X:%02X:%02X:%02X", address.address.mac[0], address.address.mac[1], address.address.mac[2], address.address.mac[3], address.address.mac[4], address.address.mac[5]); - } else if ((!isInput && (halDevice & AUDIO_DEVICE_OUT_IP) != 0) || - (isInput && (halDevice & AUDIO_DEVICE_IN_IP) != 0)) { + } else if (halDevice == AUDIO_DEVICE_OUT_IP || halDevice == AUDIO_DEVICE_IN_IP) { snprintf(halAddress, sizeof(halAddress), "%d.%d.%d.%d", address.address.ipv4[0], address.address.ipv4[1], address.address.ipv4[2], address.address.ipv4[3]); - } else if ((!isInput && (halDevice & AUDIO_DEVICE_OUT_ALL_USB) != 0) || - (isInput && (halDevice & AUDIO_DEVICE_IN_ALL_USB) != 0)) { + } else if (getAudioDeviceOutAllUsbSet().count(halDevice) > 0 || + getAudioDeviceInAllUsbSet().count(halDevice) > 0) { snprintf(halAddress, sizeof(halAddress), "card=%d;device=%d", address.address.alsa.card, address.address.alsa.device); - } else if ((!isInput && (halDevice & AUDIO_DEVICE_OUT_BUS) != 0) || - (isInput && (halDevice & AUDIO_DEVICE_IN_BUS) != 0)) { + } else if (halDevice == AUDIO_DEVICE_OUT_BUS || halDevice == AUDIO_DEVICE_IN_BUS) { snprintf(halAddress, sizeof(halAddress), "%s", address.busAddress.c_str()); - } else if ((!isInput && (halDevice & AUDIO_DEVICE_OUT_REMOTE_SUBMIX)) != 0 || - (isInput && (halDevice & AUDIO_DEVICE_IN_REMOTE_SUBMIX) != 0)) { + } else if (halDevice == AUDIO_DEVICE_OUT_REMOTE_SUBMIX || + halDevice == AUDIO_DEVICE_IN_REMOTE_SUBMIX) { snprintf(halAddress, sizeof(halAddress), "%s", address.rSubmixAddress.c_str()); } return halAddress; @@ -67,32 +64,28 @@ status_t deviceAddressFromHal(audio_devices_t device, const char* halAddress, return OK; } - const bool isInput = (device & AUDIO_DEVICE_BIT_IN) != 0; - if (isInput) device &= ~AUDIO_DEVICE_BIT_IN; - if ((!isInput && (device & AUDIO_DEVICE_OUT_ALL_A2DP) != 0) || - (isInput && (device & AUDIO_DEVICE_IN_BLUETOOTH_A2DP) != 0)) { + if (getAudioDeviceOutAllA2dpSet().count(device) > 0 || + device == AUDIO_DEVICE_IN_BLUETOOTH_A2DP) { int status = sscanf(halAddress, "%hhX:%hhX:%hhX:%hhX:%hhX:%hhX", &address->address.mac[0], &address->address.mac[1], &address->address.mac[2], &address->address.mac[3], &address->address.mac[4], &address->address.mac[5]); return status == 6 ? OK : BAD_VALUE; - } else if ((!isInput && (device & AUDIO_DEVICE_OUT_IP) != 0) || - (isInput && (device & AUDIO_DEVICE_IN_IP) != 0)) { + } else if (device == AUDIO_DEVICE_OUT_IP || device == AUDIO_DEVICE_IN_IP) { int status = sscanf(halAddress, "%hhu.%hhu.%hhu.%hhu", &address->address.ipv4[0], &address->address.ipv4[1], &address->address.ipv4[2], &address->address.ipv4[3]); return status == 4 ? OK : BAD_VALUE; - } else if ((!isInput && (device & AUDIO_DEVICE_OUT_ALL_USB)) != 0 || - (isInput && (device & AUDIO_DEVICE_IN_ALL_USB)) != 0) { + } else if (getAudioDeviceOutAllUsbSet().count(device) > 0 || + getAudioDeviceInAllUsbSet().count(device) > 0) { int status = sscanf(halAddress, "card=%d;device=%d", &address->address.alsa.card, &address->address.alsa.device); return status == 2 ? OK : BAD_VALUE; - } else if ((!isInput && (device & AUDIO_DEVICE_OUT_BUS) != 0) || - (isInput && (device & AUDIO_DEVICE_IN_BUS) != 0)) { + } else if (device == AUDIO_DEVICE_OUT_BUS || device == AUDIO_DEVICE_IN_BUS) { address->busAddress = halAddress; return OK; - } else if ((!isInput && (device & AUDIO_DEVICE_OUT_REMOTE_SUBMIX)) != 0 || - (isInput && (device & AUDIO_DEVICE_IN_REMOTE_SUBMIX) != 0)) { + } else if (device == AUDIO_DEVICE_OUT_REMOTE_SUBMIX || + device == AUDIO_DEVICE_IN_REMOTE_SUBMIX) { address->rSubmixAddress = halAddress; return OK; } |