audio policy: fix legacy Ad2P with advanced codecs
The changes for hybrid A2DP broke advanced codec support for devices
running a HAL V4.0 and no A2DP offload.
Fix: consider that if no encoded format is explicitely listed in the
device descriptor in audio policy configuration file, then no rule on
encoded format should be enforced.
Bug: 123399421
Test: connect Sony MDR-1 headphones and play music.
Change-Id: Idd13cf0e0cdeb71554b23d178e61cc1d82abea60
diff --git a/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp b/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
index 1bc4ec8..dc5b238 100644
--- a/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
@@ -51,12 +51,6 @@
mEncodedFormats.add(AUDIO_FORMAT_AC3);
mEncodedFormats.add(AUDIO_FORMAT_IEC61937);
}
- // For backward compatibility always indicate support for SBC and AAC if no
- // supported format is listed in the configuration file
- if ((type & AUDIO_DEVICE_OUT_ALL_A2DP) != 0 && mEncodedFormats.isEmpty()) {
- mEncodedFormats.add(AUDIO_FORMAT_SBC);
- mEncodedFormats.add(AUDIO_FORMAT_AAC);
- }
}
audio_port_handle_t DeviceDescriptor::getId() const
@@ -102,11 +96,19 @@
if (!device_has_encoding_capability(type())) {
return true;
}
+ if (mEncodedFormats.isEmpty()) {
+ return true;
+ }
+
return (mCurrentEncodedFormat != AUDIO_FORMAT_DEFAULT);
}
bool DeviceDescriptor::supportsFormat(audio_format_t format)
{
+ if (mEncodedFormats.isEmpty()) {
+ return true;
+ }
+
for (const auto& devFormat : mEncodedFormats) {
if (devFormat == format) {
return true;