76 Commits

Author SHA1 Message Date
Glenn Kasten
626f0dc73b Merge "Deprecations are warnings not errors" into mnc-dev 2015-05-28 22:51:17 +00:00
Glenn Kasten
85d99546a0 Deprecations are warnings not errors
Change-Id: Ib77f45fdc27ea53f1dd181f48c76810d03f8dcdb
2015-05-28 07:59:36 -07:00
Glenn Kasten
14d226a2cd Add comments to indicate code review was done for bugs
Bug: 20818955
Bug: 20890069
Change-Id: I243205b99b198eb1b5a1a027b27cbb7d5aaaa8db
2015-05-18 13:54:40 -07:00
Andy Hung
a6238ef389 Fix SoundPool.unload() return value
Bug: 21209627
Change-Id: Ifd5c5f349894744c192cad10c5c875882566ec53
2015-05-15 18:43:03 -07:00
Jean-Michel Trivi
6c307879b7 AudioTrack in SoundPool uses audio_attributes_t parameter
Bug 20731155

Change-Id: I62ce9d5c5a88aaf534cfd1861378215f9253248d
2015-05-13 19:26:12 -07:00
Andy Hung
26eca01c49 Check for null codec from AMediaCodec_createDecoderByType
NULL codec can now occur if codec cannot be created.

Bug: 20566134
Change-Id: I08d54e733a01d0614313673dc49a6f5e702633ac
2015-04-29 14:09:45 -07:00
Andy Hung
32ccb69fde Fix SoundPool track recycling for fast tracks
Bug: 19970735
Change-Id: I075d04a688383139484f24ba4be2829c5220c57e
2015-03-30 11:33:33 -07:00
John Spurlock
b4f01b966b Remove the ability to disable audio service.
Running in a configuration without audio service is not fully tested.
Remove the configuration option for now. Also remove unused delegation
layer in SoundPool.

Bug: 19891112
Change-Id: I47be0e32d54b8ef8fa25cf47b85eacf8a4969500
2015-03-24 17:22:13 -04:00
Andy Hung
2bec0fe3a7 Merge "Revert "Revert "soundpool: update sample rate when reusing audiotrack""" 2015-03-17 23:14:24 +00:00
Andy Hung
9bd868fe7a Merge "Revert "Revert "soundpool: reuse channel for same sample if available""" 2015-03-17 23:12:38 +00:00
Andy Hung
bc4537393b Revert "Revert "soundpool: update sample rate when reusing audiotrack""
This reverts commit b801f73343194cd081f675a5dc2b3e90959cf6d1.

Change-Id: I0f6ee7fc981d65040f32e7852a5f66fd391b329d
2015-03-17 23:05:12 +00:00
Andy Hung
0c4b81bd3e Revert "Revert "soundpool: reuse channel for same sample if available""
This reverts commit 18c225d05480e7b80b312ef90d15789b34ce6bbc.

Change-Id: If91b4b0fb94df1d910cbaa0a7944001b2baa7be3
2015-03-17 23:02:00 +00:00
Glenn Kasten
a080050e42 Merge "Revert "soundpool: reuse channel for same sample if available"" 2015-03-10 01:07:32 +00:00
Glenn Kasten
01771a9f7d Merge "Revert "soundpool: update sample rate when reusing audiotrack"" 2015-03-10 01:06:29 +00:00
Glenn Kasten
18c225d054 Revert "soundpool: reuse channel for same sample if available"
This reverts commit 570576b51b8123ab05b36707ec752cf966292ca5.

Bug: 19635137
Change-Id: I8385ac4c151a375c19c3606698081c947b6216e3
2015-03-09 08:40:12 -07:00
Glenn Kasten
b801f73343 Revert "soundpool: update sample rate when reusing audiotrack"
This reverts commit a7d57a6f0068b1e2a0f07ca427cfba198b12a9b9.

Bug: 19635137
Change-Id: I1f53a432936dd3d51459e7d8cd86421bde399150
2015-03-09 08:39:46 -07:00
Andy Hung
a1c3516a24 Fix SoundPool playback of multichannel files.
Bug: 17188507
Change-Id: Ia4e43c7f8889181b998673b75b1f3bbf8c43f429
2015-03-06 15:00:42 -08:00
Dhananjay Kumar
a7d57a6f00 soundpool: update sample rate when reusing audiotrack
User might update playback rate while calling Play on a sample.
Update sample rate if reusing existing audio track.

