audiopolicy: add support to load custom audiopolicymanager.
This change provides a mechanism to load a custom implementation of
AudioPolicyManager.
If custom library is present load that otherwise fallback to default
AudioPolicyManager.
This custom implementation should reside under system_ext or product
partition and should be compliant to xTS test suites.
- To use this create a library viz. libaudiopolicymanagericustom.so by
extending AudioPolicyManager in system_ext or product partition,
expose createAudioPolicyManager & destroyAudioPolicyManager methods
to return custom AudioPolicyManager instance.
Bug: 120198776
Test: make
Change-Id: I0df7c390fe29f56378d4b90ca5ab559302770419
diff --git a/services/audiopolicy/AudioPolicyInterface.h b/services/audiopolicy/AudioPolicyInterface.h
index 630c423..7c0f2ce 100644
--- a/services/audiopolicy/AudioPolicyInterface.h
+++ b/services/audiopolicy/AudioPolicyInterface.h
@@ -450,9 +450,11 @@
virtual status_t getAudioPort(struct audio_port_v7 *port) = 0;
};
-extern "C" AudioPolicyInterface* createAudioPolicyManager(AudioPolicyClientInterface *clientInterface);
-extern "C" void destroyAudioPolicyManager(AudioPolicyInterface *interface);
-
+ // These are the signatures of createAudioPolicyManager/destroyAudioPolicyManager
+ // methods respectively, expected by AudioPolicyService, needs to be exposed by
+ // libaudiopolicymanagercustom.
+ using CreateAudioPolicyManagerInstance = AudioPolicyInterface* (*)(AudioPolicyClientInterface*);
+ using DestroyAudioPolicyManagerInstance = void (*)(AudioPolicyInterface*);
} // namespace android