refactor mutexes for audio effects in audio flinger and audio policy
Remove effect specific mutex (mEffectLock) in AudioPolicyService: Due to concurrent capture (among other reasons), it is necessary that the audio policy manager state preserved by mLock includes audio effects registration and enabling. Moved all audio policy API calls from audio flinger out of locked regions for audio flinger, thread and effects mutexes to avoid cross deadlocks between audioflinger and audio policy manager: - centralized audio policy API calls in EffectModule::updatePolicyState() - the enabled state now reflects the state requested by the controlling handle, not the actual effect processing state: a suspended effect is now considered enabled. A new audio policy manager API moveEffectsToIo() is added to atomically handle moving effects to a new input or output without having to call unregister > register > enable sequence. Also fix assert in setStreamVolume to match volume group refactoring in audio policy manager. Bug: 128419018 Test: CTS tests for audio effects. Test: manual tests with Duo calls, Play Music, Youtube, notifications with and without Bluetooth and wired headset. Change-Id: I8bd3af81026c55b6be283b3a9b41fe4998e060fd
Loading
Please register or sign in to comment