Change-Id: I7007c335fa405baf663a322408b92b9df53efdb0
Signed-off-by: Glenn Kasten <gkasten@google.com>
2015-03-04 09:22:18 -08:00
Haynes Mathew George
570576b51b 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>
2015-03-04 09:16:28 -08:00
Marco Nelissen
06524dccbc Fix memory leak
Change-Id: Id691f9b32f9daeb23a01b17c5418b4d74a294cda
2015-02-10 15:45:23 -08:00
Marco Nelissen
6cd6110773 Fix printf format
Change-Id: Ied2f10bb59fe0e13b23bf1f9913ab3b081348a28
2015-01-27 12:17:48 -08:00
Marco Nelissen
372be8970c Make SoundPool use MediaCodec
Bug: 18239054
Change-Id: Ia144fc1bbb0d2787638ee972e2224339b4965310
2015-01-23 12:49:36 -08:00
Dariusz Iwanoczko
ed86e19af2 Race-condition in SoundPool during release
There is race between SoundPoolThread and SoundPool / AudioManager
threads during releasing SoundPool.
AudioManager deletes a global reference before setting SoundPool
callback to NULL. If, at that time, a call to the SoundPool::notify
fuction happens then mCallback is valid but mUserData is not.

The following log will show up to indicate the problem:
  JNI ERROR (app bug): accessed deleted global reference 0xXXXXXXXX

This fix is to clear the SoundPool's callback before releasing global
reference.

Change-Id: I5e6d647edc0444340db879428048e2c0a068a8b4
2014-11-11 13:12:53 +01:00
Andreas Gampe
5a15d0d31b Frameworks/base: Wall Werror in media/jni
Turn on -Wall -Werror in media/jni. Fix warnings.

Change-Id: I9da54ad379d8172ee535b52ee2b0637a2533f4e3
2014-11-10 18:19:40 -08:00
Jean-Michel Trivi
55a30c41b6 AudioAttributes for SoundPool
Add support for building a SoundPool instance and specify
 the AudioAttributes.
Remove SRC quality which was never implemented, while leaving
 room for supporting it later through the Builder pattern.
Remove stream types.
Update AudioService's use of SoundPool to the new scheme.

Change-Id: Ie51e4008684e5ba25f9b7368098e4f20266a15c7
2014-07-20 18:12:00 -07:00
John Spurlock
1af30c7ac4 Add stream-level suppression to vibrate/audio services.
- Add new audio restriction layer to app-ops.  Restrictions add
additional constraints to audio operations at a stream-level.
Restrictions do not affect the persistable state, and are purely
additive: that is, they can only impose additional contstraints, not
enable something that has already been disabled.  Restrictions
also support a whitelisted set of exempt package names.

- Add new audio stream-level checks to app-ops.

- Implement a provisional OP_PLAY_AUDIO suppression to three
java entry points MediaPlayer, AudioTrack, & SoundPool.

- Enhance vibrator api to take stream information as an optional
hint - the constants correspond to AudioManager stream types.
OP_VIBRATE now supports the stream-level restriction check.

- Simplify Vibrator subclasses by adding default implementations
for two .vibrate calls.

- Migrate NoMan's zen-mode control to use the new app-ops
stream-level restriction mechanism.

Change-Id: Ifae8952647202f728cf1c73e881452660c704678
2014-03-19 15:32:51 -04:00
Ashok Bhat
075e9a19ce AArch64: Use long for pointers in media classes
For storing pointers, long is used in media classes,
as native pointers can be 64-bit.

In addition, some minor changes have been done
to conform with standard JNI practice (e.g. use
of jint instead of int in JNI function prototypes)

Change-Id: Idc4ca0124d03df7f9cef412488abafd020e5e774
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>
Signed-off-by: Kévin PETIT <kevin.petit@arm.com>
2014-01-15 13:09:27 +00:00
Ying Wang
28af35e8cd resolved conflicts for merge of a976bddd to master
Change-Id: I64e1cbfb0eee891ce4d1eee40eefdcedcc501f7f
2013-04-09 23:21:42 -07:00
Ying Wang
d685894212 Add liblog
Bug: 8580410
Change-Id: I746aa8258866508c3a725d0773faf4518096548f
2013-04-09 21:54:12 -07:00
Dan Morrill
e4d9a01bfc Phase 1 of refactoring SystemServer.
SystemServer is currently a monolithic class that brings up key system
services. This change is the first phase of refactoring it to be more
configurable. Specifically, it adds a set of on/off switches used to control
startup of individual services. Future plans include finer grained controls
and a more explicit and consistent startup sequence for these services.

