History log of /frameworks/base/media/jni/soundpool/SoundPool.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
8e48c6939bd81dcbc596f0a4b11bfaea73aed00b 19-Oct-2016 Jean-Michel Trivi <jmtrivi@google.com> 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
/frameworks/base/media/jni/soundpool/SoundPool.h
ae1aadc04f9cee280c3c328a533e2ceeb4b71d47 29-Aug-2016 Chih-Hung Hsieh <chh@google.com> Fix google-explicit-constructor warnings in soundpool.

* Add explicit keyword to conversion constructors.
Bug: 28341362
Test: build with WITH_TIDY=1

Change-Id: Id1183b2929242cdf1fd0a1558d0e70194a1de9bb
/frameworks/base/media/jni/soundpool/SoundPool.h
0a887bcd5c5a8056735d221ad71afcff1f6eb1a6 01-Dec-2015 Andy Hung <hunga@google.com> DO NOT MERGE SoundPool: add lock for findSample access from SoundPoolThread

Sample decoding still occurs in SoundPoolThread
without holding the SoundPool lock.

Bug: 25781119
Change-Id: I11fde005aa9cf5438e0390a0d2dfe0ec1dd282e8
(cherry picked from commit 0275a982abecee683f16c827d405eafe51fb67ae)
/frameworks/base/media/jni/soundpool/SoundPool.h
9bd868fe7ae712507211fff14b30981195dc96ce 18-Mar-2015 Andy Hung <hunga@google.com> Merge "Revert "Revert "soundpool: reuse channel for same sample if available"""
0c4b81bd3ef3fd5eb0f7d1b8e2c6168b95020134 18-Mar-2015 Andy Hung <hunga@google.com> Revert "Revert "soundpool: reuse channel for same sample if available""

This reverts commit 18c225d05480e7b80b312ef90d15789b34ce6bbc.

Change-Id: If91b4b0fb94df1d910cbaa0a7944001b2baa7be3
/frameworks/base/media/jni/soundpool/SoundPool.h
a080050e4209cab9c81ae2144eed9c7c67e87f17 10-Mar-2015 Glenn Kasten <gkasten@google.com> Merge "Revert "soundpool: reuse channel for same sample if available""
18c225d05480e7b80b312ef90d15789b34ce6bbc 09-Mar-2015 Glenn Kasten <gkasten@google.com> Revert "soundpool: reuse channel for same sample if available"

This reverts commit 570576b51b8123ab05b36707ec752cf966292ca5.

Bug: 19635137
Change-Id: I8385ac4c151a375c19c3606698081c947b6216e3
/frameworks/base/media/jni/soundpool/SoundPool.h
a1c3516a243d00428ff2b470409d47cc9f5c9523 07-Mar-2015 Andy Hung <hunga@google.com> Fix SoundPool playback of multichannel files.

Bug: 17188507
Change-Id: Ia4e43c7f8889181b998673b75b1f3bbf8c43f429
/frameworks/base/media/jni/soundpool/SoundPool.h
570576b51b8123ab05b36707ec752cf966292ca5 30-Jan-2015 Haynes Mathew George <hgeorge@codeaurora.org> soundpool: reuse channel for same sample if available

Reuse channel for same sample if the channel completed
current playback and is not reallocated to another sample,
i.e. not stolen by other sample.

authored-by: Ashish Jain <ashishj@codeaurora.org>

Change-Id: Ibe7ee318c7dc11f3c4fd3a2f57d861318b10973b
Signed-off-by: Glenn Kasten <gkasten@google.com>
/frameworks/base/media/jni/soundpool/SoundPool.h
372be8970c6ab68c295fb74dbb878ab1d443d90e 04-Dec-2014 Marco Nelissen <marcone@google.com> Make SoundPool use MediaCodec

