History log of /frameworks/av/services/audiopolicy/AudioPolicyService.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
aa79befb301bc3451a19021b3fc9e9e6a1f231e8 15-Jan-2015 Eric Laurent <elaurent@google.com> fix audio patch leak.

Always wait for status when executing a create audio patch
command in audio policy service command thread.
The returned patch handle must be passed back to audio policy manager
so that the patch can be modified later.
Failing to do so causes a leak of patch descriptors in audio flinger.

Bug: 19032387.
Change-Id: I5462d1437fac244d9c5e38f2c7b8e1a4c01d2b75
e83b55dc29ca16092ba02f36f55fa6e0e37fd78c 14-Nov-2014 Eric Laurent <elaurent@google.com> audio policy: new getOutputForAttr() prototype.

Update getOutputForAttr() prototype and group all logic
dealing with audio attributes to stream type conversion in
audio policy manager.

- specifies the audio session (for future use)
- returns a status code
- receives either stream type (for legacy) or audio attributes
- returns an updated streamtype

Remove logic dealing with legacy stream types to attributes conversion
from AudioTrack.

Use correct type for audio sessions in other APIs (startOutput() ...).

releaseOutput() specifies the audio session (for future use).

Bug: 18067208.

Change-Id: I1bfbe9626c04c7955d77f8a70aecfad2cb204817
0ebd5f95b68a3a5c9e5509f21938c9e51e74d71b 20-Nov-2014 Eric Laurent <elaurent@google.com> AudioSystem: fix cross deadlock

Do not hold gLockAPS when calling
AudioPolicyService::registerClient() in get_audio_policy_service().
registerClient() will need to acquire the AudioPolicyService mutex and
if at the same time a method called from AudioPolicyService
(with mutex held) calls back into AudioSystem and get_audio_policy_service()
a cross deadlock occurs.

Same preventive fix for get_audio_flinger().

Use a separate mutex for notification client list in AudioPolicyService.
This prevents deadlocking if registerClient() is called as a consequence of
AudioFlinger calling back into AudioPolicyManager while executing a method
with AudioPolicyService locked

Bug: 18403952.
Bug: 18450065.
Change-Id: Ia832e41aede8bc6c843fc615508fbdd74e0863b5
a2d4a6dac432f0c4f543d79b9a63c55ae91f81d6 13-Oct-2014 Haynes Mathew George <hgeorge@codeaurora.org> audio policy: Fix for voice call audio loss

Audio Policy service filters out one of the create patch
commands when it finds two pending commands with the same
patch handles. Due to this routing command is not received
to audio HAL and the voice call set up fails.
Fix this by filtering create patch commands only when
they are issued on the same output.

authored-by: Karthik Reddy Katta <a_katta@codeaurora.org>

Bug: 17787282
Change-Id: If36f0ab71e9b72d6a8eb61d31f762bc5e1683b89
f5ada6edcc83bb1b313abcd4c4fbdc4f7724f04d 10-Oct-2014 Eric Laurent <elaurent@google.com> audio policy: move intializations to onFirstRef()

Bug: 17896324.

Change-Id: I3bb74f5397142ac354bd815eb362e5ddacdcb463
8b1e80bf1e9f214feea219cfe981ba533b806003 07-Oct-2014 Eric Laurent <elaurent@google.com> audio policy: fix lockup during mediaserver restart

When pre or post processing effects are applied by audio policy service
automatically there is a potential lockup if the first call into
AudioPolicyService is made while creating one of those effects.
This is because effects are created with AudioPolicyService mutex held and
effect creation calls into methods (e.g registerClient()) which also acquire
the mutex.

The fix consists in adding a new mutex to AudioPolicyEffects class and not
hold the AudioPolicyService mutex when calling methods in of class.

Bug: 17830596.
Change-Id: Ie61c3671d3147f46e99ba208f39c1a3bf180779f
bb6c9a05840d924b502ce0f1868fca4881ada1ed 25-Sep-2014 Eric Laurent <elaurent@google.com> audio: fix stream type for accessibility usage

Make sure that accessibility prompts are heard when
a ringtone is active by forcing stream type