Change-Id: I7299f5ce7d7b74a34eb56dffb788366fbc058532
2013-04-04 09:49:22 -07:00
Glenn Kasten
b24a1b7f99 Remove obsolete references to libmedia_native
Bug: 6654403
Change-Id: I05d8e81fd31617b587fd1228a303c40db83e7f2d
2012-10-30 10:59:52 -07:00
James Dong
ba4d043331 frameworks base Android.mk file changes
Change-Id: I7459b9e959a60751b8fa6e0d893cb2c820c064ce
2012-03-28 11:03:25 -07:00
Eric Laurent
f5e1812549 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
2012-03-26 10:54:41 -07:00
Glenn Kasten
ae75f994cc Add libmedia_native
Change-Id: Ib8cff8abd73723b793f08da99ad59549f219e0e7
2012-03-16 11:51:30 -07:00
Glenn Kasten
28b269f341 Use audio_policy_output_flags_t consistently
This affects:
 - IAudioFlinger::openOutput
 - AudioTrack::AudioTrack
 - AudioTrack::set
 - apps that call these

Change-Id: I26fb281bac6cb87593d17697bc9cb37a835af205
2012-03-09 15:32:22 -08:00
Glenn Kasten
b3db213eb5 Update comments
We no longer put the filename at start of file.

Change-Id: Ic435b159a23105681e3d4a6cb1ac097bc853302e
2012-02-14 09:17:59 -08:00
Glenn Kasten
1137be1a68 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
2012-02-10 13:48:44 -08:00
Glenn Kasten
bc1d77b6cb 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
2012-01-13 10:20:14 -08:00
Glenn Kasten
1c66547ba2 Merge "Use audio_format_t consistently" 2012-01-12 10:30:28 -08:00
Steve Block
3762c31172 Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGE
See https://android-git.corp.google.com/g/#/c/157220

Bug: 5449033
Change-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c
2012-01-08 13:19:13 +00:00
Steve Block
8564c8da81 Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF) DO NOT MERGE
See https://android-git.corp.google.com/g/157065

Bug: 5449033
Change-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69
2012-01-06 10:07:54 +00:00
Glenn Kasten
1c5a89d4af 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
2012-01-05 13:34:54 -08:00
Steve Block
71f2cf116a Rename (IF_)LOGV(_IF) to (IF_)ALOGV(_IF) DO NOT MERGE
See https://android-git.corp.google.com/g/#/c/143865

Bug: 5449033
Change-Id: I0122812ed6ff6f5b59fe4a43ab8bff0577adde0a
2011-10-26 09:57:54 +01:00
Glenn Kasten
79cd8ba46b Remove unneeded #include <sys/resource.h>
Suggested in code review for previous change.

Change-Id: Ic3225b240367dc6c9bf56fb4498fb8a0f9f806ec
2011-06-15 07:30:19 -07:00
Glenn Kasten
e46a86fcb6 Revert "Use AudioTrack::event_type not int in callback"
This reverts commit 2225e4b7049fa3fb9d39a068b8268b63c952d7c1
2011-06-01 15:20:35 -07:00
Glenn Kasten
2225e4b704 Use AudioTrack::event_type not int in callback
Change-Id: Ifefc708d46874e04fd0d01cb6e2d43b987ee796c
2011-06-01 13:50:23 -07:00
Dima Zavin
34bb419e59 update for new audio.h header location
Change-Id: Ic4c62c4037800802427eb7d3c7f5eb8b25d18876
Signed-off-by: Dima Zavin <dima@android.com>
2011-05-12 14:09:57 -07:00
Dima Zavin
24fc2fb1c5 audio/media: convert to using the audio HAL and new audio defs
Change-Id: Ibc637918637329e4f2b62f4ac7781102fbc269f5
Signed-off-by: Dima Zavin <dima@android.com>
2011-04-27 13:10:10 -07:00
Elliott Hughes
a3804cf77f You don't need to poke around inside FileDescriptor manually.
We can help you with that.

Note also that getParcelFileDescriptorFD did no such thing. All its callers
were passing in a regular java.io.FileDescriptor and expecting the int. No
ParcelFileDescriptors involved.

Change-Id: Idc233626f20c092e719f152562601f406cc1b64a
2011-04-11 17:04:01 -07:00
Eric Laurent
a60e212d0d 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
2011-01-07 17:17:10 -08:00