Bug: 18239054
Change-Id: Ia144fc1bbb0d2787638ee972e2224339b4965310
/frameworks/base/media/jni/soundpool/SoundPool.h
f5e18125498b768d4528e4d1c19533c2b16f338b 26-Mar-2012 Eric Laurent <elaurent@google.com> reorganize SoundPool and JetPlayer code.

Reorganize SoundPool and JetPlayer code to be ready for the
creation of libmedia_native.

Split SoundPool between libsoundpool (JNI) and libmedia(sound pool implementation).
Remove dependencies on nativehelper/jni.h from JetPlayer.

Change-Id: I130c6014173b714329929dd82c5dfb70b757a610
/frameworks/base/media/jni/soundpool/SoundPool.h
1137be1a686fdfc9f02c3aca7c33f28006df4742 09-Feb-2012 Glenn Kasten <gkasten@google.com> Follow raw pointer and sp<> conventions

Unconditional delete for raw pointers.
Use "if (sp != 0)" not "if (sp.get() != 0)" or "if (sp != NULL)".
Use "if (raw != NULL)" not "if (raw)".

Change-Id: I531a8da7c37149261ed2f34b862ec4896a4b785b
/frameworks/base/media/jni/soundpool/SoundPool.h
bc1d77b6cbce23fbe25f7231651037ae195bc90e 13-Jan-2012 Glenn Kasten <gkasten@google.com> Use audio_stream_type_t consistently

At native level it was a mixture of audio_stream_type_t, int, uint32_t,
and uint8_t. Java is still int. Also fixed a couple of hard-coded -1
instead of AUDIO_STREAM_DEFAULT, and in startToneCommand a hard-coded 0
instead of AUDIO_STREAM_VOICE_CALL.

Change-Id: Ia33bfd70edca8c2daec9052984b369cd8eee2a83
/frameworks/base/media/jni/soundpool/SoundPool.h
1c5a89d4af193e3ce9be9992ffee0ab0a4d8da5a 04-Jan-2012 Glenn Kasten <gkasten@google.com> Use audio_format_t consistently

Was int, uint32_t, uint16_t, and uint8_t with 2-bit bitfield.
Also replace 0 by AUDIO_FORMAT_DEFAULT and replace 1 by
AUDIO_FORMAT_PCM_16_BIT.

Change-Id: Ia8804f53f1725669e368857d5bb2044917e17975
/frameworks/base/media/jni/soundpool/SoundPool.h
e46a86fcb6a0849fc05c4cade6cb94aad0325295 02-Jun-2011 Glenn Kasten <gkasten@google.com> Revert "Use AudioTrack::event_type not int in callback"

This reverts commit 2225e4b7049fa3fb9d39a068b8268b63c952d7c1
/frameworks/base/media/jni/soundpool/SoundPool.h
2225e4b7049fa3fb9d39a068b8268b63c952d7c1 05-May-2011 Glenn Kasten <gkasten@google.com> Use AudioTrack::event_type not int in callback

Change-Id: Ifefc708d46874e04fd0d01cb6e2d43b987ee796c
/frameworks/base/media/jni/soundpool/SoundPool.h
a60e212d0dda7d2a748180ce77405f2463c9cf53 29-Dec-2010 Eric Laurent <elaurent@google.com> Fix issue 3261656.

The problem can occur if a sample is started at the same time as the last AudioTrack callback
for a playing sample is called. At this time, allocateChannel() can be called concurrently with moveToFront()
which can cause an entry in mChannels being used by moveToFront() to be erased temporarily by allocateChannel().

The fix consists in making sure that the SoundPool mutex is held whenever play(), stop() or done() are called.

In addition, other potential weaknesses have been removed by making sure that the channel mutex is held while
starting, stopping and processing the AudioTrack call back.

To that purpose, a mechanism similar to the channel restart method is implemented to avoid stopping channels
from the AudioTrack call back but do it from the restart thread instead.

