policy: Add support for multiple instances of offload playback
Add support for multiple offload playback instances
Change-Id: Icab3c7d6e89121a7aa23744729a634d8e402fabf
diff --git a/policy_hal/AudioPolicyManager.cpp b/policy_hal/AudioPolicyManager.cpp
index 03f6c41..dfa77f2 100644
--- a/policy_hal/AudioPolicyManager.cpp
+++ b/policy_hal/AudioPolicyManager.cpp
@@ -1324,6 +1324,18 @@
if (profile != NULL) {
AudioOutputDescriptor *outputDesc = NULL;
+#ifdef MULTIPLE_OFFLOAD_ENABLED
+ bool multiOffloadEnabled = false;
+ char value[PROPERTY_VALUE_MAX] = {0};
+ property_get("audio.offload.multiple.enabled", value, NULL);
+ if (atoi(value) || !strncmp("true", value, 4))
+ multiOffloadEnabled = true;
+ // if multiple concurrent offload decode is supported
+ // do no check for reuse and also don't close previous output if its offload
+ // previous output will be closed during track destruction
+ if (multiOffloadEnabled)
+ goto get_output__new_output_desc;
+#endif
for (size_t i = 0; i < mOutputs.size(); i++) {
AudioOutputDescriptor *desc = mOutputs.valueAt(i);
if (!desc->isDuplicated() && (profile == desc->mProfile)) {
@@ -1342,6 +1354,7 @@
if (outputDesc != NULL) {
closeOutput(outputDesc->mId);
}
+get_output__new_output_desc:
outputDesc = new AudioOutputDescriptor(profile);
outputDesc->mDevice = device;
outputDesc->mSamplingRate = samplingRate;