Commit Graph

197 Commits

Author SHA1 Message Date
Jean-Michel Trivi
99489ccf74 Notification playback synchronized with audio focus
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
2017-01-31 15:40:09 -08:00
Andy Hung
ebc2c14b07 AudioTrack: Enable deep buffer mode from Java
Test: AudioTrack CTS test, Play Movies
Bug: 30687201
Change-Id: Id3a8d675966671ed13c488936228bd76dfc6c1fe
2017-01-25 13:00:34 -08:00
Jean-Michel Trivi
9dc22c227c AudioPlaybackConfiguration has a player control interface
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
2017-01-13 23:49:29 +00:00
Jean-Michel Trivi
292a6a4e99 Notification of playback activity
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
2016-12-21 13:58:08 -08:00
Jean-Michel Trivi
2f7511fd06 Stream types are for volume control
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
2016-11-30 09:54:23 -08:00
Jean-Michel Trivi
8e48c6939b Refactor SoundPool for appOps handling through PlayerBase
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
2016-11-14 09:36:11 -08:00
Eric Laurent
68b2ce3b4e Merge \\\"Fix JAVA doc for AudioRecord and AudioTrack Builder\\\" into nyc-dev am: 34ed8ad3c2 am: 4b44c63852
am: f805775657

Change-Id: I1dbe1111191c9542763b7bf24469cda0de2ab015
2016-06-22 01:41:26 +00:00
Eric Laurent
0f0da49fce Fix JAVA doc for AudioRecord and AudioTrack Builder
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
2016-06-21 15:12:31 -07:00
Eric Laurent
a65262e9a9 Merge "Fix AudioTrack and AudioRecord documentation" into nyc-dev am: b143e3de34 am: 50103561d2
am: 45309a4a95

* commit '45309a4a950a0c46f8933481e22c16f1d618db4d':
  Fix AudioTrack and AudioRecord documentation

Change-Id: I9da5a69426b790bbf4a0c6a22ae894b7f1258220
2016-05-24 18:02:25 +00:00
Eric Laurent
219de73da2 Fix AudioTrack and AudioRecord documentation
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
2016-05-23 17:36:43 -07:00
Jean-Michel Trivi
7620d781a8 Merge "Fix error in javadoc for android.media.AudioTrack" 2016-05-04 16:09:25 +00:00
Jean-Michel Trivi
688b9cb656 Fix error in javadoc for android.media.AudioTrack
Change-Id: Ic3d3a1067654ac45c4092d44d795030636427196
2016-05-03 17:21:30 -07:00
Glenn Kasten
1d46276a62 Improve documentation for AudioTrack buffer sizes
Bug: 28321706
Change-Id: I18ecc5a88e97d8c425a8524f216cc2b02e2e4ca9
2016-05-02 09:22:09 -07:00
Jean-Michel Trivi
3c86a343df Player superclass for handling AppOps features
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
2016-04-14 12:49:20 -07:00
Jeff Sharkey
ed2edc7a8e Clean up AudioRouting API internals.
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
2016-04-11 13:01:55 -06:00
Jean-Michel Trivi
49962261b3 AudioTrack.Builder: fix javadoc code sample
Fix sample rate in javadoc code sample.

Bug 24499652

Change-Id: I8d92ff34981cb4486e780d74213ed88fd3f74cc6
2016-04-01 17:23:19 -07:00
Jean-Michel Trivi
e27a75173f AudioTrack.Builder: fix javadoc code sample
Code sample in javadoc for AudioTrack.Builder didn't compile.

Bug 24499652

Change-Id: Ib881052bdebd74a25bb86ab73f9679b17c3ce62b
2016-04-01 21:52:42 +00:00
Phil Burk
eeecfa4401 AudioTrack: document some throws
For setBufferSizeInFrames() and related methods.

Bug: 27384290
Change-Id: Ie5decb39d7945f304f57163c5da540cfd01903c7
Signed-off-by: Phil Burk <philburk@google.com>
2016-03-28 14:19:17 -07:00
Phil Burk
566e7212ab Merge "Audio ENCODING_IEC61937: enforce use of CHANNEL_OUT_STEREO" into nyc-dev 2016-03-21 19:30:23 +00:00
Phil Burk
621dbc8740 Audio ENCODING_IEC61937: enforce use of CHANNEL_OUT_STEREO
Prevent developers from using a channelMask that will fail.

Bug: 27721209
Change-Id: I87ad67caedaedf6ed2230165cb1687a2a0b74703
Signed-off-by: Phil Burk <philburk@google.com>
2016-03-21 11:15:02 -07:00
Glenn Kasten
58ae278294 Merge "Use audio_session_t consistently" into nyc-dev 2016-03-17 14:22:53 +00:00
Paul McLean
14b4e65aff Native routing phase 4
Allow Acquire before Realize

Bug: 23899814

Change-Id: I58ab80554893a7df31c3892c75d6bd57fea2b336
2016-03-14 13:50:04 -06:00
Glenn Kasten
33b840444f Use audio_session_t consistently
Also prefer AudioManager.AUDIO_SESSION_ID_GENERATE over
AudioSystem.AUDIO_SESSION_ALLOCATE, because
AudioSystem.AUDIO_SESSION_ALLOCATE is @hide.

Bug: 27562099
Change-Id: I5924554feb919db7f2390f5b062faedd515421af
2016-03-10 10:35:49 -08:00
Paul McLean
c69ac54111 Make native_release() methods in AudioTrack and AudioRecord JNI-callable.
Change-Id: I31f8946579438021ba8f7ec58bf301a190082063
2016-03-08 15:47:35 -07:00
Phil Burk
88353459e2 Merge "AudioTrack: docs for getUnderrunCount()" into nyc-dev 2016-03-01 19:13:39 +00:00
Phil Burk
2bf39d8e9f AudioTrack: docs for getUnderrunCount()
Remove unnecessary warning about underruns.

