Parse audio config codec capability for LE devices
1. Rename function getHwOffloadEncodingFormatsSupportedForA2DP to
getHwOffloadFormatsSupportedForBluetoothMedia
2. Add one parameter for function
getHwOffloadFormatsSupportedForBluetoothMedia to get the
supported codec for A2DP encode/decode or LE audio encode/decode
3. Add function getAudioDeviceOutAllBleSet() to get the audio device
set for BLE
Tag: #feature
Bug: 203535499
Bug: 150670922
Test: atest BluetoothInstrumentationTests
Change-Id: I9de90c7f61db1f5de848ac66cfc8bd99d27d6cfb
Merged-In: I9de90c7f61db1f5de848ac66cfc8bd99d27d6cfb
diff --git a/media/libaudioclient/AudioSystem.cpp b/media/libaudioclient/AudioSystem.cpp
index f1eeaa3..4bfafe4 100644
--- a/media/libaudioclient/AudioSystem.cpp
+++ b/media/libaudioclient/AudioSystem.cpp
@@ -1960,8 +1960,8 @@
return result.value_or(false);
}
-status_t AudioSystem::getHwOffloadEncodingFormatsSupportedForA2DP(
- std::vector<audio_format_t>* formats) {
+status_t AudioSystem::getHwOffloadFormatsSupportedForBluetoothMedia(
+ audio_devices_t device, std::vector<audio_format_t>* formats) {
if (formats == nullptr) {
return BAD_VALUE;
}
@@ -1971,8 +1971,10 @@
if (aps == 0) return PERMISSION_DENIED;
std::vector<media::audio::common::AudioFormat> formatsAidl;
+ int32_t deviceAidl = VALUE_OR_RETURN_STATUS(legacy2aidl_audio_devices_t_int32_t(device));
+
RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(
- aps->getHwOffloadEncodingFormatsSupportedForA2DP(&formatsAidl)));
+ aps->getHwOffloadFormatsSupportedForBluetoothMedia(deviceAidl, &formatsAidl)));
*formats = VALUE_OR_RETURN_STATUS(
convertContainer<std::vector<audio_format_t>>(formatsAidl,
aidl2legacy_AudioFormat_audio_format_t));
diff --git a/media/libaudioclient/aidl/android/media/IAudioPolicyService.aidl b/media/libaudioclient/aidl/android/media/IAudioPolicyService.aidl
index 4c3955a..fc37575 100644
--- a/media/libaudioclient/aidl/android/media/IAudioPolicyService.aidl
+++ b/media/libaudioclient/aidl/android/media/IAudioPolicyService.aidl
@@ -293,7 +293,7 @@
void getReportedSurroundFormats(inout Int count,
out AudioFormat[] formats);
- AudioFormat[] getHwOffloadEncodingFormatsSupportedForA2DP();
+ AudioFormat[] getHwOffloadFormatsSupportedForBluetoothMedia(int /* audio_devices_t */ device);
void setSurroundFormatEnabled(AudioFormat audioFormat, boolean enabled);
diff --git a/media/libaudioclient/include/media/AudioSystem.h b/media/libaudioclient/include/media/AudioSystem.h
index 8ba23ad..a2cfb2b 100644
--- a/media/libaudioclient/include/media/AudioSystem.h
+++ b/media/libaudioclient/include/media/AudioSystem.h
@@ -415,8 +415,8 @@
static status_t getMicrophones(std::vector<media::MicrophoneInfo> *microphones);
- static status_t getHwOffloadEncodingFormatsSupportedForA2DP(
- std::vector<audio_format_t> *formats);
+ static status_t getHwOffloadFormatsSupportedForBluetoothMedia(
+ audio_devices_t device, std::vector<audio_format_t> *formats);
// numSurroundFormats holds the maximum number of formats and bool value allowed in the array.
// When numSurroundFormats is 0, surroundFormats and surroundFormatsEnabled will not be
diff --git a/media/libaudiofoundation/AudioContainers.cpp b/media/libaudiofoundation/AudioContainers.cpp
index 31257d5..3df9378 100644
--- a/media/libaudiofoundation/AudioContainers.cpp
+++ b/media/libaudiofoundation/AudioContainers.cpp
@@ -63,6 +63,13 @@
return audioDeviceInAllUsbSet;
}
+const DeviceTypeSet& getAudioDeviceOutAllBleSet() {
+ static const DeviceTypeSet audioDeviceOutAllBleSet = DeviceTypeSet(
+ std::begin(AUDIO_DEVICE_OUT_ALL_BLE_ARRAY),
+ std::end(AUDIO_DEVICE_OUT_ALL_BLE_ARRAY));
+ return audioDeviceOutAllBleSet;
+}
+
bool deviceTypesToString(const DeviceTypeSet &deviceTypes, std::string &str) {
if (deviceTypes.empty()) {
str = "Empty device types";
diff --git a/media/libaudiofoundation/include/media/AudioContainers.h b/media/libaudiofoundation/include/media/AudioContainers.h
index 204b365..60b42fb 100644
--- a/media/libaudiofoundation/include/media/AudioContainers.h
+++ b/media/libaudiofoundation/include/media/AudioContainers.h
@@ -40,6 +40,7 @@
const DeviceTypeSet& getAudioDeviceOutAllUsbSet();
const DeviceTypeSet& getAudioDeviceInAllSet();
const DeviceTypeSet& getAudioDeviceInAllUsbSet();
+const DeviceTypeSet& getAudioDeviceOutAllBleSet();
template<typename T>
static std::vector<T> Intersection(const std::set<T>& a, const std::set<T>& b) {