Bug: 17558149.
Change-Id: Ia3bead8052fca5cbf282c267f7b9b06014fef628
e45b48aba115f4daf4a4aad31b6a95df9b79f463 05-Sep-2014 Eric Laurent <elaurent@google.com> audio policy service: filter out delayed audio patch commands if needed.

As for set parameters commands, create or release audio patch commands
modifying the same patch handle should be filtered by the audio policy service
command thread so that an immediate command is not overridden by
a pending delayed command.

Bug: 17379728.

Change-Id: I6aa4652b4bfec59eebd3c3cb7d1d9ac1bc1d6e49
05f2fdc1070c1c07af9e21760d4d2e06bebde55a 25-Jul-2014 Ricardo Garcia <rago@google.com> -Making sure mAudioCommands list is empty before going to sleep.
-Wake_lock release before sleeping or quitting threadLoop().

Change-Id: Icab53d7984a3ba3eaf13e514667b4d60f40cbcd6
a7e04803ffa0d8d4cc51a122f68bf5038422aabb 21-Jul-2014 Glenn Kasten <gkasten@google.com> Remove execute bit

Change-Id: I1cf0c0d9375779b3074af12f4cbf9c1ec07bf4ff
1e693b55d888b9d3e0a2ce770ae2b72b59c1a317 10-Jul-2014 Eric Laurent <elaurent@google.com> audio policy: add rules to select audio parameters

Added rules to select most appropriate sampling rate, format and
channel mask from an input or output profile.
Moved mFlags from IOProfile to its base class AudioPort.
Removed bogus mChannelMask member in DeviceDescriptor class.
Improveed dump of dynamic parameters in AudioPort.

Change-Id: Ic09d320386002a8bafee4a28db00b1001a386678
ba2b43990a7b4f0f2c425cf6cdfc63376a45772c 11-Jun-2014 bryant_liu <bryant_liu@htc.com> frameworks: av: services: audiopolicy: Added AudioPolicyEffects

Manage pre- and postprocessing effects defined in audio_effects.conf

Change-Id: Idea1478e3d434f8ff66907adb3c77663db78d583
eb4b03cb98e38bf76ee6e6debb74e76c30cbc228 11-Jun-2014 Eric Laurent <elaurent@google.com> Merge "audio policy: use factory to create audio policy manager"
f269b8e0e9ab950fc6652b9594b7a3431c81630c 10-Jun-2014 Eric Laurent <elaurent@google.com> audio policy: use factory to create audio policy manager

Use the class factory to create the audio policy mamager
instead of AudioPolicyManager class constructor and
use a pointer to an AudioPolicyInterface.

Change-Id: Ibb5a8eee5d597db67cf13f279c909181cfee9949
59a8923027d2d6a155c0fa434ae65559318da4b6 08-Jun-2014 Eric Laurent <elaurent@google.com> audio policy service: fix potential deadlock in destructor

In the AudioCommandThread loop, release mLock before releasing
the strong reference on the service as AudioPolicyService destructor
calls AudioCommandThread::exit() which acquires mLock.

Also check exiPending in thread loop before processing pending
commands or sleeping.

Bug: 15449050.

Change-Id: I148bf21bd67ef721b5b5ee2c1a6afb185c59daa3
e1715a465a29db625da9d0ea365edf371e39e201 20-May-2014 Eric Laurent <elaurent@google.com> audio policy: add audio port gain control

Implement setAudioPortConfig() API to configure an
audio port.
Currently limited to gain control.

Bug: 14815883.

Change-Id: Ic1b268e5ba5c277e9f5b8fa63c81dd7c0b250024
b52c152d553556b2d227ffc943489de0c60b4b02 20-May-2014 Eric Laurent <elaurent@google.com> audio policy: add routing update client interface

Added IAudioPolicyServiceClient client binder interface
for client process to receive notifications from AudioPolicyService
when audio ports are added/removed or audio patches created/released.

The audio patches owned by a given client are automatically released when
this client binder dies.

Bug: 14815883.

Change-Id: I6013f6aec03b50565cffb1ad2cd1f0f8852032c5
951f455566775e5f01e67c5ee26863d7d19209d7 20-May-2014 Eric Laurent <elaurent@google.com> DO NOT MERGE - audioflinger: first patch panel implementation.

