setForceUse() should not force new device selection on outputs
if the selected device is 0. If a device 0 (no device) selection
is forced on a duplicated output, this causes volumes to be reset to
their default on outputs the duplicated output is connected to.
Also force reapply volumes when a new output is created. It is safer and more
explicit than relying on the fact that the selected volume is different
from default volume and thus is actually sent to audioflinger.
Bug 6658021.
Change-Id: I0a14d5229847e001b0d44f60d41c241efdb9946a
The limitation of notification volume when playing music over headphones
has been broken for devices where notifications and music are played over
separate output streams.
Fix computeVolume() to check music stream activity on all outputs.
Bug 6623707.
Change-Id: Ie25f9b428ea086efe0be5fea2d31551d2528b655
Do not force mute on a strategy when moving it from one output
stream to another if no stream is active.
Bug 6611972.
Change-Id: I21f72b0ef3600639de66e6b0a1c3ae44045fd81f
Increase the volume of the system stream for speaker output, so
sounds played on this stream can be louder on devices that
need it.
Additional changes in the rest of the framework will define properties
to tune sound effect levels on a per-device basis.
Bug 6448481
Change-Id: Ia6c1ff314a321c6e271a682e3f4ff64c250b184e
Add the capability to query supported parameters for
direct outputs after a device is connected. This allows
to dynamically update the output profile for devices like
HDMI where the capabilities depend on the connected sink.
Also added very verbose log mode for volume and mute.
Change-Id: I1d4ba8e7dbc3e1af883582857ce93240441e551c
Global effects such as the visualizer would sometimes not be on the
right output, for example when switching from a2dp to wired headset
or back, when there are both regular and deep buffer outputs available.
We now check which of the available outputs the global effect should
be on when more than one is available.
b/6528772
Change-Id: Ie268e32ef41e7888da67c24730dc93750a2cf579
Added FORCE_NO_BT_A2DP forced use to allow applications to
override default policy to use A2DP whenever connected.
Bug 6485897.
Change-Id: I784271c062294fbe1aff7884965075b40c68dc24
When switching audio path, it is sometimes required
to temporarily mute certain streams to avoid glitches.
The unmute command is sent with a delay but the volume applied
when unmuting is computed according to the state at the time of mute.
If the device selection changes after the delayed unmute is programmed
the new volume will not correspond to the new device.
setStreamMute() now accepts a device selection as input parameter which is
used instead of current device for volume computation.
Bug 6497819.
Change-Id: I355ebf9e1afe814fa5c2723bda9c40e58f921b46
set_last_user_activity_timeout() is no longer used or useful.
It opens a sysfs node that no longer exists that used to
be published by a daemon that is no longer even compiled
and that is about to be deleted. It used to be called
by the power manager with a huge value whose purpose was
essentially to disable the timeout feature altogether.
Long live dead code!
Bug: 6435382
Change-Id: If8f97a66f4e963a11e1c6b67ad97b41b2613043e
Reduce system stream volume by 6dB as
UI sounds are now perceived as being too loud.
Issue 6448481.
Change-Id: I0237eb94245014724dfdf55253049340e2162af8
Added specific volume curves for AUDIO_STREAM_SYSTEM,
AUDIO_STREAM_ENFORCED_AUDIBLE and AUDIO_STREAM_DTMF.
Volume for these streams tracks AUDIO_STREAM_RING on phones
and AUDIO_STREAM_MUSIC on tablets but is contrained in the range
-24dB to -6dB on speaker and -24dB to -12dB on headset.
STRATEGY_ENFORCED_AUDIBLE routing policy is now the same as
STRATEGY_MEDIA in countries where not enforced.
Change-Id: If58d96559bfe2bbff4cd94c631d5933bd940778e
The addition of the per device volume feature has introduced
a problem where a volume burst can be heard in the headphones
just after insertion if the speaker volume is much higher than the
headphones volume.
Added a temporary mute of the output when switching device to force
volume ramp to 0 and back up to new volume.
Issue 5984108.
Change-Id: I5c9ffbbcadd12d25c78cc2614d351346b8186c55
Added definitions for parsing deep buffer flags in output profiles.
Make sure that sound start is delayed enough to allow
duck/mute effect to apply before starting a notification on an output
with lower latency.
Change-Id: I1578e245da19d1a0f9ec62a2ea6dddaf82ea282b
Because of the downmix capability of the mixer, do not prevent
a non-direct output to be retrieved based on channel mask.
Change-Id: I911f95f4055c2134298c233d14f2f5d586091fd4
Audio hw modules are now loaded according to configuration
data read from audio_policy.conf. They are not loaded anymore
from a hardcoded list in AudiFlinger.
Output and input streams are opened on the hw module by which
they are exposed.
Also removed obsolete "acoustics" flags for input streams.
Change-Id: I8dc658cc83890d3ac7d5e36c372a03732aa5b0c4
The audio policy manager implementation now reads a configuration file at
boot time that contains descriptors for available audio hardware
modules and for each module the profiles of available inputs and outputs streams.
The configuration file path on the target is: /system/etc/audio_policy.conf.
A default configuration file is given that defines a basic configuration
with one primary audio hw module capable of playback and capture.
Each platform or device should have its own audio_policy.conf file.
Also removed default value of fromCache argument of getDeviceForStrategy()
and getNewDevice() methods.
Change-Id: I0c773d2331508bbc787f89b123dd6a7b8c10d459
Map the NOTIFICATION stream type to a new strategy,
named STRATEGY_NOTIFICATION_RESPECTFUL, which differs
from STRATEGY_NOTIFICATION in that, when media is
playing, the notifications will use the same output
as the MEDIA strategy. This will results in the
notifications not being duplicated on the speaker
when a headset is in use for media playback.
Change-Id: I032be0e2d383c69b5b6c912d7174753f5572c4b4
Some system calls can be interrupted. wifi.c in particular was getting
into error conditions during bugreport because it doesn't handle EINTR
at all.
Change-Id: I7bec432a0b3dca7dcc5c03c5e9f5e9ed73fa3c4b
This change makes support for A2DP related audio policy more generic:
-removed WITH_A2DP compilation switch
-use output profile descriptors listing the parameters
(sampling rate, format...) devices and attributes (low power, tunneling...)
for each available output.
All the behavior specific to A2DP is derived from the A2DP output profile
descriptor.
- removed obsolete a2dpUsedForSonification() method.
This is a first step towards a more generic support for different audio
hardware modules (USB, HDMI) and output streams supporting different
combinations of parameters (sampling rate, format...) and attributes
(low power, tunneling...).
Ultimately, the hw modules and output descriptors will loaded from a
configuration file.
Change-Id: Ife3e49e1afbcb72613bfc8ce38919bb087ca85ea
The early-suspend/late-resume interface to /sys/power/state
is being moved to the default/legacy Power HAL.
The emulator interface is being moved to the emulator
Power HAL.
Change-Id: I66a1e611e6d907f20335f047001745f818dfc846
Signed-off-by: Todd Poynor <toddpoynor@google.com>
The change for volume per device introduced a problem where if a headset
is plugged in while in silent mode, the sound will not be restored
at the first press on volume up key but only at the second press.
This is because when exiting silent mode, AudioService reapplies the
last known volume for all devices in any order and the last volume
applied prevails, even if it is for a device other than currently selected
by audio policy manager.
The fix consists in applying a new volume only if the device indicated
matches currently selected device on an output.
Change-Id: I778b90a9ec5a8b4a15e0333bd045f2dd327f388c