audio: add spatializer output flag
Add output flag AUDIO_OUTPUT_FLAG_SPATIALIZER indicating an
output mix port dedicated to spatial audio.
Bug: 210803914
Test: manual spatial audio tests
Change-Id: Iad181e109a9729ddc2f80940b17cb29d9fb2115a
diff --git a/media/libaudioclient/AidlConversion.cpp b/media/libaudioclient/AidlConversion.cpp
index b7be3ff..b798415 100644
--- a/media/libaudioclient/AidlConversion.cpp
+++ b/media/libaudioclient/AidlConversion.cpp
@@ -1504,6 +1504,8 @@
return AUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD;
case AudioOutputFlags::ULTRASOUND:
return AUDIO_OUTPUT_FLAG_ULTRASOUND;
+ case AudioOutputFlags::SPATIALIZER:
+ return AUDIO_OUTPUT_FLAG_SPATIALIZER;
}
return unexpected(BAD_VALUE);
}
@@ -1547,6 +1549,8 @@
return AudioOutputFlags::GAPLESS_OFFLOAD;
case AUDIO_OUTPUT_FLAG_ULTRASOUND:
return AudioOutputFlags::ULTRASOUND;
+ case AUDIO_OUTPUT_FLAG_SPATIALIZER:
+ return AudioOutputFlags::SPATIALIZER;
}
return unexpected(BAD_VALUE);
}
diff --git a/media/libaudiohal/impl/DeviceHalHidl.cpp b/media/libaudiohal/impl/DeviceHalHidl.cpp
index 47acb19..209094c 100644
--- a/media/libaudiohal/impl/DeviceHalHidl.cpp
+++ b/media/libaudiohal/impl/DeviceHalHidl.cpp
@@ -205,6 +205,16 @@
status != OK) {
return status;
}
+
+#if !(MAJOR_VERSION == 7 && MINOR_VERSION == 1)
+ //TODO: b/193496180 use spatializer flag at audio HAL when available
+ if ((flags & AUDIO_OUTPUT_FLAG_SPATIALIZER) != 0) {
+ flags = (audio_output_flags_t)(flags & ~AUDIO_OUTPUT_FLAG_SPATIALIZER);
+ flags = (audio_output_flags_t)
+ (flags | AUDIO_OUTPUT_FLAG_FAST | AUDIO_OUTPUT_FLAG_DEEP_BUFFER);
+ }
+#endif
+
CoreUtils::AudioOutputFlags hidlFlags;
if (status_t status = CoreUtils::audioOutputFlagsFromHal(flags, &hidlFlags); status != OK) {
return status;