Bug: 27384290
Change-Id: Ia872a6580d50952195842c3251370a3dd5da5111
Signed-off-by: Phil Burk <philburk@google.com>
2016-02-26 18:12:31 -08:00
Paul McLean
c707966397 Fix unitialized member/init-parameter in AudioTrack(long) and AudioRecord(long).
Bug: 27381351

Change-Id: Ia11c13bde978dbf1707439b82a18abf22fe23f2f
2016-02-26 13:13:02 -07:00
Paul McLean
9b09e533ac JNI plumbing for native audio routing API
Bug: 23899814
Change-Id: I3a831bb661fbdfe1981ae3482fcc8773c7df22b6
2016-02-26 10:15:07 -07:00
Glenn Kasten
1cbf9b3741 Allow sample rate UNSPECIFIED to mean a route-dependent value
Bug: 25641253
Bug: 21019153
Change-Id: I3b8e01b6ea09f42c813ab1a0f3f625dc3803cc0b
2016-02-25 11:39:37 -08:00
Phil Burk
af9aa07fbd Merge "AudioFormat: implement ENCODING_IEC61937" into nyc-dev 2016-02-12 22:24:55 +00:00
Phil Burk
cd0e210651 AudioTrack: fix docs for return code for setBufferSizeInFrames()
Also added some documentation links that were failing before.

Change-Id: I0a744dd0a3d3e1d09f643b35d976863fa0422d10
Signed-off-by: Phil Burk <philburk@google.com>
2016-02-11 16:42:13 -08:00
Phil Burk
43f4b276a5 AudioFormat: implement ENCODING_IEC61937
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
2016-02-11 19:36:12 +00:00
Glenn Kasten
518432e366 Update documentation for offset and size
Change-Id: Id9d5ef62767155cc8597795b43c4422f623574ed
2016-02-09 10:47:56 -08:00
Glenn Kasten
679f1e26d0 Update documentation to say write not read or play
Change-Id: I41b074f17da519f87ce410a576ecee079bdf4615
2016-02-01 14:11:51 -08:00
Phil Burk
dc5f027783 AudioTrack: make low latency APIs public
Allow apps to lower their Java audio latency.

Bug: 21019153
Change-Id: I1be9a083c46e9fcf7db2635e813cab13dbad810a
Signed-off-by: Phil Burk <philburk@google.com>
2016-01-27 23:24:20 +00:00
Phil Burk
8c2dd1f7e7 Merge "Revert "Revert "AudioTrack: Add getUnderrunCount()""" 2016-01-18 03:47:39 +00:00
Phil Burk
10a33e499c AudioTrack: add setBufferSizeInFrames()
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>
2016-01-17 15:26:51 -08:00
Phil Burk
03f61bbb2e Revert "Revert "AudioTrack: Add getUnderrunCount()""
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
2016-01-17 21:49:58 +00:00
Phil Burk
0ac70888d3 Revert "AudioTrack: Add getUnderrunCount()"
This reverts commit e08c454a89.

JavaDoc error

Change-Id: Ic389be67c8fc8a365948984e9cc7648ee8058371
2016-01-17 08:04:23 +00:00
Phil Burk
77e01bd3ad Revert "AudioTrack: add setBufferSizeInFrames()"
This reverts commit adfb7f62dd.

Due to JavaDoc error

Change-Id: I41acaa83b7800f88f000291c8deba18d7394be94
2016-01-17 08:01:40 +00:00
Phil Burk
e08c454a89 AudioTrack: Add getUnderrunCount()
This allows an app to detect application-level output glitches.

Change-Id: I4fb1eafff19a3dd776efae04ddd2e3514184d17f
Bug: 25641253
Signed-off-by: Phil Burk <philburk@google.com>
2016-01-16 11:12:22 -08:00
Phil Burk
adfb7f62dd AudioTrack: add setBufferSizeInFrames()
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>
2016-01-16 09:08:51 -08:00
Paul McLean
ed36ca3d4f Native Audio Routing and (Java) AudioRouting (interface).
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
2016-01-15 15:59:37 -07:00
Glenn Kasten
25d3c7c49b Revert "Short-term fix for unregistered JNI method"
This reverts commit 7922be86e2.
2016-01-07 16:02:49 -08:00
Glenn Kasten
7922be86e2 Short-term fix for unregistered JNI method
Bug: 26445503
Change-Id: Id40d4f026572538e3481d8e4c7142fd5489670a3
2016-01-07 10:55:26 -08:00
Glenn Kasten
bd2c3d65d6 Use FCC_2 and FCC_8 to highlight channel count assumptions
Bug: 21656069
Change-Id: I20a74575eddf6e28f1777d04eeab396f28bcc0cc
2016-01-05 11:44:12 -08:00
Eric Laurent
4e1ccd370f AudioTrack: error reporting for getTimestamp()
Add a new getTimestamp() method that returns an error code.

Bug: 21886109.
Bug: 22202349.
Bug: 17548098.

Change-Id: Ib072dd3442de79bab9aca77c3c33b0790b492154
2015-08-21 18:11:21 -07:00
Glenn Kasten
37f559be42 Merge "Improve getTimestamp documentation" into mnc-dev 2015-07-31 18:04:16 +00:00
Glenn Kasten
00908b6c69 Improve getTimestamp documentation
Bug: 18977548
Change-Id: Ia3c2620b27a173ed1a15268ca43c28e6f4e31965
2015-07-30 10:07:34 -07:00
Dianne Hackborn
0e3de6caca Change MNC codename to just M.
Change-Id: I4281d200ff6560791c47cf9073ceea1cb509361e
2015-07-29 15:20:21 -07:00