PlayerProxy: more control options (pan, delayed start),
remove exceptions in method signatures.
Use delayed start on notification playback for better sync
between media apps and notifications
Disabled for now: support for AudioService (through
MediaFocusControl and PlaybackActivityMonitor) to enforce
audio ducking of focus owners losing audio focus with
AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK, and who don't
play audio that has a content labelled as CONTENT_TYPE_SPEECH.
This feature will be enabled when setting a VolumeShaper
on a player works.
Test: play music and play notification
Bug 30258418
Change-Id: I4e4d911645306bbde17f74288f3b61781fe0e3fe
An AudioPlaybackConfiguration contains an IPlayer
interface for system control of a player. It is not
exposed to non-system signature components.
AudioService, through PlaybackActivityMonitor, is monitoring
the death of the IPlayer so the matching player can get
unregistered in case it meets its maker.
Test: use vendor/google_toolbox/team/audio/cmds/ClPlaybackActivity
Bug: 30258418
Change-Id: Ibf3bceba91882ff16bffbf1219c55a1f89ccb13f
AudioService keeps track of status of implementations of PlayerBase.
AudioService's PlaybackActivityMonitor maintains a list of
playback configurations for each PlayerBase, and a list
of clients that want to receive updates about the playback.
Playback activity clients can query the playback configuration
of the system through AudioManager, or register a callback
for updates. For clients with MODIFY_AUDIO_ROUTING permission
(system), the playback configurations contain more information
about each player (player type, uid, pid, state), and can see
all players, not just the "active" ones. The act of stripping
off data about the players that is not supposed to be seen
by non-system clients, is referred to as "anonymization". It
is implemented in system server, so no system data is ever
sent to playback activity clients without system permission.
More information about the AudioPlaybackConfiguration is
available in the SystemApi (uid, pid, player type, player state).
Test: run cts -m CtsMediaTestCases -t android.media.cts.AudioPlaybackConfigurationTest
Bug: 30955183
Change-Id: I85997594c0378216419f5f0fdaa0714996fd3573
Deprecate methods where stream types are not used for
volume control operations.
Add a warning in the logs about the use of stream
types to encourage migration to audio attributes.
Since STREAM_ACCESSIBILITY is added in O for the
volume of a11y audio, throw an exception when
trying to use it for playback.
Test: make offline-sdk-docs
Bug: 30955183
Change-Id: I7fcf79f1de68f217a9b19561aa1325ade169dfcf
Modified the signature of the abstract volume methods so
it is clear at the subclass level whether the volume
command is for a mute or a volume control.
Changed the implementations in the subclasses
accordingly.
Removed appOps handling inside SoundPool and made it
inherit from PlayerBase.
Moved handling of the camera sound restriction from
SoundPool to PlayerBase.
Added support in SoundPool native implementation for
muting, as each player has its own volume.
Test: play a long file with SoundPool and enter DnD mode
Bug: 30955183
Bug: 28249605
Change-Id: I0fcd7480f9a455c06aa4f7092486f5c65bc9d7db
The default sampling rate chosen for an AudioTrack or AudioRecord
constructed with a Builder not specifying a sampling rate is not
the primary output sampling rate but depends on the device actually
selected.
Bug: 29541155
Change-Id: Ifcab65418b816b7321b6e9542b9e4bb95f748f95
Improve documentation for error codes returned by
AudioTrack.write() and AudioRecord.read() methods.
Fix native to JAVA error code conversion in JNI.
Bug: 28906466
Change-Id: I4d48b1d428834b7a39a14e2d81b6c164696817a8
Add a new class to group media/audio player features under one
interface. Currently only used for audio-related AppsOps
restrictions. In the future can group routing, audio focus
handling by the framework...
MediaPlayer inherits from PlayerBase, and overrides the methods
that are needed to delegate the handling of the restrictions
in a separate class.
When AppOps restrictions change (as triggered through the
callback in PlayerBase), reset the volume to its value intended
by the application (when unmuting) or the framework (0 when
enforcing the restriction).
Bug 28069414
Change-Id: I2f38e4b9b3c029778836868cf78f4d15d7603247
Reuse existing OnRoutingChangedListener APIs and internal logic by
extending the new AudioRouting.OnRoutingChangedListener. We use
new default methods to delegate incoming calls on the legacy
interfaces.
Fix a handful of locking bugs.
Bug: 27950070, 27952052, 27949198
Change-Id: Ie584108bcbeeab064d8e27d4984e541f31d36728
For setBufferSizeInFrames() and related methods.
Bug: 27384290
Change-Id: Ie5decb39d7945f304f57163c5da540cfd01903c7
Signed-off-by: Phil Burk <philburk@google.com>
Prevent developers from using a channelMask that will fail.
Bug: 27721209
Change-Id: I87ad67caedaedf6ed2230165cb1687a2a0b74703
Signed-off-by: Phil Burk <philburk@google.com>
Also prefer AudioManager.AUDIO_SESSION_ID_GENERATE over
AudioSystem.AUDIO_SESSION_ALLOCATE, because
AudioSystem.AUDIO_SESSION_ALLOCATE is @hide.
Bug: 27562099
Change-Id: I5924554feb919db7f2390f5b062faedd515421af
Also added some documentation links that were failing before.
Change-Id: I0a744dd0a3d3e1d09f643b35d976863fa0422d10
Signed-off-by: Phil Burk <philburk@google.com>
Allows applications to wrap compressed audio in a PCM
stream and pass through directly to HDMI output.
Bug: 24541671
Bug: 20891646
Bug: 26373761
Signed-off-by: Phil Burk <philburk@google.com>
Change-Id: If29e10b0665758330eca085bfeaac19fefc373b3
Also add getBufferCapacityInFrames().
These can be used to dynamically raise or lower latency.
Fix JavaDocs.
Bug: 21019153
Change-Id: I5c795c23826f7f29038d0de7004f4b7f365cd67e
Signed-off-by: Phil Burk <philburk@google.com>
This reverts commit 0ac70888d3.
The first revert was not needed. It was made to fix a broken build. But the break was from a different CL. SO I am reverting the revert.
Change-Id: Iad30209a38f9a0af18d684e44f033a49f32af778
This allows an app to detect application-level output glitches.
Change-Id: I4fb1eafff19a3dd776efae04ddd2e3514184d17f
Bug: 25641253
Signed-off-by: Phil Burk <philburk@google.com>
Also add getBufferCapacityInFrames().
These can be used to dynamically raise or lower latency.
Bug: 21019153
Change-Id: I3403982894c5fe101f45d0466b00ff3036b28417
Signed-off-by: Phil Burk <philburk@google.com>
Adding AudioRouting (Java) interface for routing control
in AudioTrack and AudioRecord.
Deprecating current (Marshmallow) Routing APIs in
AudioTrack and AudioRecord.
Adding package-private constructors to AudioTrack and AudioRecord
to connect to native player/recorder.
Bug: 23899814
Change-Id: I7df7a687fbd56a34c1f5769ffe005eba2a059505
Add a new getTimestamp() method that returns an error code.
Bug: 21886109.
Bug: 22202349.
Bug: 17548098.
Change-Id: Ib072dd3442de79bab9aca77c3c33b0790b492154