summaryrefslogtreecommitdiffstats
path: root/services/audiopolicy
Commit message (Collapse)AuthorAgeFilesLines
* handle in and out audio device connection separatelyEric Laurent2014-05-291-9/+1
| | | | | | | | AudioService now indicates in and out device connection separately in case of combined devices like wired headset or BT SCO headset. Change-Id: I97adf8343d0ce32c279ffc3cce5c84ca7a349e16
* IAudioPolicyService interface extension for patch panelEric Laurent2014-05-273-0/+90
| | | | Change-Id: I0a62e5416edc41c3a0e816275085ab18a23066f1
* audioflinger: first patch panel implementation.Eric Laurent2014-05-276-261/+632
| | | | | | | | | | | | | | | | | | | | | | | | | 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. AudioFlinger: - 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. AudioPolicyManager: - 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
* audio policy: enable use of new AudioPolicyManagerEric Laurent2014-05-221-3/+0
| | | | | | | | | | | | Do not define USE_LEGACY_AUDIO_POLICY by default. By default, all devices will now use the new audio policy implementation in AudioPolicyManager.cpp To continue using the legacy audio policy implemented by AudioPolicyManagerBase in libhardware_legacy a device should define USE_LEGACY_AUDIO_POLICY in its makefile. Change-Id: I7b8cac3cbb24b11105ba6233501c7212f5985727
* Merge "audio policy: split audio policy library"Eric Laurent2014-05-221-4/+33
|\
| * audio policy: split audio policy libraryEric Laurent2014-05-211-4/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Split audio policy library into a service part and a policy part. This will allow OEMs to customize the policy part: - libaudiopolicyservice for the service. - libaudiopolicymanager for the policy. Two build options can be defined in device make file to select the policy library: - USE_LEGACY_AUDIO_POLICY = 1: this will use the legacy policy in hardware/libhardware_legacy implemented by AudioPolicyManagerBase class. This policy is loaded as a harware module and exposes the audio policy HAL defined in include/hardware/audio_policy.h and is in a library called audio_policy.XXX.so (e.g audio_policy.default.so) The legacy HAL will not be updated with new features. If USE_LEGACY_AUDIO_POLICY is not defined, the policy is implemented by a class named AudioPolicyManager exposing an interface defined in AudioPolicyInterface.h. The corresponding library is libaudiopolicymanager.so. New features will be added only to AudioPolicyInterface.h The default implementation is provided here in file AudioPolicyManager.cpp OEMs wanting to cutomize the policy can implement the AudioPolicyManager class and provide the libaudiopolicymanager.so library. In this case the device make file should define: - USE_CUSTOM_AUDIO_POLICY = 1 For now, USE_LEGACY_AUDIO_POLICY = 1 is forced in audio policy service make file. This will be removed when the new audio policy is enabled. Change-Id: I066799dacc9b182b468a43d48ff7798c9109a414
* | audio policy: add new audio devicesEric Laurent2014-05-191-0/+12
|/ | | | | | | Add entries for new audio devices to string to enum table used for audio_policy.conf file parsing. Change-Id: Ica04c34af037d890a343af0b9eeb2ff0e5c86b02
* audiopolicy: refactor audio command threadsEric Laurent2014-05-122-118/+83
| | | | | | | | | | | - 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
* audio policy: fix mute delay when setting output deviceEric Laurent2014-05-081-18/+25
| | | | | | | | | | | | | The duration of the temporary mute applied on each output when switching device must be more than twice the actual delay we wait for the mute to be effective at the output. Otherwise some outputs with short latencies will be unmuted before the device switch is actually executed. This change makes sure that we take the maximum wait time into account when requesting the delayed unmuting of each output. Change-Id: Id92c201b47786082a44b6a5c1c8015273835a42e
* Merge "audio policy: cleanup AudioPolicyService destructor"Eric Laurent2014-05-081-3/+1
|\
| * audio policy: cleanup AudioPolicyService destructorEric Laurent2014-05-071-3/+1
| | | | | | | | | | | | | | No need to clear strong pointers in the destuctor. Add explicit exit() command to mOutputCommandThread. Change-Id: I60bb248fe6a20bfd8a55358ef139692b93df0238
* | audio policy: fix typo in AudioPolicyManager constructorEric Laurent2014-05-071-6/+6
|/ | | | | | | Fix cut/paste error in new AudioPolicyManager constructor causing the same index variable to be reused in nested for loops. Change-Id: Id57ff19bf6dd8974486b07c8252029e377df2747
* audio policy: update from libhardware_legacyEric Laurent2014-05-062-108/+349
| | | | | | | | | | | | | Merge changes made to AudioPolicyManagerBase in libhardware_legacy since it was forked here: fd61179 Update policy handling for USB inputs c7b6e3c audio: allow compiling for 64-bit c26f454 Initial implementation of USB Audio output. a7b1bc9 Audio policy is 32-bit only 26101ad audio policy : add AUDIO_DEVICE_IN_USB_DEVICE to sDeviceNameToEnumTable Change-Id: I22bc883c20603a6598c6ee3ded636e9cc4d9ec03
* am 71171988: am f655acf1: am 8fb04d47: Merge "Fix memory leak when filtering ↵Eric Laurent2014-05-062-10/+27
| | | | | | | commands in insertCommand_l()" * commit '711719885d7563068579abf347c366cf6bc906f5': Fix memory leak when filtering commands in insertCommand_l()
* Fix the buildEric Laurent2014-03-262-5/+5
| | | | Change-Id: I2169a3d26f4e35e5cfa35a1264175aab6ac4db41
* audio policy: remove obsolete AudioPolicyManager class membersEric Laurent2014-03-262-38/+0
| | | | | | | | | | | Remove mHasA2dp, mHasUsb and mHasRemoteSubmix members from AudoPolicyManager. They are not needed any more since we use device descriptors with additional attributes. Also remove obsolete limitation on device address length (MAX_DEVICE_ADDRESS_LEN). Change-Id: Iffe760a521692a4b50be3f6b935af84afb61bb86
* audio policy: use new audio device representationEric Laurent2014-03-262-281/+549
| | | | | | | | | | | | | | | | | | | | Represent audio devices with more attributes than just the type (audio_device_t). This is in preparation for new routing APIs allowing device selection based on more criteria than just the type (address, channel mask...) A new class DeviceDescriptor is created and used by functions needing more information than just the device type. Bit fields for available and supported input or output devices are replaced by vectors of device descriptors. Each available device is allocated a unique ID for future use. Removed obsolete mA2dpDeviceAddress, mScoDeviceAddress and mUsbCardAndDevice fields replaced by address stored in DeviceDescriptor. Policy decisions like getDeviceForStrategy() are still based only on the device type. Change-Id: I5de3b3ffb12ff8dcfb746782ab1e6b15bf040d0c
* Merge "audio policy: add option to use new policy manager"Eric Laurent2014-03-218-218/+997
|\
| * audio policy: add option to use new policy managerEric Laurent2014-03-188-218/+997
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 AudioPolicyManager. Change-Id: I7a320883a1de13de2c9295343e996addf2f3c154
* | am 0c282de7: am 77658a06: Merge "AudioPolicyService: malloc/delete pair"Glenn Kasten2014-03-181-1/+1
|/ | | | | * commit '0c282de73240b1efce64558ab2fa0a8be1f4292b': AudioPolicyService: malloc/delete pair
* audio policy: renamed AudioPolicyManagerBase to AudioPolicyManagerEric Laurent2014-03-112-158/+153
| | | | Change-Id: Ia8b5ae9c3a9cf6ed98f162614ea331efc78e9ff2
* audio policy: remove dependency from AudioSystemLegacyEric Laurent2014-03-113-243/+252
| | | | | | | | Remove all dependencies on AudioSystemLegacy from AudioPolicyManagerBase. Only use types and definitions from audio.h and audio_policy.h. Also move code back into android name space. Change-Id: I0c2582cf854027fb1e599981865a6cbe7b5a9490
* audio policy: import audio policy manager from hardware legacyEric Laurent2014-03-113-0/+4939
| | | | | | | Import AudioPolicyManagerBase from hardware/libhardware_legacy to prepare move from android_audio_legacy name space. Change-Id: I5d6682ccd2bfdeefbf2f6f81a557480a76aaf4fc
* audio policy: split implementationEric Laurent2014-03-114-642/+784
| | | | | | | | | | | | | | | 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. AudioPolicyService.cpp: Change-Id: Ic48ba165532ef66e84a30894d01f750ed6619d02
* move audio policy service to a separate libraryEric Laurent2014-03-113-0/+2078
Change-Id: Ibc3ef07aa9860b7fd4f9aaff27b0dbe0dcbf1cbf