The sound effects SounPool management in AudioService has also been improved to make sure that the samples have
been loaded when a playback request is received and also to immediately release the SoundPool when the effects are
unloaded without waiting for the GC to occur.
The SoundPool.java class was modified to allow the use of a looper attached to the thread in which the sample
loaded listener is running and not to the thread in which the SoundPool is created.

The maximum number of samples that can be loaded in a SoundPool lifetime as been increased from 255 to 65535.

Change-Id: I368a3bdfda4239f807f857c3e97b70f6b31b0af3
/frameworks/base/media/jni/soundpool/SoundPool.h
f3d6dd0782e3135885efdc26cb86cf0bf811749f 18-Nov-2010 Eric Laurent <elaurent@google.com> Fix issue 3157123.

Use a Mutex wherever atomic operations were used in AudioTrack,
AudioRecord, AudioFlinger and AudioEffect classes.

Change-Id: I6f55b2cabdcd93d64ef19446735b8f33720f8dbc
/frameworks/base/media/jni/soundpool/SoundPool.h
f992cbb9aae593c7787ac9c5f6b475e7bb0a92c5 09-Feb-2010 Dave Sparks <davidsparks@android.com> Add SoundPool API to pause and resume all active streams. Bug 2426531.
/frameworks/base/media/jni/soundpool/SoundPool.h
f6e43bf29084760b39257b2273e0f04c2815fdc5 08-Dec-2009 Dave Sparks <davidsparks@android.com> Add OnLoadCompleteListener to SoundPool.
/frameworks/base/media/jni/soundpool/SoundPool.h
3c256cf321f820f9d87399b9e254e4400c354c31 07-Dec-2009 Dave Sparks <davidsparks@android.com> More SoundPool cleanup. Remove mSoundPoolRef and unused notify callback.
/frameworks/base/media/jni/soundpool/SoundPool.h
c0e3ddf8f2f30dc9593f0a1bfd46335823e25d65 07-Dec-2009 Dave Sparks <davidsparks@android.com> Remove unused Java object reference in native SoundPool code.
/frameworks/base/media/jni/soundpool/SoundPool.h
fd8c0e1ff8ef781ba169c0164458ec1ce95ee35c 31-Jul-2009 Eric Laurent <elaurent@google.com> Fix issue 2025872: Deadlock in SoundPool.stop

There were 2 problems in SoundPool:

1 If not using the shared memory buffer mode, there was a problem when a sound channel was stolen. The new channel could sometimes not be added to the restart
list if the AudioTrack callback thread was stopped before the underrun callback was called.

The SoundChannel::play() method is modified so that SoundPool::done() is called immediately after stopping the channel. There is a possibility that done() is called a second time by the callback; in this case it will be added 2 times to the restart list but the second start request will be ignored as the first one will have reset the next chennel ID when processed.

2 There was a deadlock on SoundPool::mLock if SoundPool::stop() was called while a channel restart was pending:
SoundPool::stop() lock mLock -> SoundChannel::stop() -> SoundPool::done() -> SoundPool::addToRestartList() -> try to lock mLock == deadlock

A second mutex mRestartLock is added to protect the restart list mRestart. mLock is still used to protect mChannels list but mRestart is now used to
protect access to mRestart by restart thread and client thread.
/frameworks/base/media/jni/soundpool/SoundPool.h
9066cfe9886ac131c34d59ed0e2d287b0e3c0087 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/frameworks/base/media/jni/soundpool/SoundPool.h
d83a98f4ce9cfa908f5c54bbd70f03eec07e7553 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/frameworks/base/media/jni/soundpool/SoundPool.h
d24b8183b93e781080b2c16c487e60d51c12da31 11-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@130745
/frameworks/base/media/jni/soundpool/SoundPool.h
f013e1afd1e68af5e3b868c26a653bbfb39538f8 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
/frameworks/base/media/jni/soundpool/SoundPool.h
54b6cfa9a9e5b861a9930af873580d6dc20f773c 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution
/frameworks/base/media/jni/soundpool/SoundPool.h