Added a new PatchPanel subclass to AudioFlinger
to handle audio ports and audio patches configuration
and connection.
The first implementation does not add new functionnality.
AudioPolicyManager uses patch panel interface to control
device routing.
- Added PatchPanel class. The first implementation does not
add new functionnality. PatchPanel handles routing commands
for audio HAL after 3.0 or converts to setParameters for audio
HALs before 3.0.
- Added config events to ThreadBase to control synchronized
audio patch connection.
- Use PatchPanel API to control device selection isntead of setParameters.
- New base class AudioPort common to audio device descriptors
and input output stream profiles. This class is RefBase and groups
attributes common to audio ports.
- Use same device selection flow for input as for outputs:
getNewInputDevice -> getDeviceForInptusiource -> setInputDevice

Change-Id: Idaa5a883b19a45816651c58cac697640dc717cd9
0ede8924b98c2967be2795e8d4f9837d8d3f094c 10-May-2014 Eric Laurent <elaurent@google.com> audiopolicy: refactor audio command threads

- Use strong pointers for command data to avoid transfering
ownership of the object to receiver thread.
This avoids waiting for the command acknowlegement to proceed
with next command on server side.
- Use a separate mutex for each command condition.
- Factor in duplicated code to send commands.

Change-Id: Ib0526e7c4fa64a71ad4015f477c6361727c6f40a
657ff61389d7316f798d4abe03efac56fd528d91 07-May-2014 Eric Laurent <elaurent@google.com> audio policy: cleanup AudioPolicyService destructor

No need to clear strong pointers in the destuctor.
Add explicit exit() command to mOutputCommandThread.

Change-Id: I60bb248fe6a20bfd8a55358ef139692b93df0238
7ebe2c64dea42a3fd4de34ccb877d23b7a4e8076 06-May-2014 Eric Laurent <elaurent@google.com> am 71171988: am f655acf1: am 8fb04d47: Merge "Fix memory leak when filtering commands in insertCommand_l()"

* commit '711719885d7563068579abf347c366cf6bc906f5':
Fix memory leak when filtering commands in insertCommand_l()
9ac3c9a7ee931088d09027ffa09414cb0402886f 21-Mar-2014 Eric Laurent <elaurent@google.com> Merge "audio policy: add option to use new policy manager"
c7e05b0fc54f9ad22c6d219bf8cf6f10f8d9ba9c 18-Mar-2014 Glenn Kasten <gkasten@android.com> am 0c282de7: am 77658a06: Merge "AudioPolicyService: malloc/delete pair"

* commit '0c282de73240b1efce64558ab2fa0a8be1f4292b':
AudioPolicyService: malloc/delete pair
dce54a1492c410ad0d93253b341fb33305337505 10-Mar-2014 Eric Laurent <elaurent@google.com> audio policy: add option to use new policy manager

Add build option USE_LEGACY_AUDIO_POLICY to use either new
audio policy manager in local AudioPolicyManager.cpp
or the legacy AudioPolicyManagerBase.cpp via the policy HAL.

New features will be implemented only by the new audio policy manager.
Platform customiization will be by config file or new policy HAL.

AudioPolicyClientImplLegacy.cpp copied from AudioPolicyClientImpl.cpp
AudioPolicyInterfaceImplLegacy.cpp copied from AudioPolicyInterfaceImpl.cpp

New implementations of AudioPolicyInterface and AudioPolicyClient talking directly to

Change-Id: I7a320883a1de13de2c9295343e996addf2f3c154
2d388eccc9dc085337c7a03a68467cbee6b809e1 07-Mar-2014 Eric Laurent <elaurent@google.com> audio policy: split implementation

Split audio policy service implementation to ease
further evolution:
AudioPolicyInterfaceImpl.cpp contains the implementation of
IAudioPolicyService interface
AudioPolicyClientImpl.cpp contains the implementation of the
AudioPolicyManager client interface
AudioPolicyService.cpp contains the rest of the code mostly
command threads implementation and pre processing management.


Change-Id: Ic48ba165532ef66e84a30894d01f750ed6619d02
c7e5040aa8b8e4da86814bf560346c7571e48087 06-Mar-2014 Eric Laurent <elaurent@google.com> move audio policy service to a separate library

Change-Id: Ibc3ef07aa9860b7fd4f9aaff27b0dbe0dcbf1cbf