• Home
  • History
  • Annotate
  • only in /frameworks/av/media/libmedia/
History log of /frameworks/av/media/libmedia/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
b1eb1a0dd38a36dd0c0626d3d57043dbd0042a92 23-Oct-2012 Eric Laurent <elaurent@google.com> stagefright: discard audio at start of capture

The new camcorder start sound is longer than previous one and we
must discard more audio when capture starts.

Ideally, camcorder should use synchronous record start.

Bug 7394330.

Change-Id: I219b4e231aba706776dc7ccc4f1c996eaf22f61a
ediaProfiles.cpp
d7086030fcf731e4bcef6c033cc6418cd04e6b91 10-Oct-2012 Jean-Michel Trivi <jmtrivi@google.com> Support querying active record sources

Add support for querying whether there is currently a recording
underway from the specified audio source.

Bug 7314859

Change-Id: I986b231a10ffd368b08ec2f9c7f348d28eaeb892
udioSystem.cpp
AudioPolicyService.cpp
cc0f1cfb69ce8b8985fc2c0984847a06a13ad22d 24-Sep-2012 Glenn Kasten <gkasten@google.com> Implement android.media.AudioManager.getProperty()

Bug: 6635041
Change-Id: I3386a4a6c226bc4eceaf65556119e4fb15f73224
udioSystem.cpp
AudioFlinger.cpp
207e18540fefbaf530a4fdf506d266f34ddec84f 21-Sep-2012 Andreas Huber <andih@google.com> Remove legacy code and APIs in wifi display related code.

Change-Id: Ia010e7a00534f9356b3247369d0ffd65591d91aa
MediaPlayerService.cpp
efbb781c15abf8e085f5ab8d39710bd58ea0b6e4 18-Sep-2012 Andreas Huber <andih@google.com> HDCP module binderized

Change-Id: I866768b1e3f3b232f1934a35b65f66befc12f3f6
MediaPlayerService.cpp
896adcd3ae6a1c7010e526327eff54e16179987b 13-Sep-2012 Eric Laurent <elaurent@google.com> audioflinger: send priority request from a thread

When creating a fast AudioTrack, a request is sent to SchedulingPolicyService
to elevate the requesting thread priority. This generates a binder
call into system_server process and to a JAVA service via JNI.
If the thread from which the track was created is in the system_server
process and does not have the "can call java" attribute, a crash occurs because
the binder optimization reuses the same thread to process the returning binder
call and no JNI env is present.

The fix consists in sending the priority change request from the AudioFlinger
mixer thread, not from the binder thread.

This also reverts the workaround in commit 73431968

Bug 7126707.

Change-Id: I3347adf71ffbb56ed8436506d4357eab693078a3
udioTrack.cpp
73431968e3c5cf420b5d63c54cf72d10ff7ee7bc 13-Sep-2012 Jean-Michel Trivi <jmtrivi@google.com> Workaround for track recreation bug

Ignore thread can call Java parameter to work around bug where
AudioTrack instance gets recreated when key clicks are enabled
and WFD gets turned on, with the wrong parameters.

Change-Id: Ia42c8704b46fe3ffea560b05b60939fa2e4b29e1
udioTrack.cpp
fd48021dfc3278b048ba99ecffe7f996751fb440 10-Sep-2012 Elliott Hughes <enh@google.com> am e7c992c6: am 5abc91d6: Merge "Fix libmedia and libstagefright to get expat header files from the approved location."

* commit 'e7c992c675e0075cd60b0b11c06d5956e3ddd7a3':
Fix libmedia and libstagefright to get expat header files from the approved location.
e7c992c675e0075cd60b0b11c06d5956e3ddd7a3 10-Sep-2012 Elliott Hughes <enh@google.com> am 5abc91d6: Merge "Fix libmedia and libstagefright to get expat header files from the approved location."

* commit '5abc91d61718e334e05c6d4858bd868bd5a5769c':
Fix libmedia and libstagefright to get expat header files from the approved location.
e8057dd8208f0a185109992339a995c518b12780 09-Sep-2012 Elliott Hughes <enh@google.com> Fix libmedia and libstagefright to get expat header files from the approved location.

Found during a libexpat upgrade.

Change-Id: I9e5abd502a884975d898486edde374fb2519164e
ndroid.mk
ediaProfiles.cpp
261fd2119c70fda3af64453881a6346dd48eb956 07-Sep-2012 Eric Laurent <elaurent@google.com> Merge "AudioRecord: Fix minimum frame count calculation." into jb-mr1-dev
6f744d75d3439f7984245e3c489cc7cf91cea41c 06-Sep-2012 Eric Laurent <elaurent@google.com> AudioRecord: Fix minimum frame count calculation.

AudioRecord::set() was calling getMinFrameCount() with
a channel count instead of a channel mask.

Change-Id: Iabace7686426430fd53deac0c71b0c36aa64171c
udioRecord.cpp
455d02eca342d8159637af317a5d83219d267812 06-Sep-2012 Jeff Brown <jeffbrown@google.com> Update remote display API.

Renamed disconnect() to dispose() to emphasize the fact that
this method is intended to clean up the IRemoteDisplay
completely, not just temporarily disconnect the current client
(which might be useful someday).

Other minor tweaks.

Change-Id: I1209639eb0cd8af09c724206642d7e52aab48257
RemoteDisplay.cpp
e104596061b219e9bce6d4db49a9d15242f8d2e5 05-Sep-2012 Jeff Brown <jeffbrown@google.com> Implement remote display service stubs.

Change-Id: I582ed000026bba6d116db8304e15a3c52f8a9a01
ndroid.mk
MediaPlayerService.cpp
RemoteDisplay.cpp
RemoteDisplayClient.cpp
cd89e8014368af1bbdfa08406d5d2eb0bbbfcca1 31-Aug-2012 Andreas Huber <andih@google.com> Merge "Added an additional virtual method IStreamSource::flags()." into jb-mr1-dev
da7ff5321539ac07ec76d0d03bd1b9b09a1823bf 31-Aug-2012 Andreas Huber <andih@google.com> Added an additional virtual method IStreamSource::flags().

Change-Id: I89e62d84328e12f08c8f73cbfd53cfb42569de97
StreamSource.cpp
c3ae93f21280859086ae371428ffd32f39e76d50 30-Jul-2012 Glenn Kasten <gkasten@google.com> Update audio comments

Change-Id: Ie7504d0ddb252f7e4d4f99ed0b44cfc7b1049816
udioTrack.cpp
bcf09f8c995221e75c7cd328f25c7cc6d2b5f7c9 30-Aug-2012 Andreas Huber <andih@google.com> Only run the wifi display RTSP server on demand, and only on the wifi direct

interface.

Change-Id: I7d3c44cb79cd40e73499f2d7ccf35c69b628e6d7
MediaPlayerService.cpp
d8ee4e56f92eeb44ddc0997efe280b9f28ad814d 30-Aug-2012 Andreas Huber <andih@google.com> Merge "Initial checkin of support for acting as a wifi display source" into jb-mr1-dev
d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480c 29-Aug-2012 Andreas Huber <andih@google.com> Initial checkin of support for acting as a wifi display source

Change-Id: I08f17efa0c7d007e17408feb7d4fbef0a19f531a
MediaPlayerService.cpp
1b19c9d120869c3182373a9b06a1ed98898df882 29-Aug-2012 Andreas Huber <andih@google.com> Preliminary support for HDCP as a binder service for wifi display support.

Change-Id: Ie0de1c086c629a668d1c7863992eef56fb94157c
ndroid.mk
HDCP.cpp
6a8ea471a9f3b001bd0ffa3381eba12975dfc59f 21-Aug-2012 Glenn Kasten <gkasten@google.com> Merge "Revert "Swap the order of creating IAudioTrack and thread"" into jb-mr1-dev
44a7e42f0310831e6a846d1b6bb40bf3a399bf6d 22-Jun-2012 John Grossman <johngro@google.com> Add the ability to dynamicaly register MediaPlayer types.

Add the ability to dynamically register low level MediaPlayer
factories which will be probed at setDataSource time to determine the
proper MediaPlayerBase to instantiate.

This change is in preparation for moving libaah_rtp out of
frameworks/base and into phantasm platform directory.

Change-Id: Icf8904db3ab9e3c85df6e780d5546d9988cb9076
Signed-off-by: John Grossman <johngro@google.com>
MediaPlayer.cpp
a997e7a7c5aa2fc7e95316218316f8b7b98786ba 07-Aug-2012 Glenn Kasten <gkasten@google.com> Revert "Swap the order of creating IAudioTrack and thread"

This reverts commit 5d464eb0b8cffb994a754ff108795e858a882414.
It caused the wrong thread ID -1 to be passed to IAudioFlinger::createTrack().

Change-Id: Ic221d2bb4af572d3d2d752af19238c52f6728e3a
udioTrack.cpp
5d464eb0b8cffb994a754ff108795e858a882414 23-Jun-2012 Glenn Kasten <gkasten@google.com> Swap the order of creating IAudioTrack and thread

Simplifies the error recovery in case IAudioTrack fails.

Change-Id: I6aee41a2ac747a5689fb4836b04174e6107bf32f
udioTrack.cpp
0ec23ce0d1ff79566c402bc30df3074f6e25a22b 10-Jul-2012 Glenn Kasten <gkasten@google.com> Clean up start() parameters

Document where int is used instead of AudioSystem::sync_event_t
(probably because of a header file dependency).
TrackBase::start() and RecordTrack::start() don't need default parameters.

Change-Id: I82f4a4d078be900f3aa4bd926697e32f5ed68ec8
AudioRecord.cpp
58e5aa34f01d663654d8bafad65db1dda42161ff 20-Jun-2012 Glenn Kasten <gkasten@google.com> effect_descriptor_t const correctness

Change-Id: Iad008f20d35a18acf500f773900164552fd0c19e
udioSystem.cpp
AudioPolicyService.cpp
955e78180ac6111c54f50930b0c4c12395e86cf7 21-Feb-2012 Glenn Kasten <gkasten@google.com> AudioRecord locking

Fix race conditions for EVENT_MARKER and EVENT_NEW_POS callbacks.
Marker and new position update fields are protected by lock.

getSampleRate() doesn't need a lock because it reads from shared memory
control block.

Enforce that the parameter passed with EVENT_MARKER and EVENT_NEW_POS
cannot not be changed by the callback handler, and will not change during
the call by another thread.

Session ID should never change; log if it does.

Change-Id: Ia2c63cf1a71b10bb06c37981bd76437f83fffa91
udioRecord.cpp
a189a6883ee55cf62da1d7bf5bf5a8ab501938a4 20-Feb-2012 Glenn Kasten <gkasten@google.com> Use struct assignment instead of explicit memcpy

for POD structs effect_descriptor_t and effect_config_t

Change-Id: Ib2fc47f85fb65ed91b0abb1f87217c49b5eb571d
udioEffect.cpp
28b76b334f92a15a2be3cc9e2f7d229a3275d1ac 04-Jul-2012 Glenn Kasten <gkasten@google.com> Use audio_channel_mask_t for channel mask

Change-Id: I1c1896da48983aa9f1462a4b471f910498816f60
udioTrack.cpp
AudioFlinger.cpp
dcda3b325f465aa6ec2be11db1c56c8a5e867f33 16-Jul-2012 Glenn Kasten <gkasten@google.com> Merge "AudioRecord::stop() return void"
2bdb2f25861f3a3ac9cf3b7af561975fc9b9eead 14-Jul-2012 Edwin Wong <edwinwong@google.com> am 190313ec: am 65e8d62a: Merge "Fixed sample video corrupted in MediaCodec mode." into jb-dev

* commit '190313ec68e81c10d200ff3c20ac152cf90760d6':
Fixed sample video corrupted in MediaCodec mode.
d64cd233eef39430561c1e1df423336a199cc5d7 21-Feb-2012 Glenn Kasten <gkasten@google.com> AudioRecord::stop() return void

like AudioTrack::stop()

Change-Id: Iab62f4665151345f1ad5874c97a21d1a331f0154
udioRecord.cpp
190313ec68e81c10d200ff3c20ac152cf90760d6 14-Jul-2012 Edwin Wong <edwinwong@google.com> am 65e8d62a: Merge "Fixed sample video corrupted in MediaCodec mode." into jb-dev

* commit '65e8d62a5b243518795cdafa498df4a49baf6940':
Fixed sample video corrupted in MediaCodec mode.
68337edf595a0c345ba4b8adcd4f1e541a1d7eb7 12-Jul-2012 Glenn Kasten <gkasten@google.com> AudioRecord client threading cleanup

Rename ClientRecordThread to AudioRecordThread to be more similar to
AudioTrack naming.

Only create the thread once, and use resume() and pause() for start()
and stop(). This will allow us to have a known client callback thread
tid that we can pass to AudioFlinger before start().

mActive:
Made mActive a bool not int.
mActive is protected by mLock; volatile is meaningless.
Fixed a few places where mActive was accessed without a lock:
- stopped()
- processAudioBuffer()
These aren't used internally, so no need for _l() versions.

Change-Id: I4b8a5c90f3a22d3894b344564cb1c5aef4f1fda2
udioRecord.cpp
fa2b8f243eb048fb2b8e5a14356190f69eb31a36 11-Jul-2012 Edwin Wong <edwinwong@google.com> Fixed sample video corrupted in MediaCodec mode.

Change-Id: I50c5660072d40f6e297e58fd026ea04c89d6a70a
related-to-bug: 6732061
Crypto.cpp
04cd0186305e2b59d23c9147787046c6662029cc 25-Jun-2012 Glenn Kasten <gkasten@google.com> getMinFrameCount error handling

Convention is for "get" APIs that directly return status_t and indirectly
return a value via a pointer, to return BAD_VALUE if the pointer is NULL.
Also indirectly return 0 for other errors.

Change-Id: I1599f20ecb26e9723f9fb384ffbf911ff3a2ce1c
udioRecord.cpp
udioTrack.cpp
5f0033d27b75fead593ed7ca2b86f5b6f5adf6cc 13-Jul-2012 Glenn Kasten <gkasten@google.com> Merge "Remove dead code in libmedia"
1879fff068422852c1483dcf8365c2ff0e2fadfc 12-Jul-2012 Glenn Kasten <gkasten@google.com> Add tid parameter to IAudioFlinger::openRecord

Not yet implemented

Change-Id: I35523fb15ad71727ecc9f4bb870f07e4b7397dc4
udioRecord.cpp
AudioFlinger.cpp
d4070955e28ae62aa4be1657f9d32acde104bb86 12-Jul-2012 Glenn Kasten <gkasten@google.com> Remove dead code in libmedia

Change-Id: I7d8201590cda29c9fa99662a4fdba222091febfe
udioTrack.cpp
isualizer.cpp
bf04a5d7f287fc712e0ed91849dc85c90c1e182d 12-Jul-2012 Glenn Kasten <gkasten@google.com> Simplify AudioRecord::getInputFramesLost()

This also fixes a benign race in reading mActive without a lock.

Change-Id: I19e953d4f275e5c266ca1ca3fece7b6c02ad1707
udioRecord.cpp
254af180475346b6186b49c297f340c9c4817511 03-Jul-2012 Glenn Kasten <gkasten@google.com> Use audio_channel_mask_t more places

Use it in AudioSystem::getOutput(), AudioSystem::getInput(),
IAudioPolicyService::getOutput(), IAudioPolicyService::getInput(),
and various other places in AudioFlinger.

Not done: AudioTrack and OutputDescriptor.

Change-Id: I70e83455820bd8f05dafd30c63d636c6a47cd172
udioSystem.cpp
AudioPolicyService.cpp
f89a0deef1ecafcba164045b76d4d6c7bf8eb24d 10-Jul-2012 Glenn Kasten <gkasten@google.com> Merge "Move declarations of local variables to first use"
dd8104cc5367262f0e5f13df4e79f131e8d560bb 02-Jul-2012 Glenn Kasten <gkasten@google.com> Use audio_channel_mask_t more consistently

In IAudioFlinger::createTrack() and IAudioFlinger::openRecord(),
declare input parameter to use correct type audio_channel_mask_t.

In IAudioFlinger::getInputBufferSize(), input parameter is now channel mask
instead of channel count.

Remove unused IAudioFlinger::channelCount(audio_io_handle_t).

In AudioRecord::getMinFrameCount() and AudioSystem::getInputBufferSize(),
input parameter is channel mask instead of channel count.

Change-Id: Ib2f1c29bea70f016b3cfce83942ba292190ac965
udioRecord.cpp
udioSystem.cpp
AudioFlinger.cpp
20010053daabfa43fcfe781bbf004473b4c08538 22-Jun-2012 Glenn Kasten <gkasten@google.com> Remove acoustics from AudioSystem::getInput()

Change-Id: I29fb3ee5664c1f0ee0409c1bb2be087ecca637db
udioRecord.cpp
udioSystem.cpp
AudioPolicyService.cpp
624a7fcb377f2a40109c16de5109ae8ea1f67a69 22-Jun-2012 Glenn Kasten <gkasten@google.com> Use audio_channel_mask_t in AudioRecord

Change-Id: I9e1b918b2635d961604a4a9d88eb1c7179a167a7
udioRecord.cpp
868a6a357018e5872e064b7a13a9b891e2078962 22-Jun-2012 Glenn Kasten <gkasten@google.com> Include what you use

Change-Id: I12ef9367d05dbe069c037b1b4acd6347a8cf3ece
udioRecord.cpp
f92eec53f886f43e4374a36195be55f2a7bbcf36 07-Mar-2012 Glenn Kasten <gkasten@google.com> Remove AudioRecord record_flags

Change-Id: I021ddcc1bcb63132a4597d13e3d09db2a5f2c628
udioRecord.cpp
d3a9ff4b725de612bf0354c035ba8f8564dbc6e8 21-Jun-2012 Glenn Kasten <gkasten@google.com> Move declarations of local variables to first use

Change-Id: I48b193a742b32b6746aa938b84dc405124a6a5c3
udioTrack.cpp
4ebbabda6584aeb5ad2714e7db1702d00e84dad4 14-Jun-2012 Eric Laurent <elaurent@google.com> am 192cbbad: Fix audio track pause.

* commit '192cbbad773979a6fe3b5a0c223356de4fc3309c':
Fix audio track pause.
192cbbad773979a6fe3b5a0c223356de4fc3309c 13-Jun-2012 Eric Laurent <elaurent@google.com> Fix audio track pause.

AudioTrack::pause() should signal the control block condition
to release threads waiting for available buffers in obtainBuffer().
Otherwise the behavior relies on the timout on the condition
or the fact that audioflinger will mix a new audio buffer while executing
the pause.

Bug 6653769.

Change-Id: I5f8f73c471fe306070f30b814f32fd4b4dc1d575
udioTrack.cpp
48a0bfa6f731386f2794ff36d6677d56e98fc6ea 14-Jun-2012 Glenn Kasten <gkasten@google.com> am 49dd5cf3: Merge "Log track name on obtain/releaseBuffer warnings" into jb-dev

* commit '49dd5cf3469cd755321f8ec10013ad4fcfaf723d':
Log track name on obtain/releaseBuffer warnings
0c9d26d187017f7fb028ab52a0fbc6395142faa4 31-May-2012 Glenn Kasten <gkasten@google.com> Log track name on obtain/releaseBuffer warnings

This should help diagnose problems by allowing us to correlate
the logs with the dumpsys media.audio_flinger output.

Change-Id: I8c7c592b4f87d13b0f29c66ce7a2f301a0f063c9
udioTrack.cpp
ea5008d8abfdf1479b4efa266cdb7c842d168aa9 08-Jun-2012 Glenn Kasten <gkasten@google.com> am 28ed2f93: Reduce underruns in screen off, esp. with EQ

* commit '28ed2f93324988767b5658eba7c1fa781a275183':
Reduce underruns in screen off, esp. with EQ
28ed2f93324988767b5658eba7c1fa781a275183 07-Jun-2012 Glenn Kasten <gkasten@google.com> Reduce underruns in screen off, esp. with EQ

Add MonoPipe APIs to specify setpoint.
Use screen state to configure pipe setpoint.
Fix a long-standing bug where pipe sleep time was excessive,
which interacted poorly with governor and low clock frequencies.
Now it deducts the elapsed time since last write(),
which was significant when there was EQ and low clock frequency.

Bug: 6618373
Change-Id: I6f3b0072c2244aeb033ef0795ad164491a164ff5
udioParameter.cpp
721e18b75824eae3f3e79c915f4800ecad5dac80 01-Jun-2012 Eric Laurent <elaurent@google.com> am 27d33134: Merge "Do not keep audio wake lock when apps underrun." into jb-dev

* commit '27d33134130379cc91d936cdc742700311901a9d':
Do not keep audio wake lock when apps underrun.
df839841d2db4cb8e2acb10205b3942622b3e7a2 31-May-2012 Eric Laurent <elaurent@google.com> Do not keep audio wake lock when apps underrun.

Do not automatically restart an AudioTrack after an underrun
if the callback is executed but no data is written by the app.

Bug 6541286.

Change-Id: I11e7ab8dc968d7ff087058fec68f44490d3a7731
udioTrack.cpp
3c8889e827d95b195fe5ba077a01cb5b6042e534 29-Mar-2012 Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org> libmedia: Fix build with gcc 4.7

gcc 4.7 doesn't like the redefinition of n in the same
scope:
for(size_t n=...;;) {
size_t n = 2; // <-- duplicate definition
}

Change-Id: Idfc2e768a0eb85a3dacccd3431b4ad44775432a4
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>
ediaProfiles.cpp
2986460984580833161bdaabc7f17da1005a8961 09-May-2012 Eric Laurent <elaurent@google.com> Fix issues with synchronous record start.

- Added a timeout in case the trigger event is never fired.
- Extend AudioRecord obtainBuffer() timeout in case of
synchronous start to avoid spurious warning.
- Make sure that the event is triggered if the track is
destroyed.
- Reject event if the triggering track is in an incompatible state.

Also fix a problem when restoring a static AudioTrack after
a mediaserver crash.

Bug 6449468.

Change-Id: Ib36e11111fb88f73caa31dcb0622792737d57a4b
udioRecord.cpp
udioTrack.cpp
093000f7d11839b920e8dfaa42ed1d09f48e24b8 03-May-2012 Glenn Kasten <gkasten@google.com> Don't allow AudioTrack frameCount to decrease

This is a workaround for bug that client can cache return value of
frameCount(), and is not notified when this value changes due to automatic
re-recreation of the underlying IAudioTrack.

A better long-term fix would be to notify clients when these kinds of
parameters change, and to fix assumptions in client code that they are
constant (e.g. in SoundPool and maybe obtainBuffer).

Also, once a fast track request is denied, don't request it again.

Bug: 6431187
Change-Id: I55b4ff30bbd9ed3a402e39452a38de52cdea53a9
udioTrack.cpp
f4022f90db5acb680870db8c1150b673cdd211d9 02-May-2012 Glenn Kasten <gkasten@google.com> Fix race in AudioTrack destruction

Bug: 6427369
Change-Id: Id3b4487406235b881f6f0b4b95c5a02a9b797e75
udioTrack.cpp
31dfd1db7a4d2228d9642008af6f3dd744368eb6 01-May-2012 Glenn Kasten <gkasten@google.com> Disable fast track log spam

except for "denied by client" and "denied by server"

Change-Id: I133ab747933729cc1f386813ee06ece055bdb294
udioTrack.cpp
1477e92867a950016579a644e74f803ed1d90cbb 01-May-2012 Glenn Kasten <gkasten@google.com> Enable fast track for SoundPool

Change-Id: Ia80b3a7738e4c5dbe2bd5b0f55f0ca49943e2f64
oundPool.cpp
98f153091e8f4190b35b9ce15250f308baf4805c 25-Apr-2012 Glenn Kasten <gkasten@google.com> Re-enable fast track for ToneGenerator

Change-Id: If4152169778df124c750dc45023322ee23c80587
oneGenerator.cpp
f60c660f048d5f5e2458cff243c20400d73757a7 29-Apr-2012 Dave Burke <daveburke@google.com> Added support for HE-AAC recording

Fixed bug in decoder related to sample rates / channel counts
Made decoder follow Fraunhofer pattern
Log if bitrate not available
Bug: 6275957

Change-Id: I47a8e29358fa4a88ebc73fe02d46a2bfb96c64fe
ediaProfiles.cpp
aeb8fd460ed87d032b3fb8bb61e21eb542ce0f5b 19-Apr-2012 Dave Burke <daveburke@google.com> Add Fraunhofer AAC encoder with AAC-ELD support.

Change-Id: I6cd499d257d72f50a5b508bed97796a591a51506
ediaProfiles.cpp
e0fa467e1150c65a7b1b1ed904c579b40f97c9df 24-Apr-2012 Glenn Kasten <gkasten@google.com> Move frame count calculations for fast tracks

For fast tracks: move the default and minimum frame count calculations
from client to server. If accepted, the default and minimum frame count
is the fast mixer (HAL) frame count. If denied, the default and minimum
frame count is the same as it currently is for normal tracks.

For normal tracks: there is no change yet, preserve legacy behavior for
now but add a FIXME to change this later.

Bug fix: the test for buffer alignment matches channelCount was wrong.

Bug fix: check for 8-bit data in shared memory, which isn't supported.

Optimizations:
- in set(), only call AudioSystem::getOutputSamplingRate() when needed
- in createTrack_l(), only call AudioSystem::getSamplingRate() and
AudioSystem::getFrameCount() when needed

Change-Id: I79d2fe507db1a8f7bb094c71da8a129951dbb82f
udioTrack.cpp
a636433cbd09c0708b85f337ef45c0cdef3bcb4d 19-Apr-2012 Glenn Kasten <gkasten@google.com> Use C APIs instead of C++ APIs for policy

The C++ APIs are going away.

Note: we use tid == 0 which is not supported yet by the C APIs,
do not submit this until that is added.

Change-Id: I0e90789e6c81c69f2544e899c52421ea5d1342be
udioRecord.cpp
udioTrack.cpp
ca8b28013c0558a4a3323a1a0f58520277200086 23-Apr-2012 Glenn Kasten <gkasten@google.com> Fix regression in AudioTrack::pause()

Bug: 6379646
Change-Id: I12b53bc4118499ddc73a53a981f3f56328140868
udioTrack.cpp
1d685d767a5dd1003eb62f6ad1a26b39645a474f 23-Apr-2012 Glenn Kasten <gkasten@google.com> Fix ToneGenerator regression

Bug: 6378847
Change-Id: Ib3324c7a5951ac95f99993bfae27ea02bfda08ff
oneGenerator.cpp
3acbd053c842e76e1a40fc8a0bf62de87eebf00f 28-Feb-2012 Glenn Kasten <gkasten@google.com> Configure policy of mediaserver threads

Change-Id: Ifd825590ba36996064a458f64453a94b84722cb0
udioRecord.cpp
udioTrack.cpp
AudioFlinger.cpp
AudioRecord.cpp
AudioTrack.cpp
1948eb3ea6eee336e8cdab9b0c693f93f5f19993 14-Apr-2012 Eric Laurent <elaurent@google.com> Add support for deep audio buffers

Allow AudioSink to use deep audio buffering when the
source is audio only and its duration is more than
a certain threshold.
This helps improve battery life but implies higher
audio latency.

Change-Id: Ie79915b61c370292f05aabda9779356570e03cbb
udioTrack.cpp
5b8987e7de9d04b09153f329c680d2316cdb44ec 19-Apr-2012 Andreas Huber <andih@google.com> Allow propagation of error information and description from the CryptoPlugin to

the higher layers.

Change-Id: I9f434ad55cdf575803c208bedf47b607baff2330
related-to-bug: 6365261
Crypto.cpp
2d359a85ef5b72f1cb47df227b44fe4f3c5fbd60 19-Apr-2012 Jean-Michel Trivi <jmtrivi@google.com> Merge "Add support for scaling mode parameter"
3476de62fb10e76412452ef4c6bd71936c9f7db1 16-Apr-2012 Jean-Michel Trivi <jmtrivi@google.com> Add support for scaling mode parameter

Support VISUALIZER_PARAM__SCALING_MODE parameter.

Modify process() function to use new volume scaling parameter,
used to set whether captured values are maximized by current
headroom in the buffer (default existing behaviora) or left
as is and thus affected by volume.

Modify AudioEffect to allow subclasses to override the following
events: control status changed, enable status changed, command
executed.
In Visualizer class (a subclass of AudioEffect), reset the
scaling mode and capture size on the actual effect
as cached when control is regained.
This will allow the effect to be properly
configured whenever Visualizers with different scaling
modes or capture sizes are released (e.g. from java
release() method).

Change-Id: I05cb9f925a296dceca91bafa9fe294ef2b2c2bd5
isualizer.cpp
0ca3cf94c0dfc173ad7886ae162c4b67067539f6 18-Apr-2012 Eric Laurent <elaurent@google.com> rename audio policy output flags

Change-Id: I27c46bd1d1b2b5f96b87af7d05b951fef18a1312
udioSystem.cpp
udioTrack.cpp
AudioFlinger.cpp
AudioPolicyService.cpp
etPlayer.cpp
oundPool.cpp
oneGenerator.cpp
eee482b84bb456e87fa42e8ad02fd2d803839586 17-Apr-2012 Glenn Kasten <gkasten@google.com> Merge "ToneGenerator requests fast track"
2120fe5bd4e14b53d8bef4a220e8a32830cf8cf9 11-Apr-2012 Glenn Kasten <gkasten@google.com> ToneGenerator requests fast track

Also add comments to AudioTrack::set() parameter list

Change-Id: I28c76e9d813778d86b15d75cf7f01a17c258b6d9
oneGenerator.cpp
77d837ae86c791c46ce019b58e09ac62780bf973 16-Apr-2012 Glenn Kasten <gkasten@google.com> Order of evaluation of parameters is not specified

Change-Id: Id545e54c2ec8ed2f70ede630542ed999a9b2c5e2
AudioRecord.cpp
705868c0f2a6e85a39addefe4db9f2130627c219 12-Apr-2012 Andreas Huber <andih@google.com> Make it possible to pass empty opaque data as (NULL, 0) to ICrypto.

Change-Id: Ifee1744890b645e008c9aff3783625a7bfbcff27
related-to-bug: 6275919
Crypto.cpp
4b75a9c8b93a90749bc5d22912ad0d96c12f4ecf 06-Apr-2012 Andreas Huber <andih@google.com> New API to support submitting encrypted buffers to the decoder.

Change-Id: I69dd60e43078c4211c6123cf6e0ce90e676bf873
related-to-bug: 6275919
Crypto.cpp
a4c5a550e2a3bc237179b8684e51718e05894492 29-Mar-2012 Eric Laurent <elaurent@google.com> audio policy: load audio hw modules.

Audio HW modules are now loaded upon request from audio policy manager
according to the configuration in audio_policy.conf.
Removed hard coded HW module loading by AudioFlinger at init time.
Added methods to IAudioFlinger and AudioPolicyInterface
to control the loading of audio HW modules.
Added methods to open an output or input stream on a specific hw module.

Change-Id: I361b294ece1a9b56b2fb39cc64259dbb73b804f4
AudioFlinger.cpp
1a9ed11a472493cac7f6dfcbfac2064526a493ed 21-Mar-2012 Eric Laurent <elaurent@google.com> audio policy: add configuration file

removed outputs to stream mapping cache in audio system: the output for a
given stream type must always be queried from audio policy manager as the cache
is not always updated fast enough by audioflinger callback.

removed AudioFlinger::PlaybackThread::setStreamValid() not used anymore if
stream to output mapping is not cached.

Change-Id: Ieca720c0b292181f81247259c8a44359bc74c66b
udioSystem.cpp
udioTrack.cpp
1bd139a2a68690e80398b70b27ca59550fea0e65 03-Apr-2012 Andreas Huber <andih@google.com> New Crypto services talking to the new crypto "HAL".

Change-Id: I69ed31e7a8b4d69d1209d2d516f94d258f072566
related-to-bug: 6275919
Crypto.cpp
2d6486f9112a6f0d23f17eaaad94bac62e16caab 02-Apr-2012 Glenn Kasten <gkasten@google.com> Merge "Update AudioParameter"
4a4a0959bca78e03e3c3f486ba17829c28314d8c 19-Mar-2012 Glenn Kasten <gkasten@google.com> AudioTrack client fast policy

Change-Id: I42ce691df3f586ac061b62237f35a263a0116f1f
udioTrack.cpp
edf47a8cba2d1d8985b64bf4a4fac661ba34f35a 01-Apr-2012 Glenn Kasten <gkasten@google.com> Update AudioParameter

Use definitions for AUDIO_PARAMETER_STREAM_* from <hardware/audio.h>
instead of repeating these constants.

String constants are const char * const.

Change-Id: I1c9ebe0bc9c827d719d3181aea55251c6db28ec4
udioParameter.cpp
a1472d9883e35edd280201c8be3191695007dfd4 30-Mar-2012 Marco Nelissen <marcone@google.com> Make AudioTrack/AudioRecord handle more than 2^32 frames

b/6160363
Change-Id: I471815012c6a113ec2c4dd7676e8fa288a70bc76
udioRecord.cpp
udioTrack.cpp
a011e35b22f95f558d81dc9c94b68b1465c4661d 30-Mar-2012 Eric Laurent <elaurent@google.com> implemented synchronous audio capture

Added the infrastructure to support the synchronization of playback and
capture actions on specific events.
The first requirement for this feature is to synchronize the audio capture
start with the full rendering of a given audio content.
The applications can further be extended to other use cases
(synchronized playback start...) by adding new synchronization events and
new synchronous control methods on player or recorders.

Also added a method to query the audio session from a ToneGenerator.

Change-Id: I51f1167290d9cafdf2fbcdf9e4785156973af44c
udioRecord.cpp
AudioRecord.cpp
559bf2836f5da25b75bfb229fec0d20d540ee426 28-Mar-2012 James Dong <jdong@google.com> AV Android make files changes

o plus a few file relocation: ActivityManager.cpp/h, SoundPool.h, etc
o remove some runtime dependencies to libandroid, libandroid_runtime, etc

Change-Id: I047a47c5fb361dd5cf85cd98798c39f629a75d10
oundPool.cpp
oundPool.h
oundPoolThread.h
15147270aa1c56503902b424f946389294875665 26-Mar-2012 Andreas Huber <andih@google.com> Merge "Provisional support for secure decryption of media streams."
ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6 26-Mar-2012 Andreas Huber <andih@google.com> Provisional support for secure decryption of media streams.

Change-Id: Ib3982a9c960bfdb0cb7e1b174440b141b194cfbe
ndroid.mk
Crypto.cpp
MediaPlayerService.cpp
131c36ef343a604e9aee10c830ebe9c55a743379 26-Mar-2012 Eric Laurent <elaurent@google.com> Merge "reorganize SoundPool and JetPlayer code."
1f08900408927bd2b3bef59aaa15ab68ec765c06 26-Mar-2012 Colin Cross <ccross@android.com> Merge changes Ib4d0e0c0,Iea8f4a23

* changes:
libmedia: remove skia include
stagefright: remove dependency on skia
2e66a7896c9a9da3a15fc6cff9be28b4174d8719 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
ndroid.mk
etPlayer.cpp
oundPool.cpp
oundPool.h
oundPoolThread.cpp
oundPoolThread.h
b83d38feeeb88a8a2a6219e1fca2480b5a14fb0d 26-Mar-2012 Glenn Kasten <gkasten@google.com> Merge "IAudioFlinger::createTrack and openRecord flags"
60d3a4160f3edb38fa6168237f3275f4d6d9e019 25-Mar-2012 Colin Cross <ccross@android.com> libmedia: remove skia include

skia is not used in this file, remove the unnecessary include.

Change-Id: Ib4d0e0c0090c6b37ff8cfb816c0d8ba82a9638a4
MediaMetadataRetriever.cpp
3ee26944b082def647fe5bb2b75116ffb0267059 24-Mar-2012 James Dong <jdong@google.com> Remove JNI in LOCAL_C_INCLUDE from non-JNI related Android.mk files.

o related-to-bug: 6214141

Change-Id: Ic88d1732b3e014af47532a0809e01f6086e8464d
ndroid.mk
ef36d496477d1e2ae99c3cd43eee5cf7e82b0883 23-Mar-2012 Glenn Kasten <gkasten@google.com> Merge "Revert "Split libmedia into libmedia and libmedia_native""
78b5e82f421bfdf5c1c72bd0ca2fb7f3bc1a45ff 23-Mar-2012 Glenn Kasten <gkasten@google.com> Revert "Split libmedia into libmedia and libmedia_native"

This reverts commit 0a3edd38df0743dcc7091bb7ebf29e7e7dadc7cb
ndroid.mk
a411f779465504ff3e1a59c8ffa43d18385852b8 22-Mar-2012 Glenn Kasten <gkasten@google.com> Merge "Remove enforceFrameCount"
c524ffda17017d8467a237a1eddfd7e7c03c6617 21-Mar-2012 Glenn Kasten <gkasten@google.com> Split libmedia into libmedia and libmedia_native

This is still in the old location

Change-Id: Ic1be549b5b607cfd519cb4cecc581624510a4ee1
ndroid.mk
291f4d505aff81969e6666049d3cc3446f836af2 19-Mar-2012 Glenn Kasten <gkasten@google.com> Remove enforceFrameCount

It was only used to decide whether to issue a warning.
The warning was issued the first time track was created but
not at re-creation. Now it is a verbose message every time,
not a warning since it happens all the time with key clicks on A2DP.

Change-Id: I9d39f53c0a7eb84b666e55b1b76ff830cf8f37ba
udioTrack.cpp
63c1faa8dea7feb90255d31ef2a133d8f2818844 21-Mar-2012 Glenn Kasten <gkasten@google.com> Merge "Update comments"
7153494670bdac8b650cb10b8b1838651e0ca418 21-Mar-2012 Glenn Kasten <gkasten@google.com> Merge "Whitespace"
ea7939a079b3600cab955760839b021326f8cfc3 14-Mar-2012 Glenn Kasten <gkasten@google.com> Whitespace

Fix indentation, and add blank lines in key places for clarity

Change-Id: I57a0a8142394f83203161aa9b8aa9276abf3ed7c
udioTrack.cpp
1bb8e81b066a2311fd238fc6dae8f026e33ed99e 20-Mar-2012 Glenn Kasten <gkasten@google.com> Merge "Add libmedia_native"
17a736c3e1d062d7fc916329eb32aef8935614af 14-Feb-2012 Glenn Kasten <gkasten@google.com> Update comments

Change-Id: I327663a020670d0a72ff57bd0b682e2ce0528650
udioTrack.cpp
etPlayer.cpp
a075db4ff9b086ac2885df77bb6da0869293df92 06-Mar-2012 Glenn Kasten <gkasten@google.com> IAudioFlinger::createTrack and openRecord flags

createTrack and openRecord don't need the "old" flags parameter,
which was either audio_policy_output_t or audio_in_acoustics_t
shifted left by 16 bits. But they do need "new" flags, which
are defined by the application use case. Initially, the only
application use case flag is timed output, but others are planned.

For output, the audio_policy_output_t flags are passed to
AudioSystem::getOutput, which returns an audio_io_handle_t, and that
handle is then passed to createTrack. So createTrack doesn't need the
old flags parameter.

For input, the audio_in_acoustics_t flags are passed to
AudioSystem::getInput, which returns an audio_io_handle_t, and that
handle is then passed to openRecord. So openRecord doesn't need the
old flags parameter.

Change-Id: I18a9870911846cca69d420c19fe6a9face2fe8c4
udioRecord.cpp
udioTrack.cpp
AudioFlinger.cpp
b12153e36ae5e514d96c77d660b327d1a8f5000f 16-Mar-2012 Glenn Kasten <gkasten@google.com> Add libmedia_native

Change-Id: Ib8cff8abd73723b793f08da99ad59549f219e0e7
ndroid.mk
ab334fd351ae5a0e18903da123d63e565b536874 14-Mar-2012 Glenn Kasten <gkasten@google.com> audio_channel_in/out_mask_from_count

and avoid ambiguous term "channels" where it might be confusing
as to whether it is a channel mask or channel count

Change-Id: I744fa08ccb6001a98c97bd638d2c9d56836c4234
etPlayer.cpp
33b383948e8f270bff30378476f00dce289004eb 13-Mar-2012 Glenn Kasten <gkasten@google.com> Remove dependency on audio_* location

Change-Id: I4bc66115fcb9ba22b057bd72db3f561dcb18a0d8
ndroid.mk
36a4d2cc7a44eb42d0d9ef5fe50b6747a7a34cab 13-Mar-2012 Marco Nelissen <marcone@google.com> Merge "Gapless playback, step 1."
6b74d671a1321a6ecc4a40b6c87beedfecc1ec44 29-Feb-2012 Marco Nelissen <marcone@google.com> Gapless playback, step 1.

Currently able to play Ogg Vorbis, PCM WAV and other lossless files seamlessly
by reusing the initial AudioTrack for subsequent players.

Change-Id: Ie7cf6b9076bdf4f9211574456d192c02c04fecc7
MediaPlayer.cpp
ediaplayer.cpp
5e7616cc0e5493241211333134555d74aec89982 13-Mar-2012 James Dong <jdong@google.com> Merge "Switched to use the header files in /frameworks/native and deleted the duplicate header files in /frameworks/base"
e53b9ead781c36e96d6b6f012ddffc93a3d80f0d 13-Mar-2012 Glenn Kasten <gkasten@google.com> Whitespace and indentation

Fix indentation to be multiple of 4.
Make it easier to search:
sp< not sp < to
"switch (...)" instead of "switch(...)" (also "if" and "while")
Remove redundant blank line at start or EOF.
Remove whitespace at end of line.
Remove extra blank lines where they don't add value.

Use git diff -b or -w to verify.

Change-Id: I966b7ba852faa5474be6907fb212f5e267c2874e
udioEffect.cpp
udioRecord.cpp
udioSystem.cpp
udioTrack.cpp
AudioFlinger.cpp
AudioFlingerClient.cpp
AudioPolicyService.cpp
AudioRecord.cpp
AudioTrack.cpp
Effect.cpp
EffectClient.cpp
MediaDeathNotifier.cpp
MediaPlayer.cpp
MediaPlayerClient.cpp
MediaPlayerService.cpp
MediaRecorder.cpp
MediaRecorderClient.cpp
etPlayer.cpp
ediaProfiles.cpp
ediaScanner.cpp
ediaScannerClient.cpp
etadata.cpp
oneGenerator.cpp
isualizer.cpp
ediametadataretriever.cpp
ediaplayer.cpp
ediarecorder.cpp
6c6b4d0d2b98a7ceee8b697daaf611f8df3254fb 12-Mar-2012 James Dong <jdong@google.com> Switched to use the header files in /frameworks/native
and deleted the duplicate header files in /frameworks/base

o related-to-bug: 6044887

Change-Id: I17e0692d9a9b5c8796ded36677c833ca8ab36795
ndroid.mk
ediaProfiles.cpp
18868c5db2f90309c6d11e5837822135e4a0c0fa 07-Mar-2012 Glenn Kasten <gkasten@google.com> Use audio_policy_output_flags_t consistently

This affects:
- IAudioFlinger::openOutput
- AudioTrack::AudioTrack
- AudioTrack::set
- apps that call these

Change-Id: I26fb281bac6cb87593d17697bc9cb37a835af205
udioTrack.cpp
AudioFlinger.cpp
etPlayer.cpp
oneGenerator.cpp
f2015b625cd6bea86da7401e725332c35b90e7cf 10-Mar-2012 Glenn Kasten <gkasten@google.com> Merge "Use AudioRecord::record_flags consistently"
679ab0b0792846a89162ce41c953819d70030112 07-Mar-2012 Glenn Kasten <gkasten@google.com> Use AudioRecord::record_flags consistently

Change-Id: I6f369a2b99eb515603bc7d5629a07db2b96783fe
udioRecord.cpp
a19ffb656616feec70613ba67ddfe15a504a4e76 09-Mar-2012 Eric Laurent <elaurent@google.com> Merge "audio policy: use audio_devices_t when appropriate"
6374252107fd6539397598195ea6defd5870fafb 08-Mar-2012 Eric Laurent <elaurent@google.com> audio policy: use audio_devices_t when appropriate

Change-Id: I1b3a5879e81c789fb53d356af3d3a1ee2dca955f
udioSystem.cpp
AudioPolicyService.cpp
b81cc8c6f3eec9edb255ea99b6a6f243585b1e38 01-Mar-2012 Glenn Kasten <gkasten@google.com> IAudioFlingerClient::ioConfigChanged param2 const

The 3rd parameter (param2) to AudioFlingerClient::ioConfigChanged
is used as an input. So changed it from void * to const void *.
It is then cast to const OutputDescriptor *
or const audio_stream_type_t * depending on the event.

Change-Id: Ieec0d284f139b74b3389b5ef69c7935a8e5650ee
udioSystem.cpp
AudioFlingerClient.cpp
d8d6185c978c9b27ca69e7791785e0983ed9e8b8 06-Mar-2012 Eric Laurent <elaurent@google.com> AudioTrack: relax check on minimum buffer size

Current AudioTrack implementation enforces that the requested audio
buffer size is at least corresponding the audio latency.
This requirement is too strong and leads to problems with current
stagefright and AudioSink implementations when playing over output
streams with long latency.

Ultimately, the AudioSink design should be changed to specify a minimum
buffer size in time or frames units but not in buffer count units.

Change-Id: I8ba603956f92ac49143a8249572665aa548f2f0f
udioTrack.cpp
c795b64060c3af9d7961fc1371e4ccfa8ee3e450 23-Feb-2012 John Grossman <johngro@google.com> Switch the way we configure for MediaPlayer retransmission.

This is a cherry-pick of I6ab07d89b2eeb0650e634b8c3b7a0b36aba4e7dd
with merge conflicts addressed by hand and additional changes made in
response to code review feedback.

Move in the direction of a more publishable API for configuring a
media player for retransmission. It used to be that we used a custom
invoke and a modified URL (prefixed with aahTX://). There are many
issues with this technique and it was never meant to stand the test of
time.

This CL gets rid of all that. A new (but currently hidden) method was
introduced to the java level MediaPlayer API, called
setRetransmitTarget(InetSocketAddress), which allows an app writer to
set the retransmit target. For now, this method needs to be called
before a call to setDataSource (which is pretty unusual for the
MediaPlayer API) because this mid level code uses this as a cue to
instantiate an aahTX player instead of relying on the data source to
select a player. When retranmit functionality becomes part of the
existing android player implemenation, this
set-retrans-before-set-data-source behavior can go away, along with
the aahTX player itself.

Change-Id: I3b46c5227bbf69acb2f3cc4f93cfccad9777be98
Signed-off-by: John Grossman <johngro@google.com>
MediaPlayer.cpp
ediaplayer.cpp
e8286332f3817a8b7cc4cfd8f6450a3913533660 29-Feb-2012 Glenn Kasten <gkasten@google.com> Merge "Shorten thread names"
480b46802bef1371d5caa16ad5454fce04769c57 28-Feb-2012 Glenn Kasten <gkasten@google.com> Shorten thread names

prctl(PR_SET_NAME) limits to 15 characters. Before we had names like
"Binder Thread #" and the counter was cut off :-( Also remove redundant
"thread" at end of name; it's always a thread.

Change-Id: I1f99c2730ba0787ed9b59c15914356cddf698e2f
udioRecord.cpp
udioTrack.cpp
606ee61616efdba4696ae591ad10a4be33d8c946 25-Feb-2012 Glenn Kasten <gkasten@google.com> AudioRecord const methods

Change-Id: Ifae4fd7820b650aaca2b13c8658c292db1c46c0f
udioRecord.cpp
df712ea86e6350f7005a02ab0e1c60c28a343ed0 26-Feb-2012 Mathias Agopian <mathias@google.com> fix libgui header location

Change-Id: Iec71706cdd4f29c6904993648ce873e83ef9cafe
MediaPlayer.cpp
MediaRecorder.cpp
OMX.cpp
ediaplayer.cpp
ediarecorder.cpp
f063b49e95c28d63a58215ebda892a5fee4204cc 18-Feb-2012 Glenn Kasten <gkasten@google.com> Fix build warning

warning: pointer of type 'void *' used in arithmetic
warning: enumeral and non-enumeral type in conditional expression

Change-Id: I7b8d626a636145ef648e3b5d0e77068216dd012e
udioEffect.cpp
af7d8189f91c45ab919a6c9ac386b268c8d91168 11-Jan-2012 John Grossman <johngro@google.com> Enhance Visualizer behavior in the case of mediaserver death.

Bring the Visualizer class into line with the SDK documentation by
returning ERROR_DEAD_OBJECT instead of ERROR_INVALID_OPERATION when
the Visualizer loses its binder connection to the mediaserver because
of a mediaserver restart.

Also add a new callback interface to allow clients to be
asynchronously notified in the case of server death. Right now, the
interface definition and the registration method are flagged as hidden
pending API council review/approval.

See http://b/issue?id=5717519 for details.

Change-Id: Ic15856f27ed5a950a583ac11ca81f79bd7e9b1a0
Signed-off-by: John Grossman <johngro@google.com>
udioEffect.cpp
Effect.cpp
isualizer.cpp
4ff14bae91075eb274eb1c2975982358946e7e63 09-Feb-2012 John Grossman <johngro@google.com> Upintegrate Audio Flinger changes from ICS_AAH

Bring in changes to audio flinger made to support timed audio tracks
and HW master volume control.

Change-Id: Ide52d48809bdbed13acf35fd59b24637e35064ae
Signed-off-by: John Grossman <johngro@google.com>
udioTrack.cpp
AudioFlinger.cpp
AudioTrack.cpp
d9b9b8d09e7471b0ffa21cfa9f944ef4ad300a71 14-Feb-2012 Glenn Kasten <gkasten@google.com> Merge "Update comments"
99e53b86eebb605b70dd7591b89bf61a9414ed0e 19-Jan-2012 Glenn Kasten <gkasten@google.com> Update comments

We no longer put the filename at start of file.

Change-Id: Ic435b159a23105681e3d4a6cb1ac097bc853302e
udioTrack.cpp
AudioTrack.cpp
oneGenerator.cpp
ediaplayer.cpp
ed15977476a3d53103866e6d527fa3fb65d4166c 14-Feb-2012 Glenn Kasten <gkasten@google.com> Merge "Remove dead code AudioTrack::getLoop"
6dbc1359f778575d09d6da722b060a6d72c2e7c5 02-Feb-2012 Glenn Kasten <gkasten@google.com> AudioRecord and AudioTrack client tid

Inform AudioFlinger of the tid of the callback thread.

Change-Id: I670df92dd06749b057238b48ed1094b13aab720b
udioRecord.cpp
udioTrack.cpp
AudioRecord.cpp
AudioTrack.cpp
9f1d4448050a4df7118c90c0c0d3e6f9c4b82f3b 10-Feb-2012 James Dong <jdong@google.com> Merge "Move away from MediaDebug and use ADebug instead"
9d1f02d74fd395ec4de6861147da289423f0ab6f 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
AudioFlinger.cpp
etPlayer.cpp
oneGenerator.cpp
f1d5aa162c02a16b7195a43a9bcea4d592600ac4 07-Feb-2012 James Dong <jdong@google.com> Move away from MediaDebug and use ADebug instead

Change-Id: I963a3b6f79a7292891973cbeeaf3378b38629f08
ediaProfiles.cpp
90bebef5669a9385c706b042d146a31dca2e5d9b 28-Jan-2012 Glenn Kasten <gkasten@google.com> No newline or space at end of ALOG format string

Change-Id: I0bef580cbc818cb7c87aea23919d26f1446cec32
udioEffect.cpp
ediaProfiles.cpp
ediaScanner.cpp
ediaScannerClient.cpp
oneGenerator.cpp
38f5d71e72f3b76c5b519614d27f051d53cd2712 08-Feb-2012 Glenn Kasten <gkasten@google.com> Remove dead code AudioTrack::getLoop

Change-Id: I868329c52f31bc20125f068500d8f892b4ec9796
udioTrack.cpp
72ef00de10fa95bfcb948ed88ab9b7a177ed0b48 17-Jan-2012 Glenn Kasten <gkasten@google.com> Use audio_io_handle_t consistently instead of int

Other:
- add a comment to nextUniqueId
- made ThreadBase::mId const, since it is only assigned in constructor.

Change-Id: I4e8b7bec4e45badcde6274d574b8a9aabd046837
udioSystem.cpp
AudioFlinger.cpp
AudioFlingerClient.cpp
5e92a7861196ddae14638d4b7a63fc4892b7ef59 30-Jan-2012 Glenn Kasten <gkasten@google.com> Effect UUID inputs passed by pointer are const

Change-Id: I1f5c338bcb7368e3dd8cd5f804b2e6d9fbe087f8
udioEffect.cpp
AudioFlinger.cpp
4f9b0c54011eb8fd2ccfb393c2dcd51cd07800e0 08-Feb-2012 Glenn Kasten <gkasten@google.com> Merge "Remove dead mutex in AudioTrack/AudioRecord thread"
f22147e5d2982e0c461f7ce8058c2d596d518bd4 08-Feb-2012 Glenn Kasten <gkasten@google.com> Merge "AudioTrack declare more methods const"
a5224f319e2ba4b51ddb4287705ccf8d4b8ecc51 04-Jan-2012 Glenn Kasten <gkasten@google.com> AudioTrack declare more methods const

Change-Id: I4999e984460893961d0d8092cff17f3cf07d7214
udioTrack.cpp
f587ba5b991c7cd91e4df093d0d796bd419e5d67 27-Jan-2012 Glenn Kasten <gkasten@google.com> Declare more IAudioFlinger methods const

This is just documentation, as C++ method const-ness doesn't mean anything
for a binder API. Instead, here const means "no side effects".

Change-Id: Iaa9cd2fe477db10ae9a40cac4f79f0faa9b4e5e6
udioEffect.cpp
AudioFlinger.cpp
787bae0578fbaab6219ebf23494866b224d01438 03-Feb-2012 Glenn Kasten <gkasten@google.com> Merge "Use audio_in_acoustics_t consistently"
ff3c83e04ae459c4252b86dd4440b4e37ee92c16 03-Feb-2012 Glenn Kasten <gkasten@google.com> Merge "Use ToneGenerator::tone_type consistently"
a0d68338a88c2ddb4502f95017b546d603ef1ec7 28-Jan-2012 Glenn Kasten <gkasten@google.com> Use NULL not 0 for raw pointers

Use if (p != NULL) instead of if (ptr)

Change-Id: Iaec3413a59ccbf233c98fcd918cc7d70ac5da9fa
udioEffect.cpp
udioRecord.cpp
udioSystem.cpp
udioTrack.cpp
AudioFlinger.cpp
AudioFlingerClient.cpp
oneGenerator.cpp
62da7fbd60bee2dd57f503126266e9f04311d400 03-Feb-2012 Glenn Kasten <gkasten@google.com> Merge "Make AudioTrack control block volume field private"
457d4c01ec0e922771ef57158431f48e4d267905 02-Feb-2012 Glenn Kasten <gkasten@google.com> Merge "More audio_stream_type_t"
0e265cf36d201a7ccc0238b5c60b50f43d1dc450 02-Feb-2012 Glenn Kasten <gkasten@google.com> Remove dead mutex in AudioTrack/AudioRecord thread

The client callback threads had mutexes called AudioTrackThread::mLock
and ClientRecordThread::mLock. These mutexes were only used by start()
and stop(), and were unused by the thread itself. But start() and
stop() already have their own protection provided by AudioTrack::mLock
and AudioRecord::mLock. So the thread mutexes can be removed.

Change-Id: I098406d381645d77fba06a15511e179a327848ef
udioRecord.cpp
udioTrack.cpp
d459b485c61bd3e7fd81c5cd3af8ada27fc3e8d3 31-Jan-2012 Andreas Huber <andih@google.com> Slighly improve the API to discover if the OMX stack is running in the local

process.

Change-Id: Idd3c2f0d4a9542af01a3fdfd3b0bfab90e083505
OMX.cpp
211eeaf17e5565b68447d29799dbf158a33cf4cf 20-Jan-2012 Glenn Kasten <gkasten@google.com> More audio_stream_type_t

Change-Id: I1260259efe0aa3fc1ef13de69758aaa592e1f815
udioSystem.cpp
3d2f877c1cb4e4ae4ddde7f57f4353de9341f11b 28-Jan-2012 Glenn Kasten <gkasten@google.com> Use ToneGenerator::tone_type consistently

Also remove defaults in startToneCommand(), they're not needed and the
default for tone type was nonsense.

Change-Id: I70fa8cee4f3dbb8c66ceb3719c8d3d2f447f05b9
oneGenerator.cpp
de9719b3ec71472e6bf75117152176af51d1a515 27-Jan-2012 Glenn Kasten <gkasten@google.com> Use audio_in_acoustics_t consistently

Change-Id: I0a9dd668fb2e57b1c3ece3190588194974b99062
AudioFlinger.cpp
eba51fb3a361f67a6a64d5a16eba6084fe27d60e 23-Jan-2012 Glenn Kasten <gkasten@google.com> Use audio_source_t consistently

Was a mix of audio_source_t, uint8_t, and int.

Related fixes:
- fix comments in MediaRecorder.java
- AudioPolicyService server side was not checking source parameter at
all, so if the client wrapper was bypassed, invalid values could be
passed into audio HAL
- JNI android_media_AudioRecord_setup was checking source for positive
values, but not negative values. This test is redundant, since already
checked at Java and now checked by AudioPolicyService also, but might
as well make it correct.

Change-Id: Ie5e25d646dcd59a86d7985aa46cfcb4a1ba64a4a
udioRecord.cpp
udioSystem.cpp
AudioPolicyService.cpp
83d86538c4c479a9225c75ab27938e8f05abb9c8 17-Jan-2012 Glenn Kasten <gkasten@google.com> Make AudioTrack control block volume field private

This is part of the process of abstracting the control block
to make it easier to maintain.

Change-Id: Idb8f461e68dab3bcf268159cc0781651c6fb7094
udioTrack.cpp
af0b82748ed900efab48068137114740cc84ee8f 21-Jan-2012 Glenn Kasten <gkasten@google.com> Merge "Fix warning for redundant typedef"
58f30210ea540b6ce5aa6a46330cd3499483cb97 12-Jan-2012 Glenn Kasten <gkasten@google.com> Use audio_format_t consistently, continued

Was int or uint32_t.

When AudioFlinger::format can't determine the correct format,
return INVALID rather than DEFAULT.

Init mFormat to INVALID rather than DEFAULT in the constructor.
Subclass constructors will set mFormat to the correct value.

Change-Id: I9b62640aa107d24d2d27925f5563d0d7407d1b73
udioRecord.cpp
udioSystem.cpp
AudioFlinger.cpp
AudioPolicyService.cpp
4a98a7c95f3c7d1e8c2913086ce35533a7d5cbf3 20-Jan-2012 Glenn Kasten <gkasten@google.com> Merge "Fix typos in string constants"
d967f0a099db2b71597a3127134afd4a46287a4a 20-Jan-2012 Glenn Kasten <gkasten@google.com> Merge "Remove redundant get()"
05bfe50e13793404a78c20c850d467d17734d496 20-Jan-2012 Glenn Kasten <gkasten@google.com> Merge "Move memcpy_to_i16_from_u8 to audio_utils"
7fc9a6fdf146ded90b51c52f4a05d797294dcb85 10-Jan-2012 Glenn Kasten <gkasten@google.com> Remove redundant get()

get() is almost always unnecessary, except in a LOG.
Also no need to check for != 0 before calling get().

Change-Id: Ib06e7a503f86cf102f09acc1ffb2ad085025516d
udioSystem.cpp
MediaDeathNotifier.cpp
ediametadataretriever.cpp
112ab3e11b9992814363e0f9c629ef7fba86950b 20-Jan-2012 Glenn Kasten <gkasten@google.com> Fix warning for redundant typedef

frameworks/base/media/libmedia/autodetect.cpp:22: warning: 'typedef' was ignored in this declaration

Change-Id: I8c7404b9f5aa515c0fe92a5a46f24248d6fe96bf
utodetect.cpp
ea3cc3bca949139e401b77f2ac0cce7ac6e76f8f 20-Jan-2012 Glenn Kasten <gkasten@google.com> Merge "Remove dead setRingerMode(mode, mask)"
9096f3471434d7f0d2419ac0ee2a618045489718 19-Jan-2012 Glenn Kasten <gkasten@google.com> Fix typos in string constants

These were copy/paste errors in code that was copied from AudioTrack.

Change-Id: I64a04d6026667884ddb1fefba67a71d69c691d62
isualizer.cpp
27a0d83f53ddbfd6449ab0e3c786742a2cd135a9 19-Jan-2012 Glenn Kasten <gkasten@google.com> Merge "Fix incorrect includes of AudioTrack.h"
241fc78866b2aefd75cd1890df5a75b7008728e8 19-Jan-2012 Glenn Kasten <gkasten@google.com> Merge "Simplify range check for audio_mode_t (continued)"
a3f1fa308728976fc9ca1b4f37d26e633b32b9ac 18-Jan-2012 Glenn Kasten <gkasten@google.com> Fix incorrect includes of AudioTrack.h

Remove unnecessary includes of AudioTrack.h.
Use forward declaration of class names in preference to #include when possible.

Change-Id: I12982811fa75c2c7695d8bbfa595a7aaec047dc0
ediaplayer.cpp
347966c827883711d1ec631f204e4a6ab74e9d99 18-Jan-2012 Glenn Kasten <gkasten@google.com> Simplify range check for audio_mode_t (continued)

Missed one place in earlier CL of same name

Change-Id: I0dd25364d0b8d5d731c02d352f139a0c8d4df1a8
udioSystem.cpp
0b07b8085d7b837b4dd5f09e0c8c39408f6bdbf7 18-Jan-2012 Glenn Kasten <gkasten@google.com> Remove dead setRingerMode(mode, mask)

Change-Id: Ia4cc8be8424a40b3dcb7ebd0264fdff4e5247f7f
udioSystem.cpp
AudioPolicyService.cpp
c813985abd8ba61e999b3505f6a332574f87a1be 18-Jan-2012 Andreas Huber <andih@google.com> Temporarily restore AudioSystem/AudioTrack APIs with their former signatures

until we get updated prebuilts from vendor.

Change-Id: I8aae81d2513edca0ab268053a11c8c4206879e61
udioSystem.cpp
udioTrack.cpp
04eaf3e5f20d7faa956c0d672024ffb5117f4c26 18-Jan-2012 Glenn Kasten <gkasten@google.com> Merge "Track volume cleanup"
63ad6aacc6ce6b729bf25f41376cfea731a2c1eb 18-Jan-2012 Eric Laurent <elaurent@google.com> Merge "audio framework: manage stream volume per device"
b1cf75c4935001f61057989ee3cf27bbf09ecd9c 17-Jan-2012 Glenn Kasten <gkasten@google.com> Track volume cleanup

Always read and write track volumes atomically. In most places this was
already being done, but there were a couple places where the left and
right channels were read independently.

Changed constant MAX_GAIN_INT to be a uint32_t instead of a float.
It is always used as a uint32_t in comparisons and assignments.
Use MAX_GAIN_INT in more places.

Now that volume is always accessed atomically, removed the union
and alias for uint16_t volume[2], and kept only volumeLR.

Removed volatile as it's meaningless.

In AudioFlinger, clamp the track volumes read from shared memory
before applying master and stream volume.

Change-Id: If65e2b27e5bc3db5bf75540479843041b58433f0
udioTrack.cpp
511754b5839fd9b09fc56b89ae007fbc39084a33 11-Jan-2012 Glenn Kasten <gkasten@google.com> Move memcpy_to_i16_from_u8 to audio_utils

This will make it easier for this kind of code to be optimized
for each target architecture.

Change-Id: I9efd27d6c0175b00b9a784353244805cec63c0b8
udioTrack.cpp
83844cc2f95dc279015b47fd1e18c7cb4eabe9a1 19-Nov-2011 Eric Laurent <elaurent@google.com> audio framework: manage stream volume per device

Improve volume management by keeping track of volume for each type
of device independently.
Volume for each stream (MUSIC, RINGTONE, VOICE_CALL...) is now maintained
per device.

The main changes are:
- AudioService now keeps tracks of stream volumes per device:
volume indexes are kept in a HashMap < device , index>.
active device is queried from policy manager when a volume change request
is received
initalization, mute and unmute happen on all device simultaneously
- Settings: suffixes is added to volume keys to store each device
volume independently.
- AudioSystem/AudioPolicyService/AudioPolicyInterface: added a device argument
to setStreamVolumeIndex() and getStreamVolumeIndex() to address each
device independently.
- AudioPolicyManagerBase: keep track of stream volumes for each device
and apply volume according to current device selection.

Change-Id: I61ef1c45caadca04d16363bca4140e0f81901b3f
udioSystem.cpp
AudioPolicyService.cpp
3f6448e020969be59ad4d8df99c5296f237ffbd9 16-Jan-2012 Glenn Kasten <gkasten@google.com> Move fixed_fft to system/media/audio_utils

Change-Id: If8a03911434862a872539c313f54825ffb2cc672
ndroid.mk
isualizer.cpp
ixedfft.cpp
0696400a6bb9abbed62b3b9c6aa105495dc600a2 17-Jan-2012 Glenn Kasten <gkasten@google.com> Merge "Use audio_mode_t consistently"
a9b21c5a7c24fe14d20372263c0bf5faf3d3e348 17-Jan-2012 Glenn Kasten <gkasten@google.com> Rename Visualizer::mLock

This avoids confusion with parent class AudioEffect's mLock which is
protected.

Change-Id: I2ae0b0869fe3c606f682252973795b34477951d0
isualizer.cpp
613882293184e575a44bff681a3decaefe889e69 17-Jan-2012 Glenn Kasten <gkasten@google.com> Merge "Use size_t for frame size"
0107954f72153db747a3727dc1157e9236dfed90 17-Jan-2012 Glenn Kasten <gkasten@google.com> Merge "Use audio_stream_type_t consistently"
05632a5fa4b88ca474294887fc92a9fcdf0e2352 03-Jan-2012 Glenn Kasten <gkasten@google.com> AudioTrack and AudioFlinger send level cleanup

Add an API to control block for getting/setting send level.
This allow us to make the mSendLevel field private.

Document the lack of barriers.

Use 0.0f to initialize floating-point values (for doc only).

Change-Id: I59f83b00adeb89eeee227e7648625d9a835be7a4
udioTrack.cpp
b9980659501d0428d65d8292f3c32da69d37fbd2 11-Jan-2012 Glenn Kasten <gkasten@google.com> Use size_t for frame size

except in the control block, where we don't have room.

In AudioFlinger::ThreadBase::TrackBase::getBuffer,
read the frame size from control block only once.

Change-Id: Id6c4bccd4ed3e07d91df6bbea43bae45524f9f4e
udioRecord.cpp
udioTrack.cpp
fff6d715a8db0daf08a50634f242c40268de3d49 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
udioSystem.cpp
udioTrack.cpp
AudioFlinger.cpp
AudioPolicyService.cpp
MediaPlayer.cpp
oneGenerator.cpp
ediaplayer.cpp
4cc55d53d542c4f4ed645738cebb65b9e7eb6c44 12-Jan-2012 Glenn Kasten <gkasten@google.com> Merge "Use audio_format_t consistently"
f78aee70d15daf4690de7e7b4983ee68b0d1381d 04-Jan-2012 Glenn Kasten <gkasten@google.com> Use audio_mode_t consistently

It was int or uint32_t.
Also make getMode() const.

Change-Id: Ibe45aadbf413b9158e4dd17f2b3bcc6355288d37
udioSystem.cpp
AudioFlinger.cpp
AudioPolicyService.cpp
83bc7f3cf78b28a818417f40a4f0c00593993366 04-Jan-2012 Glenn Kasten <gkasten@google.com> libmedia new can't fail on Android

Change-Id: Ie79dd5abb8078b35474bf0f1b3a6ff994a3a3360
udioRecord.cpp
udioTrack.cpp
etPlayer.cpp
ediaScannerClient.cpp
oneGenerator.cpp
isualizer.cpp
3bba0e0a60b15895134bc2c731d21fd7ebd28784 11-Jan-2012 Glenn Kasten <gkasten@google.com> Merge "Fix race in AudioSystem::getInputBufferSize"
544096247a907bc55688e5c03d5586ba5219d82a 11-Jan-2012 Glenn Kasten <gkasten@google.com> Merge "Fix bug in JetPlayer::loadFromFile"
e3a067f8bc98134941ee1a4da8c2a92a15aaa9cc 11-Jan-2012 Glenn Kasten <gkasten@google.com> Merge "Simplify range check for audio_mode_t"
0132e12ded92529b1520ad62f5134fa31361c90b 11-Jan-2012 Glenn Kasten <gkasten@google.com> Merge "Declare IAudioTrack methods in binder opcode order"
f8c1a6f7ef515810356816b50bfe18af95f3ec32 10-Jan-2012 Glenn Kasten <gkasten@google.com> Fix race in AudioSystem::getInputBufferSize

It was caching the recording parameters without a mutex.

Change-Id: Ic4b9f621cbc080d224c2233cf3ca3454fc0f19bd
udioSystem.cpp
0049acfc8b1c33eb90afc925dacd08a487618e17 10-Jan-2012 Glenn Kasten <gkasten@google.com> Fix bug in JetPlayer::loadFromFile

A long pathname would corrupt the heap due to incorrect use of strncpy.

Also was using hard-coded constant 256 instead of PATH_MAX.

Change-Id: Iba382bbb38624fbc41fec91449f9814f77d4ac0d
etPlayer.cpp
930f4caa1e311ef7ff538c421a324396157eb24f 07-Jan-2012 Glenn Kasten <gkasten@google.com> Simplify range check for audio_mode_t

AudioSystem::setMode previously allowed negative modes, but these were
then rejected by AudioFlinger.

Now negative modes (including AUDIO_MODE_INVALID and AUDIO_MODE_CURRENT)
are explicitly disallowed.

Change-Id: I0bac8fea737c8eb1f5b6afbb893e48739f88d745
udioSystem.cpp
5c7b3bcc88e2b472f1f7b416d89222714b96a567 09-Jan-2012 Glenn Kasten <gkasten@google.com> Merge "Clean up AudioTrack::mActive and stopped()"
29357bc2c0dd7c43ad3bd0c8e3efa4e6fd9bfd47 06-Jan-2012 Steve Block <steveblock@google.com> 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
udioEffect.cpp
udioRecord.cpp
udioSystem.cpp
udioTrack.cpp
AudioFlinger.cpp
MediaDeathNotifier.cpp
etPlayer.cpp
ediaProfiles.cpp
ediaScannerClient.cpp
etadata.cpp
oneGenerator.cpp
isualizer.cpp
ediametadataretriever.cpp
ediaplayer.cpp
ediarecorder.cpp
1099586bd48a8a90bb1cc4e7c279703bc7259214 03-Jan-2012 Glenn Kasten <gkasten@google.com> Declare IAudioTrack methods in binder opcode order

This makes it easier to match up the declarations.

Change-Id: I0996c20b2903b778b356dfe52b07b0ec634855dd
AudioTrack.cpp
5ff1dd576bb93c45b44088a51544a18fc43ebf58 06-Jan-2012 Steve Block <steveblock@google.com> 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
udioEffect.cpp
udioRecord.cpp
udioSystem.cpp
udioTrack.cpp
AudioRecord.cpp
AudioTrack.cpp
MediaDeathNotifier.cpp
OMX.cpp
ediaProfiles.cpp
ediaScanner.cpp
oneGenerator.cpp
ediametadataretriever.cpp
ediaplayer.cpp
e1c3962e268ffc12bfd1bd9ea84da1f135f36960 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
udioTrack.cpp
MediaPlayerService.cpp
etPlayer.cpp
ediaplayer.cpp
9a2aaf927e56a4b4acab23ef16b3f133a9f48a63 03-Jan-2012 Glenn Kasten <gkasten@google.com> Clean up AudioTrack::mActive and stopped()

mActive is protected by mLock; volatile is meaningless on SMP.

Fixed a couple of places where mActive was accessed without a lock:
- stopped()
- processAudioBuffer()

Added stopped_l() for cases where we already hold the lock.

Made mActive a bool not int.

Moved down a lock in setPosition that was being acquired too early.

Change-Id: I73ff368e991c0db9f9472df0b3f96fd33fcc7311
udioTrack.cpp
a2a0a5d7d56baa831870f4bf2a0d942a477d92ef 05-Jan-2012 Glenn Kasten <gkasten@google.com> Merge "Use the standard CC_LIKELY and CC_UNLIKELY macros"
f6b1678f8f508b447155a81b44e214475ab634a8 15-Dec-2011 Glenn Kasten <gkasten@google.com> Use the standard CC_LIKELY and CC_UNLIKELY macros

Several source files privately defined macros LIKELY and UNLIKELY in terms
of __builtin_expect. But <cutils/compiler.h> already has CC_LIKELY and
CC_UNLIKELY which are intended for this purpose. So rename the private
uses to use the standard names.

In addition, AudioFlinger was relying on the macro expanding to extra ( ).

Change-Id: I2494e087a0c0cac0ac998335f5e9c8ad02955873
udioRecord.cpp
udioTrack.cpp
b8a805261bf0282e992d3608035e47d05a898710 20-Dec-2011 Steve Block <steveblock@google.com> Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/156016

Bug: 5449033
Change-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298
udioSystem.cpp
ediaScanner.cpp
ediaplayer.cpp
42968939dfce0954d6540011199045ec4ed7de80 15-Dec-2011 Glenn Kasten <gkasten@google.com> Merge "Fix indentation and whitespace"
2eda60a8485cfe70a60e72156beffdc470ecb093 15-Dec-2011 Glenn Kasten <gkasten@google.com> Merge "Audio C++ comments"
c5ac4cb3a5124860ccfc7e4ff66251c55a5595ca 12-Dec-2011 Glenn Kasten <gkasten@google.com> Fix indentation and whitespace

Use git diff -w to verify.

Change-Id: Ib65be0a1ecf65d6cad516110604e3855bf68a638
udioTrack.cpp
1d334101f1289cf4c8967af6e78ac22619175982 15-Dec-2011 Glenn Kasten <gkasten@google.com> Merge "Remove unnecessary this->"
b299dc4ded29a226daac07f195d1558e660d2f9f 15-Dec-2011 Glenn Kasten <gkasten@google.com> Merge "Remove redundant clear()"
362c4e697d8e9c034e964ac7b40227e054491547 14-Dec-2011 Glenn Kasten <gkasten@google.com> Audio C++ comments

Change-Id: I84906ebb9dfcfa5b96b287d18364b407f02a30c1
udioTrack.cpp
91eb8bfbe253a6b6fe1aa23fb884a601c28991c4 13-Dec-2011 Glenn Kasten <gkasten@google.com> Remove redundant clear()

Change-Id: Ie5e4e63cbc8fa85ef50451dddf8f149fa864b132
udioTrack.cpp
9054897ab9ffb307fadae81b774a1fc61cb542e7 13-Dec-2011 Glenn Kasten <gkasten@google.com> Remove unnecessary this->

Change-Id: I72038f5d4568f0633d3e4ab90f4b67e2dd22c332
udioTrack.cpp
f0c495012bad92230604a9a12a907812ec49ee8f 30-Nov-2011 Glenn Kasten <gkasten@google.com> AudioTrack::setVolume check range

Change-Id: Ie182bf0f741f1f49f68c02a1e7437a2a34d34fc5
udioTrack.cpp
c089d02cf2bddf1bba6eaa2b2fcce149dc44633e 30-Nov-2011 Andreas Huber <andih@google.com> am 074133b2: am 351143fb: Merge "Updated (internal) API for IStreamSource to signal discontinuities" into ics-mr1

* commit '074133b260f8d12e484e93b9aa5a33a4983b7349':
Updated (internal) API for IStreamSource to signal discontinuities
bfcc8d8ab7c56bc013bd221a29e1ecf3a6390813 29-Nov-2011 Andreas Huber <andih@google.com> Updated (internal) API for IStreamSource to signal discontinuities

Change-Id: Idd4b9d8e7cec16b3e3c91c70e75144d42be30f96
related-to-bug: 5553055
StreamSource.cpp
6f5cc45c48c02173bfae8d54b54a92c9bae256a1 19-Nov-2011 Marco Nelissen <marcone@google.com> am d4b22ab4: status_t != bool

* commit 'd4b22ab4889f9b1885bfc0dc45667c846a171a98':
status_t != bool
91e2c7d2988c4947aca8a637f88a2179d905b970 18-Nov-2011 Marco Nelissen <marcone@google.com> status_t != bool

b/5567433

Change-Id: I255ab8c3b0b5e0ea6a5cc7c05df757c667f3855e
ediaScannerClient.cpp
153cefdf4acab25355f590d7760ebf73ef6096a9 18-Nov-2011 Marco Nelissen <marcone@google.com> status_t != bool

b/5567433

Change-Id: I255ab8c3b0b5e0ea6a5cc7c05df757c667f3855e
ediaScannerClient.cpp
528312c36a3ded860ead1a512df51663d03767ff 17-Nov-2011 Glenn Kasten <gkasten@google.com> Merge "JetPlayer uses C++ Thread not createThreadEtc"
a23856c0ad1f49a6ebcb71d3f63f329edc999a72 24-Jun-2011 Glenn Kasten <gkasten@google.com> JetPlayer uses C++ Thread not createThreadEtc

This permits leveraging future improvements to Thread.

Change-Id: I60deed8565ed54f13d9f770c76504e411b154276
etPlayer.cpp
879135196fd1c97deefc538c888037c56c2879a7 23-Jun-2011 Glenn Kasten <gkasten@google.com> Bug 4903178 Restore priority and cgroup on stop

On AudioTrack and AudioRecord stop or failed start, restore the priority
and cgroup of the caller to their previous values, rather than forcing
to NORMAL. Dependent on new thread APIs.

Also fixes bug where priority was set to AUDIO but cgroup not set.

Change-Id: Ib83893918fb4fdf57c6b87884b51038997a631d8
udioRecord.cpp
udioTrack.cpp
5c052218128013d630b4d9a84393ebfbff11f3e8 15-Nov-2011 Hong Teng <hongteng@google.com> am 716747f7: am 481ffa50: Merge "Fix for issue 5309336 -add videoeditor maximum prefetch YUV frames in media_profiles.xml to limit the total memory usage." into ics-mr1

* commit '716747f7cb29b45e41c2870f12d39095f4ed80c8':
Fix for issue 5309336 -add videoeditor maximum prefetch YUV frames in media_profiles.xml to limit the total memory usage.
3a9cefebd2c5d2157aefaed01c54f151dc64a5b3 10-Nov-2011 Hong Teng <hongteng@google.com> Fix for issue 5309336
-add videoeditor maximum prefetch YUV frames in media_profiles.xml to limit the total memory usage.

Change-Id: I41ffbc192fcce4c7635e5b0a1f2835852e5ee509
ediaProfiles.cpp
471af5aaea2d2491a77dba379771f7c96b9ca3c3 08-Nov-2011 Andreas Huber <andih@google.com> resolved conflicts for merge of 26f70db9 to master

Change-Id: Ib1536b1a4c9eeff80e0726b3e61cee12057cd120
3901e5d87573447db33fb9930871a1f5266a9b2c 25-Oct-2011 Andreas Huber <andih@google.com> Remove surface legacy APIs and code.

All surfaces are now supported through surface textures.

Change-Id: I95dd823e7099c0c32a48a1121624149dcc29d9c6
MediaPlayer.cpp
ediaplayer.cpp
4b8bb4ee7d1d64dc1cd5478a3772f97e4a4a00d7 28-Oct-2011 Jamie Gennis <jgennis@google.com> am fc9592f8: am 08479cee: Merge "Stagefright: ANW::connect in MediaPlayerService" into ics-mr0

* commit 'fc9592f8a5f2f75207e5e532655ac294eb2b334b':
Stagefright: ANW::connect in MediaPlayerService
7dae00baa6e8957be15523c46bb948bd1dde64c3 27-Oct-2011 Jamie Gennis <jgennis@google.com> Stagefright: ANW::connect in MediaPlayerService

This change moves the ANativeWindow connect and disconnect logic from
MediaPlayer to MediaPlayerService::Client.

Bug: 5502654
Change-Id: Ifc43b98b01ad8f35d62d7ece43110724ec7fda3d
ediaplayer.cpp
3856b090cd04ba5dd4a59a12430ed724d5995909 20-Oct-2011 Steve Block <steveblock@google.com> 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
udioEffect.cpp
udioParameter.cpp
udioRecord.cpp
udioSystem.cpp
udioTrack.cpp
AudioFlinger.cpp
AudioFlingerClient.cpp
Effect.cpp
EffectClient.cpp
MediaDeathNotifier.cpp
MediaMetadataRetriever.cpp
MediaRecorder.cpp
etPlayer.cpp
ediaProfiles.cpp
ediaScanner.cpp
oneGenerator.cpp
isualizer.cpp
ediametadataretriever.cpp
ediaplayer.cpp
ediarecorder.cpp
b1d666f5cb555d135eb69e005e88a03330bbb54c 20-Oct-2011 Jamie Gennis <jgennis@google.com> Stagefright: idle OMX after ANW errors

This change fixes an issue in Stagefright where the state of an OMXCodec
object can get out of sync with the state of the OMX component. In
particular, if one of the ANativeWindow functions failed and put the
OMXCodec into the ERROR state, this would cause Stagefright to skip
doing the Executing -> Idle transition. Without this transition the
freeBuffersOnPort call would never be made, and the MediaBuffers would
end up being leaked (which would also leak the Gralloc buffers they
reference).

Bug: 5333695
Change-Id: I85ea0cf92d18e7ef6d35c7d1e2a7b4e2c9745d34
OMX.cpp
669012d77b00a2aacb6fd12837f2870f9ec17865 20-Sep-2011 James Dong <jdong@google.com> Add QVGA resolution to CamcorderProfile

Change-Id: Icebbafb68d8164370f98a2c36699845d10ef081b
related-to-bug: 5145483
ediaProfiles.cpp
6de6b48237423a65ec041288c90e3f78fd3fce48 14-Sep-2011 Eric Laurent <elaurent@google.com> Merge "Issue 5298399: Lost speech after a crash in gTalk."
cfe2ba6b01a258e39f9c215ffc7b750e0b68f708 14-Sep-2011 Eric Laurent <elaurent@google.com> Issue 5298399: Lost speech after a crash in gTalk.

Fixed problem in AudioTrack::restoreTrack_l() causing a permanent
failure if the IAudioTrack interface to AudioFlinger could not be
restored at the first attempt.

Change-Id: I039d4fe2dca8d3baf71f1a6c51119f27a67b6611
udioTrack.cpp
fb6f03425a791dcc4188462c860becf6ca6be4ea 08-Sep-2011 Guang Zhu <guangzhu@google.com> Make MediaScanner skip certain directories

The list of directories to skip are configurable via setprop.
The main motivation is that some test data folder takes long time
to scan, and media scanner may compete for CPU time against perf
tests therefore skewing the results.

Bug: 5263115
Change-Id: I568213e2a4babf6033021c1d336ef0347c0e3315
ediaScanner.cpp
98afd841e8f0803a00d1970e4a28ea8999e9c498 09-Sep-2011 Eric Laurent <elaurent@google.com> Merge "AudioTrack: extend callback thread sleep time"
2267ba18d0d2b2d4bd7f5411821ad89ac2659a88 07-Sep-2011 Eric Laurent <elaurent@google.com> AudioTrack: extend callback thread sleep time

Do not force wake up the AudioTrack thread every 10ms if no timed
events (loop, markers..) have to be processed.
This will help reduce power consumption.

Change-Id: Icb425b13800690008dd07c27ffac84739e3dbba3
udioTrack.cpp
8d65510a2e9ff7b64f2f35bfe3cd745a717c9533 07-Sep-2011 Glenn Kasten <gkasten@google.com> Bug 5270905 fix MediaPlayer with IStreamSource

Change-Id: Ia8a6381a6c88b4a0a1378aab03f5275f0fa1125a
MediaPlayer.cpp
a4f73a9e0e0863a567cc06defa0d9e0269388d4e 06-Sep-2011 Eric Laurent <elaurent@google.com> Merge "Issue 5247986: Battery drain due to audio wakelock"
408b8dc3c0a364c6f6b4991d15da9e6bcc2b8008 06-Sep-2011 Eric Laurent <elaurent@google.com> Issue 5247986: Battery drain due to audio wakelock

The problem occurs when activating or deactivating A2DP connection
while SoudPool has a channel active. This can happen quite frequently now
that the UI sound effects are enabled by default.
If PCM data is remaining in the AudioTrack buffer when it is restroyed and
re-created on the new AudioFlinger output thread, this data is flushed.
As a consequence, no underrun or request for new data callback is sent to
SoundPool and the sound channel remains active for ever as the end of the
sample is never detected.

Change-Id: I13e0c11e4ce3f83bff7f58d347ca814b6a86712b
udioTrack.cpp
0662067b06658a4a56a8416c676f6cce8ccddb53 06-Sep-2011 Dave Burke <daveburke@google.com> Handle setDataSource failures properly. #5261671

Change-Id: Iea0aa474d1939db23da9aabdfae2081e834f30d9
ediaplayer.cpp
71b63e3ef687c379368be6b02e70bd2feb0b6b8d 02-Sep-2011 Eric Laurent <elaurent@google.com> Fix issue 5252593: any app can restart the runtime

Replace null device address string by empty sting.

Change-Id: I285c35f3345334e6d2190493b1a8a5aca1a361a4
udioSystem.cpp
d681bbb1767bed09415e050ba78975df214bcd68 30-Aug-2011 Dave Burke <daveburke@google.com> Require INTERNET permission for network-based content.
Bug #1870981

Change-Id: Ia3ad166390c4d60cea19c3783895b078a2c4c15f
MediaPlayer.cpp
MediaPlayerService.cpp
ediaplayer.cpp
9f6530f53ae9eda43f4e7c1cb30d2379db00aa00 30-Aug-2011 Eric Laurent <elaurent@google.com> 226483: A2DP connected, but music out to speaker

When the A2DP headset is connected, there is a possible
race condition when the audio tracks are moved from
the mixer thread attached to the speaker output to the thread
attached to A2DP output.
As the request to clear the stream type to output mapping cache in
the client process is asynchronous, it is possible that the flag
indicating to the client audio track to re-create the IAudioTrack
on the new thread is processed before the cache is invalidated.
In this case, the track will be attached to the old thread and
music will continue playing over the device speaker instead of being
redirected to A2DP headset.

Change-Id: Ib2ce1eb5320eaff83287b93779061bf4e7a330df
udioSystem.cpp
udioTrack.cpp
cd07594333cbe8b2c86c6609cce01a74d6cc33f8 26-Aug-2011 Jean-Michel Trivi <jmtrivi@google.com> Bug 4364249 Play position is 0 after flushing AudioTrack

AudioTrack::stop() is not synchronous, so a stop() followed
by flush(), which is synchronous, will not always report
a playhead position of 0 after being called.
This CL adds a flag to mark a track as flushed, and report the
correct playhead position in this state.
Bug 5217011 has been created to address the real issue in the
future, where flush could be made synchronous, to properly
address bug 4364249.

Change-Id: Icf989d41a6bcd5985bb87764c287f3edb7e26d12
udioTrack.cpp
8f74b712fbf5c24de8bc799b7129dc802747a6f4 13-Aug-2011 Rajneesh Chowdury <rajneeshc@google.com> Fix for 4142219 Don't hard code platform-specific limitations (Jni/ Java)

Also fixes 5118207 add other video codec support for video editor export.

Change-Id: If72427173bd8ff684af07ba00f4425c1deef29c6
ediaProfiles.cpp
db7c079f284f6e91266f6653ae0ec198b1c5006e 10-Aug-2011 Eric Laurent <elaurent@google.com> Audio effects: track CPU and memory use separately

Before this change, CPU and memory usage for an audio effect were
registered and checked against the limit by audio policy manager
upon effect instantiation. Even if an effect was not enabled
it would prevent another effect to be created if the CPU load budget
was exceeded, which was too restrictive.

This change adds a method to register/unregister CPU load only when
an effect is enabled or disabled.
It also adds a mechanism to place all effects on the global output mix
in suspend state (disabled) when an effect is enabled on a specific session.
This will allow applications using session effects to have the priority
over others using global effects.

Also fixes some issues with suspend/restore mechanism:
- avoid taking actions when an effect is disconnected and was not enabled.
- do not remove a session from the suspended sessions list when corresponding
effect chain is destroyed.

Change-Id: I5225278aba1ae13d0d0997bfe26a0c9fb46b17d3
udioSystem.cpp
AudioPolicyService.cpp
3a34befc6fb04a4945a849e8bda8b84e4bf973fe 02-Aug-2011 Marco Nelissen <marcone@google.com> Keep effects sessions active when the caller dies.

Don't remove effects until the session they are in goes away or all
AudioEffects have been explicitly released. This allows the control
panel process to die without stopping the effects.

Change-Id: I4496e5df080230ca1af149dec95c1309ab8ea888
udioRecord.cpp
udioSystem.cpp
udioTrack.cpp
AudioFlinger.cpp
ediaplayer.cpp
746d7c7f577b549b8a56862b73ae4f4f1247c593 02-Aug-2011 Gloria Wang <gwang@google.com> Merge "Fix ordering assumption of argument evaluation."
c3da3434cb57f47284ea06bb9065eaa2fe033efb 30-Jul-2011 Mathias Agopian <mathias@google.com> connect/disconnect is now called from our EGL wrapper

the original connect/disconnect hooks are deprecated
and replace by api_connect/api_disconnect. the original
hooks are no no-ops.
api_connect/api_disconnect is now only called from the
android framework.

Bug: 5057915
Change-Id: I8ca64cd1acd6cabf915bf54689ec2e5f6dfa495a
ediaplayer.cpp
de162ff337723798381890151247b129c4fbe314 01-Aug-2011 Gloria Wang <gwang@google.com> Fix ordering assumption of argument evaluation.

No specific order is specified in the C++ standard, but the order of
the calls to Parcel read commands matters. Move any calls with multiple
reads to local variables.

Fix for bug 5104979.

Change-Id: I709aa040e990d2659e7a3a089f7a42ae812de9ff
MediaPlayer.cpp
d1a243e41caffa8fd346907eed4625c9c47c1a86 27-Jul-2011 Eric Laurent <elaurent@google.com> AudioRecord: Fix getInput()

AudioRecord::getInput() was issuing a query to get a new input stream from
audio policy service instead of returning the cached input stream in AudioRecord.

Change-Id: Ice324b7c60bc0898149023797bcb56a72091b9d3
udioRecord.cpp
6e6e8a6cc9ab99ab299929fa0246e6ced64f8ce3 25-Jul-2011 Eric Laurent <elaurent@google.com> Merge "Added APIs for audio preprocessing"
57dae99c9fcd6becd2b5ed0c53f277ba4d7dbcfc 24-Jul-2011 Eric Laurent <elaurent@google.com> Added APIs for audio preprocessing

Added APIs to control pre processes applied on captured audio.
Those APIs are still hidden until reviewed by API council.

Three types of standard pre processes are supported:
- Automatic Gain Control (AGC) by AutomaticGainControl class
- Acoustic Echo Cancellation (AEC) by AcousticEchoCanceler class
- Noise Suppression (NS) by NoiseSuppressor class

A method is added to AudioEffect class to query audio pre processings
applied by default by the platform on a given AudioRecord session ID.

Change-Id: I0b9fceeb8c704dd06319c3b52b85c96fe871d51d
udioEffect.cpp
AudioPolicyService.cpp
3cecf640c4daf2df616b278bd9986018c8182908 30-Jun-2011 James Dong <jdong@google.com> Do not support still image capture mode for timelapse video recording

related-to-bug: 4973779

Change-Id: Ica665217ab10247b2242acc4e93d4fe9f83e3f45
MediaRecorder.cpp
ediarecorder.cpp
b33f3407bab0970a7f9241680723a1140b177c50 02-Jul-2011 Pannag Sanketi <psanketi@google.com> Connect MediaRecorder Native to SurfaceMediaSource

Making a connection from MediaRecorder Native layer to the
SurfaceMediaSource for the purpose of encoding GL Frames. This will be
called from the java side inside the Mobile Filter Framework.

The mediarecorder native layer (client), when set the videosource to
option VIDEO_SOURCE_FRAMES, asks the StageFrightRecorder on the mediaserver
side to create a SurfaceMediaSource object and pass it back as a
sp<ISurfaceTexture> object. Using that, the client side will dequeue and
queue buffers. Connecting the GL Frames to the obtained
sp<ISurfaceTexture> is not part of this CL.

Related to bug id: 4529323

Change-Id: I651bec718dd5b935779e7d7a050b841c2d0b0fcd
MediaRecorder.cpp
ediarecorder.cpp
5bc965b1ff21c64e5f30130957bfe96300e15ed3 22-Jul-2011 James Dong <jdong@google.com> Merge "Log setVideoSurface() and setVideoSurfaceTexture() failures."
fada58a21be01913a8e3f25c898d26d2fc8ba630 22-Jul-2011 James Dong <jdong@google.com> Log setVideoSurface() and setVideoSurfaceTexture() failures.

Change-Id: Iaea34e74a0cf569fc85b926949253dea6baa6142
related-to-bug: 5063370
ediaplayer.cpp
a1d92359056176b6f6646efc918e0587e3de2b6f 21-Jul-2011 Hong Teng <hongteng@google.com> Merge "fix for issue 4142219 Don't hard code platform-specific limitations-jni/java part"
3a1f8a404b38aaa82d57c77cb83e48665e66e553 21-Jul-2011 Jeff Brown <jeffbrown@google.com> Merge "Untangle MediaScanner error handling. Bug: 5056917"
0cd7889d37cc60300dceaa975dab041fd35e34fd 21-Jul-2011 Eric Laurent <elaurent@google.com> Merge "Audio framework: support for audio pre processing"
7188e55f54a43c55fd6b96454720c447f1dc454e 21-Jul-2011 Jeff Brown <jeffbrown@google.com> Untangle MediaScanner error handling.
Bug: 5056917

Change-Id: I1a7a73579e3ba4e9709459329fc1901a28b0f4b1
ediaScanner.cpp
ediaScannerClient.cpp
cabd5f867ec69c0dfe8333cba46323cb58917402 07-Jul-2011 Hong Teng <hongteng@google.com> fix for issue 4142219
Don't hard code platform-specific limitations-jni/java part

Change-Id: Icde261b1caf29a8cf552884c97f3c9d0b41741a3
ediaProfiles.cpp
bea47bc22b2939b324b47fd0d70e6c7e6fbc82d2 19-Jul-2011 Jamie Gennis <jgennis@google.com> MediaPlayer: add a disconnect from ANativeWindow

This change makes MediaPlayer::disconnect disconnect from the
ANativeWindow once the player has been disconnected.

Change-Id: I6744559030d1edc520cf77402d1f5ce841742340
ediaplayer.cpp
4a621e6d3438876eb1d9001719c688a2329ee675 19-Jul-2011 Jamie Gennis <jgennis@google.com> Merge "MediaPlayer: add ANativeWindow (dis)connect calls"
7c7f10bd4fda9a084e5e7f0eb3a040dfcbf01745 18-Jun-2011 Eric Laurent <elaurent@google.com> Audio framework: support for audio pre processing

Audio effect framework is extended to suport effects on
output and input audio path.

AudioFlinger: Support for audio effects and effect chains is
moved from PlaybackThread class to ThreadBase class so that
RecordThread can manage effects.
Effects of type pre processing are allowed on record thread
only. When a pre processing is enabled, the effect interface handle is
passed down to the input stream so that the audio HAL can call the
process function. The record thread loop calls the effect chain process
function that will only manage the effect state and commands and skip the
process function.

AudioRecord: The audio session is allocated before calling getInput() into
audio policy serice so that the session is known before the input theead is
created and pre processings can be created on the correct session.

AudioPolicyService: default pre processing for a given input source are
loaded from audio_effects.conf file.
When an input is created, corresponding effects are created and enabled.

Change-Id: Id17119e0979b4dcf189b5c7957fec30dc3478790
udioEffect.cpp
udioRecord.cpp
udioSystem.cpp
AudioPolicyService.cpp
61c7ef5bde2c7ed94a078396aa65da67b47e5402 13-Jul-2011 Jamie Gennis <jgennis@google.com> MediaPlayer: add ANativeWindow (dis)connect calls

This change makes MediaPlayer connect to the ANativeWindow to which it
is going to render video frames and disconnect when it is done.

Change-Id: I88ab5c2fe62493aabdc84a283ff31634f795d415
ediaplayer.cpp
42e549e4ab54802d788c43e3a04a85b7a1a95e97 13-Jul-2011 Andreas Huber <andih@google.com> Enable signalling of a stream discontinuity involving a format-change

through IStreamListener.

Change-Id: Ic0409cdc4891ad26b61f2f98bdda3c7fb2e2de6a
related-to-bug: 5022434
StreamSource.cpp
5e0067b486c3862316aa1f293cf9690c0cf54bda 12-Jul-2011 Jeff Brown <jeffbrown@google.com> Remove the simulator target from all makefiles.
Bug: 5010576

Change-Id: I04d722f258951a3078fe07899f5bbe8aac02a8e8
ndroid.mk
6d8b694d999e9be7d5dcc336535832a80fb6f61f 24-Jun-2011 Eric Laurent <elaurent@google.com> Moved and renamed effect API header files

Moved specific effect header files to
system/media/audio_effects/include/audio_effects
and renamed to lower case (effect_xxx.h).

Change-Id: Icfc2264bfd013cab0395d7e310ada636b9fe3621
ndroid.mk
isualizer.cpp
4ca2c7c913f8bd4ada13aca56d36045d42d1e00f 01-Jun-2011 Wu-cheng Li <wuchengli@google.com> Add framework support for camcorder zoom.

The purpose of ICameraRecordingProxy and ICameraRecordingProxyListener is to
allow applications using the camera during recording.

Camera service allows only one client at a time. Since camcorder application
needs to own the camera to do things like zoom, the media recorder cannot
access the camera directly during recording. So ICameraRecordingProxy is a proxy
of ICamera, which allows the media recorder to start/stop the recording and
release recording frames. ICameraRecordingProxyListener is an interface that
allows the recorder to receive video frames during recording.

ICameraRecordingProxy
startRecording()
stopRecording()
releaseRecordingFrame()

ICameraRecordingProxyListener
dataCallbackTimestamp()

The camcorder app opens the camera and starts the preview. The app passes
ICamera and ICameraRecordingProxy to the media recorder by
MediaRecorder::setCamera(). The recorder uses ICamera to setup the camera in
MediaRecorder::start(). After setup, the recorder disconnects from camera
service. The recorder calls ICameraRecordingProxy::startRecording() and
passes a ICameraRecordingProxyListener to the app. The app connects back to
camera service and starts the recording. The app owns the camera and can do
things like zoom. The media recorder receives the video frames from the
listener and releases them by ICameraRecordingProxy::releaseRecordingFrame.
The recorder calls ICameraRecordingProxy::stopRecording() to stop the
recording.

The call sequences are as follows:
1. The app: Camera.unlock().
2. The app: MediaRecorder.setCamera().
3. Start recording
(1) The app: MediaRecorder.start().
(2) The recorder: ICamera.unlock() and ICamera.disconnect().
(3) The recorder: ICameraRecordingProxy.startRecording().
(4) The app: ICamera.reconnect().
(5) The app: ICamera.startRecording().
4. During recording
(1) The recorder: receive frames from ICameraRecordingProxyListener.dataCallbackTimestamp()
(2) The recorder: release frames by ICameraRecordingProxy.releaseRecordingFrame().
5. Stop recording
(1) The app: MediaRecorder.stop()
(2) The recorder: ICameraRecordingProxy.stopRecording().
(3) The app: ICamera.stopRecording().

bug:2644213

Change-Id: I15269397defc25cbbcae16abc071c8349c123122
MediaRecorder.cpp
ediarecorder.cpp
8e51d58fca9b7669f271378f9245e180f4360cbc 23-Jun-2011 Gloria Wang <gwang@google.com> - Public part of the Metadata API.
- Modify the media framework test for Metadata.

Change-Id: Ib8fa4991f114e1bb88a17ca662844b9b8e1d0faf
etadata.cpp
68cbeba4e21aa53f52fb99b74dfa1910af31a3eb 23-Jun-2011 Glenn Kasten <gkasten@google.com> Merge "Fix warnings for uninitialized local variables"
eddf9ef9235608e0231379a7bc614853bf5bcfa3 23-Jun-2011 Eric Laurent <elaurent@google.com> Merge "Added audio_bytes_per_sample() helper function"
d0965dde97f2815ae0a15fe6b40946f8a741a81e 23-Jun-2011 Glenn Kasten <gkasten@google.com> Fix warnings for uninitialized local variables

Change-Id: Ic9b03b0fd215444e76c7b7bebb385f7831c557e0
udioRecord.cpp
udioTrack.cpp
671a636931295d9c33ffca74551a804479d01241 17-Jun-2011 Eric Laurent <elaurent@google.com> Added audio_bytes_per_sample() helper function

Change-Id: Ibfcd75c4c241a53d5f052c25ada091904991048a
udioRecord.cpp
udioTrack.cpp
b8e9897b8ad5d722e424d7a7e256153307ecbd93 15-Jun-2011 Glenn Kasten <gkasten@google.com> Remove unneeded #include <sys/resource.h>

Suggested in code review for previous change.

Change-Id: Ic3225b240367dc6c9bf56fb4498fb8a0f9f806ec
oneGenerator.cpp
7394a4f358fa9908a9f0a7c954b65c399f4268e6 14-Jun-2011 Dima Zavin <dima@android.com> audio: update for audio/audio_policy header names/locations

Change-Id: I36c49352eee57559403cd1597f56a8485a360289
Signed-off-by: Dima Zavin <dima@android.com>
udioTrack.cpp
62dfda30f41d33682ee96038c404ab59995684e0 10-Jun-2011 Dianne Hackborn <hackbod@google.com> am 15e9d474: am 88748e6d: am d86302df: Quiet the log.

* commit '15e9d474d1033adbedc8632309df26c3d6dfaee3':
Quiet the log.
767ad02b2ca9e6ad02b8cf56098cffad52970642 10-Jun-2011 Dianne Hackborn <hackbod@google.com> Quiet the log.

Change-Id: Ie814b579997bb555eae014c22da0f41f1a46940f
ediaScanner.cpp
0512ab559d4670c2204078470d7ef5d376811c57 05-May-2011 Glenn Kasten <gkasten@google.com> Remove dead code related to gettid

The gettid system call is always available now.

Change-Id: Ib78b41781eda182dc8605daf456bbea7ff7c2dc0
udioSystem.cpp
MediaMetadataRetriever.cpp
etPlayer.cpp
c6854100cea4fcd0f20cb2ac8235c02d1849b3a1 02-Jun-2011 Glenn Kasten <gkasten@google.com> Remove unnecessary level of priority indirection

Change-Id: I942d43973c20a7ace8b0d3f78b4da97e45e996c6
udioRecord.cpp
udioTrack.cpp
d217a8c4632b3e3065f8c2a26b9ce4dc4c97171f 02-Jun-2011 Glenn Kasten <gkasten@google.com> Revert "Use AudioTrack::event_type not int in callback"

This reverts commit 2225e4b7049fa3fb9d39a068b8268b63c952d7c1
oneGenerator.cpp
013b5a67d6f8e12a1b06e74863daec1bee4d99c1 05-May-2011 Glenn Kasten <gkasten@google.com> Use AudioTrack::event_type not int in callback

Change-Id: Ifefc708d46874e04fd0d01cb6e2d43b987ee796c
oneGenerator.cpp
0d255b2d9061ba31f13ada3fc0f7e51916407176 25-May-2011 Jean-Michel Trivi <jmtrivi@google.com> Use channel mask instead of channel count for track creation

Record and playback objects (resp AudioRecord and AudioTrack)
are created using a channel mask, but this information is lost
in the mixer because only the channel count is known to
AudioFlinger. A channel count can always be derived from a
channel mask.

The change consists in:
- disambiguiting variable names for channel masks and counts
- passing the mask information from the client to AudioFlinger
and the mixer.
- when using the DIRECT ouput, only verifying the format of
the track is compatible with the output's for PCM.

Change-Id: I50d87bfb7d7afcabdf5f12d4ab75ef3a54132c0e
udioRecord.cpp
udioTrack.cpp
AudioFlinger.cpp
65580f9adf6c4d98449ad0716488f9fe3869aa5a 28-May-2011 Eric Laurent <elaurent@google.com> Removed interface to load audio effects libraries

Removed unused functions allowing dynamic loading of audio effects libraries
from effects factory API.

Change-Id: I06cc5a51dc10aca87c7a8687bbb874babd711eca
udioEffect.cpp
AudioFlinger.cpp
9b1e4f1a18ac2489e24b4272a0a7ccfd0018efcc 14-May-2011 James Dong <jdong@google.com> Merge "Add support for platform-specific recording start time offset"
64760240f931714858a59c1579f07264d7182ba2 11-May-2011 Dima Zavin <dima@android.com> update for new audio.h header location

Change-Id: Ic4c62c4037800802427eb7d3c7f5eb8b25d18876
Signed-off-by: Dima Zavin <dima@android.com>
udioRecord.cpp
udioSystem.cpp
udioTrack.cpp
AudioPolicyService.cpp
ediaplayer.cpp
0f056290cb16763453f18bbef80cde673041dbbc 10-May-2011 James Dong <jdong@google.com> Add support for platform-specific recording start time offset

o This start time offset is used in the media framework to eliminate
the recording sound in the recorded file.

Change-Id: I97926a74f0743b8a4f985d51334e8d1486a318ea
related-to-bug: 4390777
ediaProfiles.cpp
1a65546a55d019335655464ad895361ba9f89252 02-May-2011 Mike Lockwood <lockwood@android.com> DO NOT MERGE MediaScanner: Fix bug in "no media" handling logic

Don't let the "no media" status of one directory leak to the remaining files
and directories in the same parent.

Bug: 4364077

Change-Id: Ie756ccd06b1962b06143fc02a1a3927c3aba143a
Signed-off-by: Mike Lockwood <lockwood@android.com>
ediaScanner.cpp
462accab9dbcf8d1597de999328fa74337b3b88c 24-Apr-2011 Mike Lockwood <lockwood@android.com> DO NOT MERGE MediaScanner: reimplement the ".nomedia" feature for hiding files from the media provider

Previously we ignored any files and directories that had name started with '.'
and ignored any directories that contained a ".nomedia" file.
Now to support transferring any file via MTP, we now add these previously ignored files
to the media database, but will not mark them as audio, video, image or playlist files.
That way they will be included in the files table but will be hidden from the
audio, video, images and playlist views that are used by apps like Music and Gallery.

Bug: 3405327

Change-Id: Ibb37bb2856a0684ce9f685ed565ad35347622834
Signed-off-by: Mike Lockwood <lockwood@android.com>
ediaScanner.cpp
c777a8526a6517e5fbfa713651da280fd1bdd502 02-May-2011 Mike Lockwood <lockwood@android.com> MediaScanner: Fix bug in "no media" handling logic

Don't let the "no media" status of one directory leak to the remaining files
and directories in the same parent.

Bug: 4364077

Change-Id: I30943222dc292818cff00ee8169be7a695eed174
Signed-off-by: Mike Lockwood <lockwood@android.com>
ediaScanner.cpp
4f9e47f2c03ce36261c4717cd7e131d7940bb068 26-Apr-2011 Gloria Wang <gwang@google.com> Add setParameter/getParameter to MediaPlayer API.
for bug 1982947

Change-Id: If3f40e4f18cbba155af29944af38bdc627f8cd53
MediaPlayer.cpp
ediaplayer.cpp
fce7a473248381cc83a01855f92581077d3c9ee2 20-Apr-2011 Dima Zavin <dima@android.com> audio/media: convert to using the audio HAL and new audio defs

Change-Id: Ibc637918637329e4f2b62f4ac7781102fbc269f5
Signed-off-by: Dima Zavin <dima@android.com>
udioRecord.cpp
udioSystem.cpp
udioTrack.cpp
AudioPolicyService.cpp
etPlayer.cpp
oneGenerator.cpp
isualizer.cpp
ediaplayer.cpp
db5cb14318bb24cd6ea14ff7ceea0d5e1f83d903 20-Apr-2011 Dima Zavin <dima@android.com> libmedia: move AudioParameter out of AudioSystem

Change-Id: I9eb7e002d141936258050d4fa4f0ccd8202bfc54
Signed-off-by: Dima Zavin <dima@android.com>
ndroid.mk
udioParameter.cpp
udioSystem.cpp
f87d18a374f0275b1adb89a495931390f7407fd2 25-Apr-2011 James Dong <jdong@google.com> Merge "Return status code from invoke()"
c5182e31b23dc381d21ef43b7f7d682ffc54bd79 24-Apr-2011 Mike Lockwood <lockwood@android.com> MediaScanner: reimplement the ".nomedia" feature for hiding files from the media provider

Previously we ignored any files and directories that had name started with '.'
and ignored any directories that contained a ".nomedia" file.
Now to support transferring any file via MTP, we now add these previously ignored files
to the media database, but will not mark them as audio, video, image or playlist files.
That way they will be included in the files table but will be hidden from the
audio, video, images and playlist views that are used by apps like Music and Gallery.

Bug: 3405327

Change-Id: I2d7285bd32e06c1a5c4ef6a8a15f8f8b2c33b39b
Signed-off-by: Mike Lockwood <lockwood@android.com>
ediaScanner.cpp
b483c4724846c0b8d4e82afcbb7c17f671bae81c 12-Apr-2011 Gloria Wang <gwang@google.com> - Add another parameter in notify() to be able to send timed text sample
through listener during video playback.
- Add OnTimedTextListener in the MediaPlayer
For feature request 800939.

Change-Id: I65072c27acb4c0037109a72be38c73e9f667420f
MediaPlayerClient.cpp
ediaplayer.cpp
cc8ace7989f663fe6c6c1ed0febca0d9d1f19c7a 07-Apr-2011 Eric Laurent <elaurent@google.com> Do not disable effect in AudioEffect destructor.

Current implementation of AudioEffect class destructor disables
the effect before disconnecting from IAudioEffect interface.
This is problematic when more than one client has a handle on the same
effect engine as destroying one handle will disable the effect which is
not the intended behavior.

Change-Id: I10eacf981506469a7ef4eb9a1650813f0848de5d
udioEffect.cpp
040e4a14ef9cafd5d08d9a180e6237fb79687995 07-Apr-2011 James Dong <jdong@google.com> Return status code from invoke()

Change-Id: Ie64b418d2a1f44e07942399c285b460c68f8e14f
related-to-bug: 4199781
MediaPlayer.cpp
38ccae2c0324daa305f3fe77d25fdf5edec0b0e1 29-Mar-2011 Eric Laurent <elaurent@google.com> New fix for issue 4111672: control block flags

The first fix (commit 913af0b4) is problematic because it makes threads
in mediaserver process block on the cblk mutex. This is not permitted
as it can cause audio to skip or worse have a malicious application
prevent all audio playback by keeping the mutex locked.

The fix consists in using atomic operations when modifying the control
block flags.

Also fixed audio_track_cblk_t::framesReady() so that it doesn't block
when called from AudioFlinger (only applies when a loop is active).

Change-Id: Ibf0abb562ced3e9f64118afdd5036854bb959428
udioRecord.cpp
udioTrack.cpp
5f7fcf29a7475a20cf38bf72da67746135d504c3 26-Mar-2011 Mathias Agopian <mathias@google.com> merge libsurfaceflinger_client into libgui

this is the first step in unifying surfacetexture and surface.
for this reason the header files were not moved, as most of them
will eventually go away.

NOTE: currently we keep libsurfaceflinger_client.so as an empty
library to workaround prebuilt binaries wrongly linking against
it.

Change-Id: I130f0de2428e8579033dc41394d093f4e1431a00
ndroid.mk
0511969950188634f4212fcf63680c43207baedd 21-Mar-2011 Eric Laurent <elaurent@google.com> Merge "Fix issue 3483718: audio streaming and A2DP."
9b7d950f1f3b0c526712b713dbceb0e22762c015 21-Mar-2011 Eric Laurent <elaurent@google.com> Fix issue 3483718: audio streaming and A2DP.

The problem is that when switching from A2DP to device speakers or headset,
The AudioTrack binder interface to AudioFlinger must be destroyed and restored
to accomodate new buffer size requirements. Current AudioTrack implementation
did not restore properly the PCM buffer write index which caused a mismatch between
the written frame count in the mediaplayer renderer and the AudioTrack. The renderer
could then believe the AudioTrack buffer was full and stop writing data preventing the
AudioTrack to reach a bufffer full condition and resume playback.

The rendered was also modified to refresh the AudioTrack frame count (buffer size)
inside the write loop in NuPlayer::Renderer::onDrainAudioQueue() as this count can change
from one write to the next.

Also modified AudioTrack::obtainBuffer() to check for track invalidated status before
querying for available space in the buffer. This avoids writing to the old track's
buffer until full before detecting the invalidated condition and create a new track.

Change-Id: I16a857e464e466880847f52f640820aa271539ad
udioTrack.cpp
af8791e112c8072452bd14ef3c43a47511d19542 21-Mar-2011 Andreas Huber <andih@google.com> Support passing headers to MediaMetadataRetriever's setDataSource API

Change-Id: Ib1a5c08fc5034cac05034db27007a35c9b660b26
related-to-bug: 3506316
MediaMetadataRetriever.cpp
ediametadataretriever.cpp
1caf58cd652edab4e05bfef8ccaa1497c450f5e9 18-Mar-2011 Eric Laurent <elaurent@google.com> Merge "Fix issue 4111672: AudioTrack control block flags"
33797ea64d067dfeaacbfd7ebe7f3383b73961b5 17-Mar-2011 Eric Laurent <elaurent@google.com> Fix issue 4111672: AudioTrack control block flags

Make sure that all read/modify/write operations on the AudioTrack
and AudioRecord control block flags field are protected by the
control block's mutex.

Also fix potential infinite loop in AudioTrack::write() if the
written size is not a multiple of frame size.

Change-Id: Ib3d557eb45dcc3abeb32c9aa56058e2873afee27
udioRecord.cpp
udioTrack.cpp
c901f74404435cc1cf2717016e2b0092b6dcea24 17-Mar-2011 James Dong <jdong@google.com> am 782ffe91: am 9c0c5b56: am 2f1f2248: Fix missing AOSP copyright headers for a bunch of media framework files

* commit '782ffe91da665c6b1fb9e297faa6e0dc6035f40c':
Fix missing AOSP copyright headers for a bunch of media framework files
27c174483a8ae9688d5d4897c19074f62c7f1701 17-Mar-2011 James Dong <jdong@google.com> Fix missing AOSP copyright headers for a bunch of media framework files

bug - 4119349

Change-Id: If5924e16a5f596d5d73d9beb66eaf5ac9a6f0e50
OMX.cpp
c21359d332ea2ac5258f86e1cf46db9e0faf3e4b 16-Mar-2011 James Dong <jdong@google.com> resolved conflicts for merge of 1cbf8493 to master

Change-Id: Ifea2ba8b02ecf291fbd1612973647a95a70511c4
8031ec79eb657a0ae84325410578ea87f50eeb54 16-Mar-2011 James Dong <jdong@google.com> Add the default camera id to mCameraIds for emulator and those devices without media_profiles.xml configuration file.

bug - 4109530

Change-Id: Ib83be7a7f767a4b20ac338734ada1581e7a4c5bf
ediaProfiles.cpp
8635b7b095fbf7ffc63d3ce791891a9116ace1f6 15-Mar-2011 James Dong <jdong@google.com> Add memory leak tracking/debugging code to drm server

bug - 4099038

Change-Id: I6c048eaf3d7f34bc144b8daaa5fdef1ed474af66
ndroid.mk
emoryLeakTrackUtil.cpp
2aac40fe9d42a15dab0af6a0efea7a2468cd9e4f 09-Mar-2011 Eric Laurent <elaurent@google.com> am 2dc78477: am cc34967f: Merge "Fix issue 3439872: video chat and bluetooth SCO" into honeycomb-mr1

* commit '2dc78477364bd4accb9a603baaafca9a5523dcec':
Fix issue 3439872: video chat and bluetooth SCO
1703cdfee717b1b312bf8979816a9e2f16a82e5d 07-Mar-2011 Eric Laurent <elaurent@google.com> Fix issue 3439872: video chat and bluetooth SCO

This change fixes the stability problems experienced when using
a bluetooth headset supporting both A2DP and SCO. Problems occur
when starting the video chat at which time the A2DP output is being
stopped to start SCO. At that time, active AudioTracks are invalidated
by AudioFlinger so that a new AudioTrack binder interface can be
recreated by the client process on the new mixer thread with correct parameters.
The problem was that the process to restore the binder interface was not
protected against concurrent requests which caused 2 binder interfaces
to be created sometimes. This could lead to permanent client deadlock
if one of the client threads was waiting for a condition of the first
created binder interface while the second one was created (as the AudioFlinger
would only signal conditions on the last one created).
This concurrent request situation is more likely to happen when a client
uses the JAVA AudioTrack as the JNI implementation uses simultaneously the
native AudioTrack callback and write push mechanisms. By doing so, the code
that checks if the binder interface should be restored (in obtainBuffer()) is
much more likely to be called concurrently from two different threads.

The fix consists in protecting the critical binder interface restore phase
with a flag in the AudioTrack control block. The first thread acting upon the binder
interface restore request will raise the flag and the second thread will just wait for
a condition to be signaled when the restore process is complete.

Also protected all accesses to the AudioTrack control block by a mutex to prevent
access while the track is being destroyed and restored. If a mutex cannot be held
(e.g because we call a callback function), acquire a strong reference on the IAudioTrack
to prevent its destruction while the cblk is being accessed.

Modified AudioTrack JNI to use GetByteArrayElements() instead of
GetPrimitiveArrayCritical() when writing audio buffers. Entering a critical section would
cause the JNI to abort if a mediaserver crash occurs during a write due to the AudioSystem
callback being called during the critical section when media server process restarts.
Anyway with current JNI implementation, either versions do not copy data most of the times
and the criticial version does not guaranty no data copy.

The same modifications have been made to AudioRecord.

Change-Id: Idc5aa711a04c3eee180cdd03f44fe17f3c4dcb52
udioRecord.cpp
udioTrack.cpp
d3ee677783864d933cd8bc82c14666bd135d43bd 08-Mar-2011 James Dong <jdong@google.com> Add the default back-facing camera to the MediaProfile camera vector
As a result, missing media_profiles.xml will be still allowed.

Change-Id: Ie6c1bbfdfd4e971f1d5d0e031a913e757f3863a7
ediaProfiles.cpp
32f3cefa373cd55e63deda36ca9d07c7fe22eaaf 03-Mar-2011 Andreas Huber <andih@google.com> Allow optional specification of a PTS timestamp when signalling a discontinuity.

If present, rendering will be suppressed until reaching the timestamp.

Change-Id: Ic64bdf4225063c5a4d042ea9809960b843a46d19
related-to-bug: 3489454
StreamSource.cpp
2a7e0a1eb29306982fd77bdc64d324464a48a2b9 01-Mar-2011 James Dong <jdong@google.com> Get rid of redundant media profiles

bug - 3330679

Change-Id: Idc55aea32746c0c57552c5e15a289681421aa859
ediaProfiles.cpp
e2ce6458659c6e1bad420357b61dc10cd8bbe2ab 24-Feb-2011 Jamie Gennis <jgennis@google.com> Add an OMX IL API for querying buffer usage flags.

This change defines an OpenMAX IL API for querying from the IL component
the gralloc buffer usage flags that should be used to allocate the
buffers. It also adds the Stagefright plumbing for using the new OMX IL
API.

Change-Id: I046b5e7be70ce61e2a921dcdc6e3aa9324d19ea6
Related-Bug: 3479027
OMX.cpp
1173118eace0e9e347cb007f0da817cee87579ed 09-Feb-2011 Glenn Kasten <gkasten@google.com> Bug 3438258 Add SurfaceTexture as MediaPlayer sink

This change enables the use of a SurfaceTexture in place of a Surface
as the video sink for an android.media.MediaPlayer. The new API
MediaPlayer.setTexture is currently hidden.

This includes:
- New Java and C++ interfaces
- C++ plumbing and implementation (JNI, Binder)
- Stagefright AwesomePlayer and NuPlayer use ANativeWindow
(either Surface or SurfaceTextureClient)

Change-Id: I2b568bee143d9eaf3dfc6cc4533c1bebbd5afc51
ndroid.mk
MediaPlayer.cpp
ediaplayer.cpp
51b9a8b53eaa1a0188be95d4d6a749424787e0d6 23-Feb-2011 Gloria Wang <gwang@google.com> Merge "- Add method in MediaPlayerService to collect and pull codec usage (duration) for the battery app - Collect MediaPlayer decoding usage data"
7cf180c9bff69e5cc4a2f4e53b432db45ebbebab 20-Feb-2011 Gloria Wang <gwang@google.com> - Add method in MediaPlayerService to collect and pull
codec usage (duration) for the battery app
- Collect MediaPlayer decoding usage data

Change-Id: I0ef4e32b6a041ba1fe73c19f9c67185c61d03965
MediaPlayerService.cpp
f1d985081cff2a6aa2397c5341da8432db753211 22-Feb-2011 James Dong <jdong@google.com> Check file descriptor before passing it through binder calls

bug - 3476613

Change-Id: I858933fd2fe4c095c0bd58bf50344c47fc104be9
ediarecorder.cpp
6b2718c67aa7b1a8e3b0f25a73a0d5f72c59ffc3 04-Feb-2011 Glenn Kasten <gkasten@google.com> Bug 3352047 Wrong message when adjusting volume

Add hidden AudioManager.getDevicesForStream and output device codes.

Change-Id: I4d1c1d3b6a077cd117720817d1f733dda557b947
udioSystem.cpp
AudioPolicyService.cpp
eda6c364c253ba97ee45a3adeb8c2b45db1f81db 02-Feb-2011 Eric Laurent <elaurent@google.com> Fix issue 3371080

Modified default volume control logic in AudioService:
1 IN_CALL volume if in video/audio chat
2 NOTIFICATION if notification is playing or was playing less than 5s ago.
3 MUSIC

Modified silent mode:
- now also affect MUSIC stream type
- entering silent mode when VOL- hard key is pressed once while selected
stream volume is already at 0 (except for VOICE_CALL stream).
- exiting silent mode when pressing VOL+ hard key while in silent mode

Play sound FX (audible selections, keyboard clicks) at a fixed volume.

Modified audio framework:
- isStreamActive() method now implemented in AudioPolicyManagerBase (previously AudioFlinger)
- iStreamActive() now specifies a time window during which the stream is considered
active after it actually stopped.

Change-Id: I7e5a0724099450b9fc90825224180ac97322785f
udioSystem.cpp
AudioFlinger.cpp
AudioPolicyService.cpp
cce3a1107ef5bf9c8c8dbbaf922a2b33f24abfe6 29-Jan-2011 Marco Nelissen <marcone@google.com> am c929677e: Merge "Increase the number of useful bits in the spectrum." into gingerbread

* commit 'c929677e017759047d94599faa1b80ebe278fefb':
Increase the number of useful bits in the spectrum.
209821c7b7ead3ac58743d0a6d21dd05a2e77708 19-Jan-2011 Marco Nelissen <marcone@google.com> Increase the number of useful bits in the spectrum.

Change-Id: I3efc2ac8db689285566df35cb6f594aab41141db
isualizer.cpp
b391290130f263441334ee4525a5832f0bea2ef0 19-Jan-2011 Andreas Huber <andih@google.com> Make parameter blocks read/writable even for SET_PARAMETER/SET_CONFIG requests.

Refactor the logic a little.

Change-Id: Idd7a26678d846c96b0b11f096305e7467381bda3
OMX.cpp
95304d5488ba465f19cc788f1c7394218c2ea2d1 03-Dec-2010 James Dong <jdong@google.com> Squash commits of the following patches, cherry-picked from other branch - do not merge.

o Prepare for publishing MediaMetadataRetriever as public API
step one:
o replaced captureFrame with getFrameAtTime
o removed getMode

o Replace MediaMetadataRetriever.captureFrame() with MediaMetadataRetriever.getFrameAtTime()
as part of the preparation for publishing MediaMetadataRetriever as public Java API

o Remove captureFrame from MediaMetadataRetriever.java class
It has been replaced by getFrameAtTime() method

o Replace extractAlbumArt() with getEmbeddedPicture() in MediaMetadataRetriever.java

o Publish MediaMetadataRetriever.java as public API
o Removed setMode() methods and related mode constants
o Removed some of the unused the metadata keys
o Updated the javadoc
o part of a multi-project change.

bug - 3309041

Change-Id: I2efb6e8b8d52897186b016cb4efda6862f5584c4
MediaMetadataRetriever.cpp
ediametadataretriever.cpp
7f7d52ac18dfc3c6d8f6267dad29306613e9bd0e 06-Jan-2011 James Dong <jdong@google.com> Publish MediaMetadataRetriever.java as public API

o Removed setMode() methods and related mode constants
o Removed some of the unused the metadata keys
o Updated the javadoc

o part of a multi-project change.

bug - 2433195

Change-Id: I5ed167f1fd6a53cb143b7dc385b149431d434438
MediaMetadataRetriever.cpp
ediametadataretriever.cpp
145e68fc778275963189b02a1adcbe27cce4d769 12-Jan-2011 Andreas Huber <andih@google.com> Increase cache size and low-watermark threshold, also

MediaPlayer now sends out MEDIA_INFO,MEDIA_INFO_VIDEO_TRACK_LAGGING messages
to the JAVA client informing it how much (if at all) the video lags behind
audio (arg2 is the media delay in ms).

Change-Id: I6933f573d8597a35112e4b5ee0fcb826a7f6ddd1
related-to-bug: 3335220
ediaplayer.cpp
3e9f9f1596d4225ddd9288b4f7b24a15221374dc 16-Dec-2010 Mike Lockwood <lockwood@android.com> MediaScanner: Add support for scanning empty directories

Currently the media scanner does not create database entries for directories
unless they contain a file that is scanned.
Fixing this so we provide a consistent view of the world to MTP.

Change-Id: Ia776acfeae23192183e7192d63cdc34d830ea889
Signed-off-by: Mike Lockwood <lockwood@android.com>
ediaScanner.cpp
0f01764099d7a65b8921725df3340140f9fc4cd5 16-Dec-2010 Eric Laurent <elaurent@google.com> Fix issue 2712130: Sholes: problem when playing audio while recording over bluetooth SCO.

The problem is that when an input stream is opened for record over bluetooth SCO, the kernel
mono audio device should be opened in RW mode to allow further use of this same device by an output stream
also routed to bluetooth SCO.
This does not happen because of a bug in AudioSystem::isBluetoothScoDevice() that does not return true
when the device is DEVICE_IN_BLUETOOTH_SCO_HEADSET (input device for blurtooth SCO).

Change-Id: Ic78bf324b4a68e65721d763dc7682ce7a8f14f75
udioSystem.cpp
14acc736e336cbd6026df781d4f411e908831815 06-Dec-2010 Andreas Huber <andih@google.com> API Support for both synchronous and queued commands, optionally associated metadata.

Change-Id: Idb90d64cb638942210c5822b3cba2f05b087d601
ndroid.mk
StreamSource.cpp
16afe2fb439cab6125bb46a07a8078d4ce1c1ea5 03-Dec-2010 James Dong <jdong@google.com> Prepare for publishing MediaMetadataRetriever as public API

step one:
o replaced captureFrame with getFrameAtTime
o removed getMode

bug - 2433195

Change-Id: I38a8cecef29014692f0b08b8818326e3ebb40a12
MediaMetadataRetriever.cpp
ediametadataretriever.cpp
c75872920cd2de02d04bdc132ad5cf6d78c0578f 01-Dec-2010 Chia-chi Yeh <chiachi@android.com> am 4f93f08d: am 683a7ff9: Merge "Visualizer: Fix the conversion from 8-bit sample to 16-bit sample." into gingerbread

* commit '4f93f08d8c8b8067ff2176d9ec15c76c0e4cc0c2':
Visualizer: Fix the conversion from 8-bit sample to 16-bit sample.
ecd0a4f0b5bdd51bc35097b402202d6349f016ba 30-Nov-2010 Chia-chi Yeh <chiachi@android.com> am 683a7ff9: Merge "Visualizer: Fix the conversion from 8-bit sample to 16-bit sample." into gingerbread

* commit '683a7ff922409d2aa6c944bc4e08de32029e80e5':
Visualizer: Fix the conversion from 8-bit sample to 16-bit sample.
879e9cb6b4e8b09a5c7d4942ce36125193deadde 30-Nov-2010 Chia-chi Yeh <chiachi@android.com> Merge "Visualizer: Fix the conversion from 8-bit sample to 16-bit sample." into gingerbread
e2b1028852120bcfded33b8f06f66b780437fe92 23-Nov-2010 Andreas Huber <andih@google.com> Support streaming data across binder boundaries.

Change-Id: Ifbac61406dcb81343765f99ccba08bd90f9274cc
ndroid.mk
MediaPlayerService.cpp
StreamSource.cpp
f5aafb209d01ba2ab6cb55d1a12cfc653e2b4be0 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
udioEffect.cpp
udioRecord.cpp
udioTrack.cpp
a1680bce73ea1b051cc92e0df651a53944b104ee 18-Nov-2010 James Dong <jdong@google.com> Fix an issue wherre error notification will not be sent after mediaplayer reset

bug - 3198642

Change-Id: Ieab13e12af9fdd0ad0873c522885e1350e7cd24c
ediaplayer.cpp
0a5ca668c6f7d45706e9aec4a1dfec0aacc6d233 16-Nov-2010 Andreas Huber <andih@google.com> Remove all traces of legacy renderer support in stagefright.

Change-Id: I17b8e0dbf53fca37c96830c41131b4bc0c24ca6d
MediaPlayer.cpp
OMX.cpp
ediaplayer.cpp
56ecd20263d7f63476f756fc5d8b043b325c7bfb 09-Nov-2010 Jean-Michel Trivi <jmtrivi@google.com> Add support for audio recording source in generic audio policy mgr.

Update the platform-independent audio policy manager to pass the
nature of the audio recording source to the audio policy client
interface through the AudioPolicyClientInterface::setParameters()
method.

Change-Id: I6b4fd0f8a3acea0d7d30bbad98edd1977dc012bf
udioSystem.cpp
3baff73198ce852fa60080bd32703028298b4d65 08-Nov-2010 Andreas Huber <andih@google.com> resolved conflicts for merge of 31dc911a to gingerbread-plus-aosp

Change-Id: I2f51b2120b3c552566d91a7dc498a5e8b130205f
85d9b4225d024bb0d602b48bd6d5219cbebd7b8e 04-Nov-2010 Andreas Huber <andih@google.com> Support post-decode video rotation.

Change-Id: Ia371316e73a57e44610de86adce3eaa560afbf84
OMX.cpp
6b6a736ec71c692c165952fe653a7766075e94bb 01-Nov-2010 Chia-chi Yeh <chiachi@android.com> Visualizer: Fix the conversion from 8-bit sample to 16-bit sample.

Change-Id: Ie6d77b0f61a37333e05cdcdb6ef29d6f6c345a9d
isualizer.cpp
05ea6434ed399395e2dbe9f68abb44f04b274cb0 29-Oct-2010 Andreas Huber <andih@google.com> Squashed commit of the following:

commit 0d5694ba2d399dd0869532a4d6256448185a1be0
Author: Andreas Huber <andih@google.com>
Date: Fri Oct 29 11:59:23 2010 -0700

suspend() and resume() methods on VideoView are back but don't do anything.

They need to be back because they were public before.

Change-Id: Iddfd1021ffcf341f26e8d55ba761fd33701e2425

commit 16192891ed7d349ee97e47d1729d20a2d0d247b8
Author: Andreas Huber <andih@google.com>
Date: Fri Oct 29 11:47:05 2010 -0700

Revert "New API on VideoView widget to suspend/resume a session. Do not release the MediaPlayer client for video suspending/resuming."

This reverts commit 2e1818a4d16c3309660f27286c77d8d1eee95a25.

Conflicts:

api/current.xml

Change-Id: I68dd1d05871044faf3f832d0838aa40bc7f890e5

commit 8f934dc1a3ae4e60f0790fcf97671e063fa20fad
Author: Andreas Huber <andih@google.com>
Date: Fri Oct 29 11:44:16 2010 -0700

Revert "Release mediaplayer if the current state is not suspending. Fix for bug 2480093."

This reverts commit efb882cf75eef39ecaf9f8920ed302a019fa629f.

commit f2ed03550887986f39d36b5dabcd9e919949c7cf
Author: Andreas Huber <andih@google.com>
Date: Fri Oct 29 11:44:08 2010 -0700

Revert "Release MediaPlayer if suspend() returns false."

This reverts commit 047212fd4ea360675e94d3ce83c7f5544f65b268.

commit 441ecce678bd24e9660a72c8627b5bd94433ff8b
Author: Andreas Huber <andih@google.com>
Date: Fri Oct 29 11:40:46 2010 -0700

manually.

Change-Id: I4fdd43c9f7c8b3eedddb31a196da4984e1c58e87

Change-Id: I60d4b10e7a9e4ed8d9a796f1711618f557eb6e89
MediaPlayer.cpp
ediaplayer.cpp
e870772a78ffe08b1c14a791e368f1499f1be0f3 21-Oct-2010 James Dong <jdong@google.com> OMX extension to support storing meta data in video input buffers during recording

bug - 3042125

Change-Id: I7543809fa4ff61d48da35eec6c2bd5eaa7e8cead
OMX.cpp
8ac0cb9dc8a46f9b2badabc91cb5f7871e2215a9 18-Oct-2010 Jean-Baptiste Queru <jbq@google.com> Merge fb474872 from gingerbread-plus-aosp

Change-Id: I1bbb845a86a7b7df44ea175df3af22e5f47c44e3
06fa2bcce5dd80b406a23f980d8c9fac1524ebfd 16-Oct-2010 Andreas Huber <andih@google.com> am b04f356d: Merge "Include the framework copy of the OpenMAX headers instead of referencing external/opencore." into gingerbread

Merge commit 'b04f356d86eec74217fca8e3b85d801c4fcaa678' into gingerbread-plus-aosp

* commit 'b04f356d86eec74217fca8e3b85d801c4fcaa678':
Include the framework copy of the OpenMAX headers instead of referencing external/opencore.
56cfa2376ae87cba730ea7ce4a9e0ca4f0d07627 15-Oct-2010 Andreas Huber <andih@google.com> Include the framework copy of the OpenMAX headers instead of referencing external/opencore.

Change-Id: I762f59acf5e1f770e4d7c2d89af362bfffebefa6
related-to-bug: 3101573
ndroid.mk
3e8742fa4a5f0f8b185274763f6ec4e6c3a89344 15-Oct-2010 Andreas Huber <andih@google.com> am 27c7fb1a: am 90d59d18: Merge "Metadata.cpp and Metadata.java had drifted out of sync. This change remedies that." into gingerbread

Merge commit '27c7fb1a861776b4fdc2632697e4e25eee83617f'

* commit '27c7fb1a861776b4fdc2632697e4e25eee83617f':
Metadata.cpp and Metadata.java had drifted out of sync. This change remedies that.
f9f083e2853740c97588f4db82c24645ae5880e4 15-Oct-2010 Kenny Root <kroot@google.com> resolved conflicts for merge of a127c07c to master

Change-Id: Ifdfc6681cba00f36456eaf7a97f34a75b9d0c086
8cde59da2dd8540466aff5e94e9a6e5f74df1f10 14-Oct-2010 Andreas Huber <andih@google.com> am 90d59d18: Merge "Metadata.cpp and Metadata.java had drifted out of sync. This change remedies that." into gingerbread

Merge commit '90d59d180bd963f00161e6bfaabfda432960cab6' into gingerbread-plus-aosp

* commit '90d59d180bd963f00161e6bfaabfda432960cab6':
Metadata.cpp and Metadata.java had drifted out of sync. This change remedies that.
2959a5a5b4d151e14da3abe0289c15693409eb84 14-Oct-2010 Andreas Huber <andih@google.com> Metadata.cpp and Metadata.java had drifted out of sync. This change remedies that.

Change-Id: I48175666857ab0fb1519777bdb6f7f0b6b5cc599
related-to-bug: 3073955
etadata.cpp
e4edd632d48720b44f7878273f46d192d5703150 13-Oct-2010 Andreas Huber <andih@google.com> am 312644cd: Merge "Support for writing to MPEG2 transport stream files." into gingerbread

Merge commit '312644cdbb39522fe9cac028b15b907ce0e8e0f7' into gingerbread-plus-aosp

* commit '312644cdbb39522fe9cac028b15b907ce0e8e0f7':
Support for writing to MPEG2 transport stream files.
59b7dc39ea8332d3418a599e51447d7edb612ac4 12-Oct-2010 Andreas Huber <andih@google.com> Support for writing to MPEG2 transport stream files.

Change-Id: If3b7a807bc224a4b1cb2236537c3ebdc5aee0d97
ediarecorder.cpp
2eeadf9ded4b5770a713496e9887d668889987bc 11-Oct-2010 Eric Laurent <elaurent@google.com> am 4f21e517: am b37fcbfd: Merge "Added getter for session Id to AudioSink" into gingerbread

Merge commit '4f21e517d09b9d793d20d64547df330fba705b3c'

* commit '4f21e517d09b9d793d20d64547df330fba705b3c':
Added getter for session Id to AudioSink
74684081846ee6e68325fa5aba5c45b7447fd368 08-Oct-2010 Eric Laurent <elaurent@google.com> am b37fcbfd: Merge "Added getter for session Id to AudioSink" into gingerbread

Merge commit 'b37fcbfd7f9d65b90b43e0242903030c5a6517b5' into gingerbread-plus-aosp

* commit 'b37fcbfd7f9d65b90b43e0242903030c5a6517b5':
Added getter for session Id to AudioSink
8c563ed9ca8a863a66965330b5d14bb4b4ab59d4 08-Oct-2010 Eric Laurent <elaurent@google.com> Added getter for session Id to AudioSink

Added a method to expose the audio session id at AudioSink interface
so that the AudioPlayer in stagefright can retrieve it.

Also:
- Fixed audio effect send level not being initialized in mediaplayer.
- Fixed compilation error when LOGV is enabled in mediaplayer JNI

Change-Id: I4bb55454fd63d646e0e677692d737c4843fb05fb
ediaplayer.cpp
9ad6e8bd9fab860e639f6ce95479e4b2a9b03ff5 01-Oct-2010 Eric Laurent <elaurent@google.com> am de12c3cf: am 220ab887: Merge "Issue 3032913: improve AudioTrack recovery time" into gingerbread

Merge commit 'de12c3cf56e3f27b2efc60eeae8b5e422747f2b9'

* commit 'de12c3cf56e3f27b2efc60eeae8b5e422747f2b9':
Issue 3032913: improve AudioTrack recovery time
b3788b6d0f5a003d3d3e621ad605e2f3f4cb11e8 01-Oct-2010 Eric Laurent <elaurent@google.com> am 220ab887: Merge "Issue 3032913: improve AudioTrack recovery time" into gingerbread

Merge commit '220ab8877b234e6807b7f6d9028ba55d23220301' into gingerbread-plus-aosp

* commit '220ab8877b234e6807b7f6d9028ba55d23220301':
Issue 3032913: improve AudioTrack recovery time
44d9848d6656777a18019223e0d35f2fcc67719a 01-Oct-2010 Eric Laurent <elaurent@google.com> Issue 3032913: improve AudioTrack recovery time

This issue showed that when an AudioTrack underruns during a too long period
of time and is therefore disabled by audioflinger mixer, it takes an additional
delay of up to 3 seconds to recover.
This fix adds a simple mechanism to recover immediately when the client application
is ready to write data again in the AudioTrack buffer

Also throttle warnings on record overflows

Change-Id: I8b2c71578dd134b9e60a15ee4d91b70f3799cb3d
udioTrack.cpp
c425ffbfdca80c663b16a875228c15a1147a75f4 27-Sep-2010 Eric Laurent <elaurent@google.com> am 1b37df95: am 9627847d: Merge "Fix error in AudioEffect command status reporting." into gingerbread

Merge commit '1b37df95ec9d03aaa5f4055c6cd86db42f9c9727'

* commit '1b37df95ec9d03aaa5f4055c6cd86db42f9c9727':
Fix error in AudioEffect command status reporting.
da4b9bdd4682fb3a20964908cb18d02c943b7f35 27-Sep-2010 Eric Laurent <elaurent@google.com> am 9627847d: Merge "Fix error in AudioEffect command status reporting." into gingerbread

Merge commit '9627847d588cd969f60dcc79d165209184a90069' into gingerbread-plus-aosp

* commit '9627847d588cd969f60dcc79d165209184a90069':
Fix error in AudioEffect command status reporting.
0fa449cc475580d995e9d56756c3da5507d2b6f6 24-Sep-2010 Eric Laurent <elaurent@google.com> Fix error in AudioEffect command status reporting.

AudioEffect::command() should not interpret the status
returned in pReplyData unless the command is ENABLE or
DISABLE.

Also fixed:
- bug in Visualizer::getWAveForm() status reporting.
- wrong initialization value for capture buffer in visualizer engine.

Change-Id: I60fb0011f9dba96ee74661dec1e8ef441edcaf35
udioEffect.cpp
isualizer.cpp
d44b51d9fcb0b5d891d2abece83a551e71ebb73b 18-Sep-2010 Marco Nelissen <marcone@google.com> am 5c9f3579: am f30fae63: Merge "Add a check to track a problem the monkey script has been triggering." into gingerbread

Merge commit '5c9f35799422d818f34f814c76c2acd8c939a40c'

* commit '5c9f35799422d818f34f814c76c2acd8c939a40c':
Add a check to track a problem the monkey script has been triggering.
6901625dcb847871e23f04b9a282dc5d313a1d57 18-Sep-2010 Marco Nelissen <marcone@google.com> am f30fae63: Merge "Add a check to track a problem the monkey script has been triggering." into gingerbread

Merge commit 'f30fae63389a2216faf55636b95a08f35b5c3620' into gingerbread-plus-aosp

* commit 'f30fae63389a2216faf55636b95a08f35b5c3620':
Add a check to track a problem the monkey script has been triggering.
1c1503cf47c0a37a30e7acac2c5d29140fc61a5f 18-Sep-2010 Marco Nelissen <marcone@google.com> Add a check to track a problem the monkey script has been triggering.

Change-Id: If3896946d993cbab2442e17740f18efd7e753a3b
ediaplayer.cpp
d5672bc7162fa49abf9bb5844195887e911aa7ce 17-Sep-2010 Nipun Kwatra <nkwatra@google.com> Adding default profiles for specific levels.

The low and high profiles should each match one of the
specific profiles. So we need to add the specific profiles
corresponding to the low/high profiles. This makes the
default profile compliant to documentation + cts.

Also fixed javadoc to account time lapse profiles.

Change-Id: I34e7307d00ce261c69dc10ead2900025c7f6d428
ediaProfiles.cpp
c59ad085c9737e8d56328732be6864de302acae9 10-Sep-2010 Mike Lockwood <lockwood@android.com> Media scanner support for tracking files of arbitrary type.

The native media scanner no longer filters files based on file extension.
Audio, video, image and playlist files are handled as before, but non-media
files are now inserted into the "files" table, which was originally added
to support MTP.

Change-Id: I9053218fb6d2671a3bb181405c34442b94678afc
Signed-off-by: Mike Lockwood <lockwood@android.com>
ediaScanner.cpp
9783ed8f85af3d7c72030098acfed7e1d6638349 11-Sep-2010 Nipun Kwatra <nkwatra@google.com> Exposing specific profile levels + hasProfile().

- Exposing the specific resolution profile levels
QUALITY_{QCIF,CIF,480P,720P,1080P} and the new time lapse profiles
QUALITY_TIME_LAPSE_{LOW,HIGH,QCIF,CIF,480P,720P,1080P}
- Unhiding the hasProfile() function used to test if a given profile exists.

Change-Id: I5d8b9e1ba61718f304235e76d85244e428e68643
ediaProfiles.cpp
1a02fabca518806222212bdc708b36a37a7c3925 11-Sep-2010 Nipun Kwatra <nkwatra@google.com> Merge "Adding hasProfile."
a0d472f114bb6a74005aaf61e91e3569ae061630 10-Sep-2010 Nipun Kwatra <nkwatra@google.com> Merge "Added specific resolution and time lapse profiles."
8bb5603cc735315c8691dc9b7a81b4ad4d6e253e 10-Sep-2010 Nipun Kwatra <nkwatra@google.com> Adding hasProfile.

- Added hasProfile to CamcorderProfile and JNI.
- Added hasCamcorderProfile to MediaProfiles.
- using android.hardware.Camera.CAMERA_ID_DEFAULT for default camera
in get().

Change-Id: Ib57bb49ae79492d7cbc0ec6c7b6efcbf74f80013
ediaProfiles.cpp
c0a84782589eececdfa7e723e8aa0e572d0d79f5 07-Sep-2010 Nipun Kwatra <nkwatra@google.com> Added specific resolution and time lapse profiles.

- Added enums QUALITY_{QCIF,480P,720P,1080P}
QUALITY_TIME_LAPSE_{LOW,HIGH,QCIF,480P,720P,1080P} in CamcorderProfile
and corresponding ones in MediaProfiles.
- Added functions createDefaultCamcorderTimeLapseLowProfile,
createDefaultCamcorderTimeLapseHighProfile to set default values.
- Moved javadoc for constants to the get() function.

Change-Id: Ib8b3f8d29395dff77a397d1e6b44cfaf8c481d4d
ediaProfiles.cpp
83750eaf5a3f38c243a9e7eb81d4b2421e3a0d88 31-Aug-2010 Jamie Gennis <jgennis@google.com> Add the new Stagefright ANativeWindow OMX codec API.

This change defines the two OMX_SetParameter calls that enable OMX codecs to
interact with ANativeWindows. It also adds the plumbing to the IOMX, OMX, and
OMXNodeInstance classes to use these new APIs.

This is try 2 for this change, after reverting the first one because it broke
the build.

Change-Id: I94249b72bdb5d5719360f03d7935fcca4ece5028
OMX.cpp
9f2d258645826c999a93a4206df157fec2e3b0f2 01-Sep-2010 Jamie Gennis <jgennis@google.com> Revert "Merge "Add the new Stagefright ANativeWindow OMX codec API.""

This reverts commit 8a643b411e1802977f742709113ce01b06a18e12, reversing
changes made to 73ea9beaf8eb3d0027e78cbc0ac5e626c3f8deb4.
OMX.cpp
9dd4931cca8e4a2fcbcabf4eb7078648e1c029cd 01-Sep-2010 Jamie Gennis <jgennis@google.com> Merge "Add the new Stagefright ANativeWindow OMX codec API."
559dc605bfe2deb73ad718e0d5c5dc55e27c45df 31-Aug-2010 Jamie Gennis <jgennis@google.com> Add the new Stagefright ANativeWindow OMX codec API.

This change defines the two OMX_SetParameter calls that enable OMX codecs to
interact with ANativeWindows. It also adds the plumbing to the IOMX, OMX, and
OMXNodeInstance classes to use these new APIs.

Change-Id: Ibfbf893dc3513db0b3d3221bec5708c77287cddc
OMX.cpp
5d6aca5d86e86af3f8f597be573d4563d69ceb85 27-Aug-2010 Nipun Kwatra <nkwatra@google.com> Added setAuxiliaryOutputFile to MediaRecorder and JNI

added setAuxiliaryOutputFile to allow setting of an auxiliary output file.
Also added the JNI support.

Change-Id: I8c3335192bd6f7fcbfdfc8552cfd0848f2ad2a5d
MediaRecorder.cpp
ediarecorder.cpp
6865ddb29fc7e7a14104d73c65b71074502bb6c7 31-Aug-2010 Chia-chi Yeh <chiachi@android.com> am 1577e629: am 12006013: fixedfft: Only includes cpu-features.h when __arm__ is defined.

Merge commit '1577e629866b2700e31c9467478e05ebffcc69a1'

* commit '1577e629866b2700e31c9467478e05ebffcc69a1':
fixedfft: Only includes cpu-features.h when __arm__ is defined.
eebcf36cf2db2563af8ef479e01747321aa959e8 31-Aug-2010 Chia-chi Yeh <chiachi@android.com> am 12006013: fixedfft: Only includes cpu-features.h when __arm__ is defined.

Merge commit '12006013cc2cd0a076855ed068f5f782b24631c3' into gingerbread-plus-aosp

* commit '12006013cc2cd0a076855ed068f5f782b24631c3':
fixedfft: Only includes cpu-features.h when __arm__ is defined.
5edae619a6ad7337a3d14b53f7665ff17ec3ee84 30-Aug-2010 Chia-chi Yeh <chiachi@android.com> fixedfft: Only includes cpu-features.h when __arm__ is defined.

Change-Id: Ifb6c03b38eff3c94a507ceb5043fcc48b364c25c
ixedfft.cpp
e7c0899a7b7549ea342af67e7ab525f81672cfa5 25-Aug-2010 Eric Laurent <elaurent@google.com> am 74ede9e4: am 67b50606: Merge "Fix the simulator build." into gingerbread

Merge commit '74ede9e4fd3f5ab3c139abd95a22abf9f33c2d64'

* commit '74ede9e4fd3f5ab3c139abd95a22abf9f33c2d64':
Fix the simulator build.
dd8b35d2f7911bb1e12010f143c5b8c1b621f2ed 25-Aug-2010 Eric Laurent <elaurent@google.com> am 67b50606: Merge "Fix the simulator build." into gingerbread

Merge commit '67b506065e9fe3c56e3d1b47eedfa01170d574f9' into gingerbread-plus-aosp

* commit '67b506065e9fe3c56e3d1b47eedfa01170d574f9':
Fix the simulator build.
625981ec8417528cbea67c86dcbe32a9e79a79be 25-Aug-2010 Eric Laurent <elaurent@google.com> Fix the simulator build.

Fixes the sim build broken by commit 58d3bd08107f44cba79938dd8430e69c0fda4202.

Change-Id: I5a63623363d558783dc5254fdd322080cc2f3525
ixedfft.cpp
ef6c8c0324be75dfac3d6a4025ec3b3a7ca23826 24-Aug-2010 Chia-chi Yeh <chiachi@android.com> am a102871c: am b80e610b: Merge "Visualizer: replace the FFT implementation with a faster one." into gingerbread

Merge commit 'a102871c7cbb74ebddc53231a871145de61351b0'

* commit 'a102871c7cbb74ebddc53231a871145de61351b0':
Visualizer: replace the FFT implementation with a faster one.
4b79168835965cf0fc41ebe2a367e22b4cb20d08 11-Aug-2010 Jamie Gennis <jgennis@google.com> Change the framework to use the new camera preview path.

This change makes the camera HAL interface take an ANativeWindow interface from
which all the camera preview buffers will be allocated. The framework code
running in application processes now passes a Surface object rather than an
ISurface to the camera server via Binder when setting the preview surface. The
camera server then forwards that Surface object (which implements the
ANativeWindow interface) to the camera HAL, which uses it to communicate with
SurfaceFlinger to allocate the camera preview buffers.

Change-Id: Ie438f721559cd7de5e4f848a26d96360dda07b5f
MediaRecorder.cpp
ediarecorder.cpp
5daeb129a2c2ba3d14ccd94af283b5f561c783ea 16-Aug-2010 Andreas Huber <andih@google.com> Squashed commit of the following:

commit 35cc68814a9537c31fde146e171e7b0bbdfe211e
Author: Andreas Huber <andih@google.com>
Date: Mon Aug 16 08:48:42 2010 -0700

Only enable support for yuv to yuv conversion on passion, where it's available, use the slower yuv->rgb565 path everywhere else.

commit d8ac5a8814103e60d11d2acf61997fc31a1dc58d
Author: Andreas Huber <andih@google.com>
Date: Fri Aug 13 13:56:44 2010 -0700

The software renderer takes over all rendering, converting from yuv to yuv if possible and rgb565 otherwise.

commit 684972074b74318bdcb826ed9b5b0864d2d2e273
Author: Andreas Huber <andih@google.com>
Date: Fri Aug 13 09:34:35 2010 -0700

A first shot at supporting the new rendering APIs.

Change-Id: Iea9b32856da46950501f1a700f616b5feac710fd
MediaPlayer.cpp
ediaplayer.cpp
7be0434ce8d4139e9ca4b1f374153de0c75ac049 23-Aug-2010 Chia-chi Yeh <chiachi@android.com> am b80e610b: Merge "Visualizer: replace the FFT implementation with a faster one." into gingerbread

Merge commit 'b80e610b070c2cec98a228a8aec450dc24a5f90a' into gingerbread-plus-aosp

* commit 'b80e610b070c2cec98a228a8aec450dc24a5f90a':
Visualizer: replace the FFT implementation with a faster one.
dbd2b7e4ebfe7a586b1db4459cf6aa032a7f8719 19-Aug-2010 Chia-chi Yeh <chiachi@android.com> Visualizer: replace the FFT implementation with a faster one.

This implementation uses fixed points instead of floating points. It
is slightly inaccurate compared to the old one but still perfect for
visualization purpose. It runs 40% faster on passion, 5 times faster
on sholes, and of course 14 times faster on sapphire.

Change-Id: I1e868417bcffda091becf106a7b941d02813faec
ndroid.mk
isualizer.cpp
ixedfft.cpp
4a3935898893f955403021fe41cf2bfa3a32dde2 18-Aug-2010 Jean-Baptiste Queru <jbq@google.com> resolved conflicts for merge of 0b7bd95d to gingerbread-plus-aosp

Change-Id: I55c1689c7d0737c943efec28d8164d6a5360621c
f1a97e53a58f47afa17a9b0d3a5cc9abf7e5ed19 17-Aug-2010 Rene Bolldorf <xsecute@googlemail.com> Fix compilation errors in libmedia, libstagefright.
(invalid conversion from 'const char*' to 'char*')

Change-Id: Idef85606b7cff629b2778ed8134c79c892af54c2
ediaScanner.cpp
2dac90da3ea5120b52844a6ee38c300301de5756 12-Aug-2010 James Dong <jdong@google.com> am 0386d04b: am 581581fe: Merge "Fix all fd leaks in authoring engine" into gingerbread

Merge commit '0386d04b19619b03b6bce830010e11d31d3f8a5c'

* commit '0386d04b19619b03b6bce830010e11d31d3f8a5c':
Fix all fd leaks in authoring engine
25d83125cee222993673d3ba261ae1186bcad8c2 12-Aug-2010 James Dong <jdong@google.com> Fix all fd leaks in authoring engine

Change-Id: I17798543f9dd41cc8bef6f6086e66932f9f97be8
MediaRecorder.cpp
bc417c0531332635df9525df4683274a08fb987f 10-Aug-2010 Eric Laurent <elaurent@google.com> am 1ece7d68: am 2a6b80bc: Fixed several audio effects problems.

Merge commit '1ece7d6873027068a3e7b055597045e9387b217c'

* commit '1ece7d6873027068a3e7b055597045e9387b217c':
Fixed several audio effects problems.
8569f0d3bf4c6787707e348a7cf73b9c4199cb32 30-Jul-2010 Eric Laurent <elaurent@google.com> Fixed several audio effects problems.

- Fixed constant inversions in AudioEffect.java
- Do not return error when enabling an already enabled effect
- Update cached effect state in native AudioEffect class when effect is enabled/disabled by command() method
- Remove click when restarting effect during disable sequence
- Fixed problem in master mute management when volume control is delegated to effect.

Change-Id: I6df4ce9fcc54fdc7345df858f639d20d802d6712
udioEffect.cpp
982a93173bc84f005172152d823cbb59dfcbeb12 05-Aug-2010 Andreas Huber <andih@google.com> am 1f513d88: am c17f35dd: Merge "Support for Gtalk video, includes AMR/H.263 assembler and packetization support, extensions to MediaRecorder to stream via RTP over a pair of UDP sockets as well as various fixes to the RTP implementation." into gingerbread

Merge commit '1f513d8821670a33d6361ea521b6756163a3f9bf'

* commit '1f513d8821670a33d6361ea521b6756163a3f9bf':
Support for Gtalk video, includes AMR/H.263 assembler and packetization support, extensions to MediaRecorder to stream via RTP over a pair of UDP sockets as well as various fixes to the RTP implementation.
aa68b49a53a874a1813e65752663f19d18149e2c 05-Aug-2010 Eric Laurent <elaurent@google.com> am eec3fca6: am 7629e8dd: Merge "Fix issue 2876124." into gingerbread

Merge commit 'eec3fca6277296f354ee2b1af0f4b3dceddb3067'

* commit 'eec3fca6277296f354ee2b1af0f4b3dceddb3067':
Fix issue 2876124.
39ddf8e0f18766f7ba1e3246b774aa6ebd93eea8 04-Aug-2010 Andreas Huber <andih@google.com> Support for Gtalk video, includes AMR/H.263 assembler and packetization support, extensions to MediaRecorder to stream via RTP over a pair of UDP sockets as well as various fixes to the RTP implementation.

Change-Id: I95b8dd487061add9bade15749e563b01cd99d9a6
ediarecorder.cpp
3b26844e60f8487388e7e62709faf0dada86e7e1 03-Aug-2010 Eric Laurent <elaurent@google.com> Fix issue 2876124.

Allow calls to MediaPlayer::notify() in idle state to signal errors from JNI.

Change-Id: I1515fe69766f0a926b76e15c4971317da2acd6a0
ediaplayer.cpp
9da2070b6d6d20550de7da61478c325f0928d020 30-Jul-2010 Jean-Baptiste Queru <jbq@google.com> resolved conflicts for merge of 27eecb70 to gingerbread

Change-Id: If064f2f4950fc1a4ff38e6927fe2120af76b26f1
bc286dce1af6670824fba4167e0750b631168d72 30-Jul-2010 Jean-Baptiste Queru <jbq@google.com> am 0c51c98f: am 4506c62a: fix inaccurate copyrights

Merge commit '0c51c98fd9edf0bdc8f2c567470fc332b5ae3adf'

* commit '0c51c98fd9edf0bdc8f2c567470fc332b5ae3adf':
fix inaccurate copyrights
0319aaecb03aa83924ab4e3d9c9bc657c2e8bc06 30-Jul-2010 Jean-Baptiste Queru <jbq@google.com> am 4506c62a: fix inaccurate copyrights

Merge commit '4506c62abd5767d6d42a97e8e87793a1b3bcb625' into gingerbread-plus-aosp

* commit '4506c62abd5767d6d42a97e8e87793a1b3bcb625':
fix inaccurate copyrights
68335fdd6e9c1d622384612605d6952503cb7fd0 30-Jul-2010 Jean-Baptiste Queru <jbq@google.com> fix inaccurate copyrights

Change-Id: I33b0f68f2da34ca4728211d83159cf32a127f6dd
MediaRecorder.cpp
01cff464978aa0f749f42650180b45ea56cb17de 30-Jul-2010 Jean-Baptiste Queru <jbq@google.com> fix inaccurate copyrights

Change-Id: I33b0f68f2da34ca4728211d83159cf32a127f6dd
MediaRecorder.cpp
ed0de3c123aaa86147993721d4794648a65aab75 28-Jul-2010 Eric Laurent <elaurent@google.com> am 6fa88882: am 62d83a0c: Merge "Audio effects: modified command() parameter types." into gingerbread

Merge commit '6fa8888254deb4961dc64c6ac03dc103c9cd8bcf'

* commit '6fa8888254deb4961dc64c6ac03dc103c9cd8bcf':
Audio effects: modified command() parameter types.
25f4395b932fa9859a6e91ba77c5d20d009da64a 28-Jul-2010 Eric Laurent <elaurent@google.com> Audio effects: modified command() parameter types.

The type of the cmd, cmdSize and *pReplySize parameters of the effect control interface command()
function have been modified from int to uint32_t. This is more consistent with their role.

Change-Id: I84d289fc262d6753747910f06f485597dfee6591
udioEffect.cpp
Effect.cpp
EffectClient.cpp
isualizer.cpp
71ff94cb52874e42dede3c6bc4b86757b72cf0b1 21-Jul-2010 Eric Laurent <elaurent@google.com> am 34161132: am 7070b365: Added support for auxiliary audio effects to AudioTrack and MediaPlayer.

Merge commit '34161132030254bac7dd64c9713832e2f961a061'

* commit '34161132030254bac7dd64c9713832e2f961a061':
Added support for auxiliary audio effects to AudioTrack and MediaPlayer.
2beeb50b1bba9e92f6cacfeca37fe9fa9d36ead1 16-Jul-2010 Eric Laurent <elaurent@google.com> Added support for auxiliary audio effects to AudioTrack and MediaPlayer.

Added methods to AudioTrack and MediaPlayer java classes to enable use of
auxiliary audio effects. The effect can be attached and detached by specifying its
ID and the send level controlled.

Change-Id: Ie74ff54a453096a742688476f612ce355543b6f3
udioTrack.cpp
MediaPlayer.cpp
ediaplayer.cpp
8184a5734690b30f4de0f6b6c16daf1e089f67df 20-Jul-2010 Eric Laurent <elaurent@google.com> resolved conflicts for merge of dd206093 to master

Change-Id: I21dd2321a4839d034d49092baccbf40986f17dae
de070137f11d346fba77605bd76a44c040a618fc 13-Jul-2010 Eric Laurent <elaurent@google.com> Audio policy manager changes for audio effects

Added methods for audio effects management by audio policy manager.
- control of total CPU load and memory used by effect engines
- selection of output stream for global effects
- added audio session id in parameter list for startOutput() and stopOutput().
this is not used in default audio policy manager implementation.

Modifications of audio effect framework in AudioFlinger to allow moving and reconfiguring
effect engines from one output mixer thread to another when audio tracks in the same session
are moved or when requested by audio policy manager.
Also fixed mutex deadlock problem with effect chains locks.

Change-Id: Ida43484b06e9b890d6b9e53c13958d042720ebdb
udioSystem.cpp
AudioFlinger.cpp
AudioPolicyService.cpp
4e2ffa400b82559cab2c5717c8dcdff393d334a9 15-Jul-2010 Mike Lockwood <lockwood@android.com> Fixes for simulator build on lucid

strchr and strrchr now return const char* instead of char*

Change-Id: I5ca831b8951af7e6306eb9d9d6f78ed2ec13d649
Signed-off-by: Mike Lockwood <lockwood@android.com>
ediaScanner.cpp
66e6c1c85c33194b1a6fc5077bd78b53a5fe9d03 09-Jul-2010 Jean-Michel Trivi <jmtrivi@google.com> am bd3f8b71: am e7b790f1: Merge "Fix swap of sessionId and output in audio effect API." into gingerbread

Merge commit 'bd3f8b711643a172703537e34a0fa7c21c5b953f'

* commit 'bd3f8b711643a172703537e34a0fa7c21c5b953f':
Fix swap of sessionId and output in audio effect API.
42a050ff9636b79e4b91297cc41028ffd62240d5 09-Jul-2010 Jean-Michel Trivi <jmtrivi@google.com> Fix swap of sessionId and output in audio effect API.

Change-Id: Idc93415efef92087507401e50cfb235a6f1f7ed7
udioEffect.cpp
6506bd2be256cdebc69324714c5b26c767981046 08-Jul-2010 Eric Laurent <elaurent@google.com> am b91881fd: am dacabf97: Merge "Added Visualizer effect." into gingerbread

Merge commit 'b91881fdd1608cc922f105ec552b5505da1fecb9'

* commit 'b91881fdd1608cc922f105ec552b5505da1fecb9':
Added Visualizer effect.
6c5c25fae5aa68a52c6fa75649dd559a9ca98932 08-Jul-2010 Eric Laurent <elaurent@google.com> Merge "Added Visualizer effect." into gingerbread
da7581b7b61b84f15e8d671c86fd117c322b009e 02-Jul-2010 Eric Laurent <elaurent@google.com> Added Visualizer effect.

The visualizer enables application to retrieve part of the currently playing audio for visualization purpose.
It is not an audio recording interface and only returns partial and low quality audio content as a waveform or
a frequency representation (FFT).

Removed temporary hack made in MediaPlayer for animated wall papers based on audio visualization (snoop() method.

This commit also includes a change in AudioEffect class:
- the enable()/disable() methods have been replaced bya more standard setEnabled() method.
- some fixes in javadoc

Change-Id: Id092a1340e9e38dae68646ade7be054e3a36980e
ndroid.mk
udioEffect.cpp
MediaPlayerService.cpp
isualizer.cpp
ediaplayer.cpp
c143929b9f40112bb75eefbeafd6a56515868c9d 01-Jul-2010 Chih-Chung Chang <chihchung@google.com> am bda93c4c: am 09b90057: Add multiple camera support for in MediaProfiles.

Merge commit 'bda93c4cb94b47c86251d22df16e46a514c191ef'

* commit 'bda93c4cb94b47c86251d22df16e46a514c191ef':
Add multiple camera support for in MediaProfiles.
3eaa4e92dbebb5b27cb89f329f31fac6fb6fe1f0 22-Jun-2010 Chih-Chung Chang <chihchung@google.com> Add multiple camera support for in MediaProfiles.

Change-Id: Ie89568a0f5f5fd08ede77e33f9a559215d6bed9a
ediaProfiles.cpp
1c645f22ab7e56a04659c09ffa2ca2de20650ddc 29-Jun-2010 James Dong <jdong@google.com> am c2c59f69: am 2a76b316: Merge "Separate MediaRecorderClient with MediaPlayerClient" into gingerbread

Merge commit 'c2c59f690deafe34c7701b01b612fd777cee8d4b'

* commit 'c2c59f690deafe34c7701b01b612fd777cee8d4b':
Separate MediaRecorderClient with MediaPlayerClient
37047fceba836f341d0108beed0991b0f8dfc543 26-Jun-2010 James Dong <jdong@google.com> Separate MediaRecorderClient with MediaPlayerClient

- An alternative would be to define a common base class that
both MediaRecorderClient and MediaPlayerClient can derive.
But since the common code, onTransact() and notify() uses
some Binder code, having a common base class may not gain
us too much in terms of code reuse.

Change-Id: Ibc06720278ad173fceacff3d267b7060856c6316
ndroid.mk
MediaRecorder.cpp
MediaRecorderClient.cpp
a93b488457b8d7dd17a1d80c82a9accafcdd8bad 25-Jun-2010 Eric Laurent <elaurent@google.com> am cdf1357b: am 8e103da1: Merge "Various fixes and improvements in audio effects implementation" into gingerbread

Merge commit 'cdf1357b6e0152280dcd611b5f096db4887d8126'

* commit 'cdf1357b6e0152280dcd611b5f096db4887d8126':
Various fixes and improvements in audio effects implementation
ffe9c25ce85e1af55d58ec025adc6367d70db7e8 24-Jun-2010 Eric Laurent <elaurent@google.com> Various fixes and improvements in audio effects implementation

Effect API:
- Use different definitions for audio device, channels, formats... in AudioSystem and EffectApi:
Removed media/AudioCommon.h file created for initial version of EffectApi
- Indicate audio session and output ID to effect library when calling EffectCreate(). Session ID can be useful to optimize
the implementation of effect chains in the same audio session. Output ID can be used for effects implemented in audio hardware.
- Renamed EffectQueryNext() function to EffectQueryEffect() and changed operating mode:
now an index is passed for the queried effect instead of implicitly querying the next one.
- Added CPU load and memory usage indication in effects descriptor
- Added flags and commands to indicate changes in audio mode (ring tone, in call...) to effect engine
- Added flag to indicate hardware accelerated effect implementation.
- Renamed EffectFactoryApi.h to EffectsFactoryApi.h for consistency with EffectsFactory.c/h

Effect libraries:
- Reflected changes in Effect API
- Several fixes in reverb implementation
- Added build option TEST_EFFECT_LIBRARIES in makefile to prepare integration of actual effect library.
- Replaced pointer by integer identifier for library handle returned by effects factory

Audio effect framework:
- Added support for audio session -1 in preparation of output stage effects configuration.
- Reflected changes in Effect API
- Removed volume ramp up/down when effect is inserted/removed: this has to be taken care of by effect engines.
- Added some overflow verification on indexes used for deferred parameter updates via shared memory
- Added hardcoded CPU and memory limit check when creating a new effect instance

Change-Id: I43fee5182ee201384ea3479af6d0acb95092901d
udioEffect.cpp
AudioFlinger.cpp
ed914577e770697e23884886787e333588eb4c61 23-Jun-2010 Andreas Huber <andih@google.com> am 03e90f7e: am 58e9402b: Merge "Properly assign LOG_TAGs in OMXMaster.cpp and MediaScanner.cpp" into gingerbread

Merge commit '03e90f7eeb032c981fc2952aa33f6ba1fae20d97'

* commit '03e90f7eeb032c981fc2952aa33f6ba1fae20d97':
Properly assign LOG_TAGs in OMXMaster.cpp and MediaScanner.cpp
1a97e853e8f9fa3f4f47304d0e2e9118887e6051 23-Jun-2010 Eric Laurent <elaurent@google.com> am 845f5414: am 2c2ce8e5: Merge "Added support for audio sessions in MediaPlayer and AudioTrack." into gingerbread

Merge commit '845f541454d1fa9f328c0b0bf79acf2fba363177'

* commit '845f541454d1fa9f328c0b0bf79acf2fba363177':
Added support for audio sessions in MediaPlayer and AudioTrack.
4ae22516962e6d6727fc3e9ce646441708ed60a9 23-Jun-2010 Chia-chi Yeh <chiachi@android.com> am da9269af: am 3238302b: Merge "media: add AudioRecord::getMinFrameCount()." into gingerbread

Merge commit 'da9269af5e94e25c142c519429aa77eb40f68e58'

* commit 'da9269af5e94e25c142c519429aa77eb40f68e58':
media: add AudioRecord::getMinFrameCount().
1629399bb578fc176613ccaf134d1be6e3047638 23-Jun-2010 Andreas Huber <andih@google.com> Properly assign LOG_TAGs in OMXMaster.cpp and MediaScanner.cpp

Change-Id: I863651619f84b2b66e9a926ce1fef8ce6a53a42d
related-to-bug: 2639116
ediaScanner.cpp
dadd0d1e7d5fbb88fd3420438c590a0bb4c18af5 23-Jun-2010 Eric Laurent <elaurent@google.com> Merge "Added support for audio sessions in MediaPlayer and AudioTrack." into gingerbread
a514bdb58b5de4986679f72b7204b4764f7a2778 21-Jun-2010 Eric Laurent <elaurent@google.com> Added support for audio sessions in MediaPlayer and AudioTrack.

Audio sessions are used to associate audio effects to particular instances (or groups) of MediaPlayers or AudioTracks.

Change-Id: Ib94eec43241cfcb416590f435ddce7ab39a07640
udioTrack.cpp
MediaPlayerService.cpp
ediaplayer.cpp
15304d601cbf83be6519ca53e1a26b97d50d0192 22-Jun-2010 Chia-chi Yeh <chiachi@android.com> media: add AudioRecord::getMinFrameCount().

Change-Id: I952071ab10aa49aa96b727d157b68470d69fff3d
udioRecord.cpp
9e6f25df13d5242d83fda224f8cc0b2bf22a727c 21-Jun-2010 Chia-chi Yeh <chiachi@android.com> am d9e9132e: am 2ce999fc: am bd240c27: media: add AudioTrack::getMinFrameCount().

Merge commit 'd9e9132eeb2c02feb812f21a5cecb844b5b39d9d'

* commit 'd9e9132eeb2c02feb812f21a5cecb844b5b39d9d':
media: add AudioTrack::getMinFrameCount().
33005a932c60a0780fe9b7307d5988df3d9f6c26 16-Jun-2010 Chia-chi Yeh <chiachi@android.com> media: add AudioTrack::getMinFrameCount().

Change-Id: If15162583d1d16d89f59be0793106afe77417f35
udioTrack.cpp
ef04e8f230e7ef5dece1cc4e73cd109c69905418 15-Jun-2010 Mike Lockwood <lockwood@android.com> MediaScanner: Fix handling of files with dirent.d_type == DT_UNKNOWN

The previous code was calling stat() on the parent directory rather than the actual file.

Change-Id: If64552cb37552c77618a81ae4333307a018efe13
Signed-off-by: Mike Lockwood <lockwood@android.com>
ediaScanner.cpp
366c84d307e128a00a5ba0234cad7759a0b3d57c 14-Jun-2010 Eric Laurent <elaurent@google.com> am 184a3ff6: am e0219539: am 01f7ac64: Merge "Issue 2667802: [Audio Effect Framework] AudioEffect base class and JNI." into kraken

Merge commit '184a3ff64ba71e7e860b70b9a836c0132b447138'

* commit '184a3ff64ba71e7e860b70b9a836c0132b447138':
Issue 2667802: [Audio Effect Framework] AudioEffect base class and JNI.
801a1186eb1d2ce195b15222701865932e08f3dc 09-Jun-2010 Eric Laurent <elaurent@google.com> Issue 2667802: [Audio Effect Framework] AudioEffect base class and JNI.

Added AudioEffect C++ class. AudioEffect is the base class for effect specific implementations,
OpenSL ES effect interfaces and audio effect JNI.

Added the AudioEffect JNI and AudioEffect JAVA class. AudioEffect is the base class
to implement more specific JAVA classes to control audio effects from JAVA applications.

Change-Id: If300a1b708f2e6605891261e67bfb4f8330a4624
ndroid.mk
udioEffect.cpp
fc499ca2babff1315d0188ddfbe0268fe5d5e8ae 04-Jun-2010 Eric Laurent <elaurent@google.com> am 030a1553: am 2ea200c5: Merge "Issue 2667801: [Audio Effect Framework] AudioFlinger, AudioMixer AudioTrack modifications." into kraken
be916aa1267e2e6b1c148f51d11bcbbc79cb864c 02-Jun-2010 Eric Laurent <elaurent@google.com> Issue 2667801: [Audio Effect Framework] AudioFlinger, AudioMixer AudioTrack modifications.

First drop of audio framework modifications for audio effects support.

- AudioTrack/AudioRecord:
Added support for auxiliary effects in AudioTrack
Added support for audio sessions
Fixed left right channel inversion in setVolume()

- IAudioFlinger:
Added interface methods for effect enumeraiton and instantiation
Added support for audio sessions.

- IAudioTrack:
Added method to attach auxiliary effect.

- AudioFlinger
Created new classes to control effect engines in effect library and manage effect connections to tracks or
output mix:
EffectModule: wrapper object controlling the effect engine implementation in the effect library. There
is one EffectModule per instance of an effect in a given audio session
EffectChain: group of effects associated to one audio session. There is one EffectChain per audio session.
EffectChain for session 0 is for output mix effects, other chains are attached to audio tracks
with same session ID. Each chain contains a variable number of EffectModules
EffectHandle: implements the IEffect interface. There is one EffectHandle object for each application
controlling (or using) an effect module. THe EffectModule maintians a list of EffectHandles.

Added support for effect modules and effect chains creation in PlaybackThread.
modified mixer thread loop to allow track volume control by effect modules and call effect processing.

-AudioMixer
Each track now specifies its output buffer used by mixer for accumulation
Modified mixer process functions to process tracks by groups of tracks with same buffer
Modified track process functions to support accumulation to auxiliary channel

Change-Id: I26d5f7c9e070a89bdd383e1a659f8b7ca150379c
udioRecord.cpp
udioSystem.cpp
udioTrack.cpp
AudioFlinger.cpp
AudioTrack.cpp
a47e14e20e2c97955ac116b4f229316fe9c88e53 27-May-2010 Eric Laurent <elaurent@google.com> Merge "Fix issue 2712130: Sholes: problem when playing audio while recording over bluetooth SCO."
2dadcda205d995f7094b7569b076921872505143 26-May-2010 Eric Laurent <elaurent@google.com> Fix issue 2712130: Sholes: problem when playing audio while recording over bluetooth SCO.

The problem is that when an input stream is opened for record over bluetooth SCO, the kernel
mono audio device should be opened in RW mode to allow further use of this same device by an output stream
also routed to bluetooth SCO.
This does not happen because of a bug in AudioSystem::isBluetoothScoDevice() that does not return true
when the device is DEVICE_IN_BLUETOOTH_SCO_HEADSET (input device for blurtooth SCO).

Change-Id: I9100e972931d8142295c7d64ec06e31304407586
udioSystem.cpp
d71a1be83ff31cdb6599c351f9832cefc8d447ba 21-May-2010 Eric Laurent <elaurent@google.com> Fix issue 2667797: [Audio Effect Framework] new base class and binder interfaces for effect control.

Added IEffect and IEffectClient binder interfaces to exchange effect module control
and status information between application and media server processes.

Change-Id: I10e8e894898e52ed9956a765d0ef7075eb2593af
ndroid.mk
Effect.cpp
EffectClient.cpp
d1b449aad6c087a69f5ec66b7facb2845b73f1cb 14-May-2010 Eric Laurent <elaurent@google.com> Fix issue 2553359: Pandora does not work well with Passion deskdock / Cardock.

The problem is due to a too big difference between the buffer size used at the hardware interface and at the A2DP interface.
When no resampling occurs we don't notice problems but the timing is very tight. As soon as resampling is activated, the AudioTrack underruns.
This is because the AudioTrack buffers are not resized when moving the AudioTrack from hardware to A2DP output.
The AudioTrack buffers are calculated based on a hardware output buffer size of 3072 bytes. Which is much less than the A2DP output buffer size (10240).

The solution consists in creating new tracks with new buffers in AudioFlinger when the A2DP output is opened
instead of just transfering active tracks from hardware output mixer thread to the new A2DP output mixer thread.
To avoid synchronization issues between mixer threads and client processes, this is done by invalidating tracks
by setting a flag in their control block and having AudioTrack release the handle on this track (IAudioTrack)
and create a new IAudioTrack when this flag is detected next time obtainBuffer() or start() is executed.

AudioFlinger modifications:
- invalidate the tracks when setStreamOutput() is called
- make sure that notifications of output opening/closing and change of stream type to output mapping are sent synchronously to client process.
This is necessary so that AudioSystem has the new stream to output mapping when the AudioTrack detects the invalidate flag in the client process.
Previously their were sent when the corresponding thread loop was executed.

AudioTrack modifications:
- move frame count calculation and verification from set() to createTrack() so that is is updated every time a new IAudioTrack is created.
- detect track invalidate flag in obtainBuffer() and start() and create a new IAudioTrack.

AudioTrackShared modifications
- group all flags (out, flowControlFlag, forceReady...) into a single bit filed to save space.

Change-Id: I9ac26b6192230627d35084e1449640caaf7d56ee
udioRecord.cpp
udioTrack.cpp
2e5299988b5f5f9165a76938a66d37e46dd48d6b 13-Apr-2010 Mathias Agopian <mathias@google.com> don't hardcode "mSurface" throughout our source code

this is used in a few places to get access to the android.view.Surface
native surface. use a macro instead. Also rename the field to mNativeSurface.

Change-Id: I1c6dea14abd6b8b1392c7f97b304115999355094
OMX.cpp
a17a1347ffe281fc70633ba8dc98f6cf49ac06ff 02-Apr-2010 Dave Sparks <davidsparks@android.com> Use local lock for most MediaMetadataRetriever methods. Bug 2560834.

MediaMetadataRetriever uses a single static lock for all operations.
This effectively serializes all metadata retrieval operations in a
single process. This patch uses the object level lock for all normal
operations and only uses the static lock to serialize calls to
release.

Change-Id: I81c9f234c2f0007a26d18e1398c709b41a4dbbd7
ediametadataretriever.cpp
54b1a0550411c2fd2084d82d28934d505c37349a 20-Mar-2010 Mathias Agopian <mathias@google.com> libutils Condition are now PRIVATE by default

Condition must be initialized with SHARED for the old behavior, where
they can be used accross processes.

Updated the two places android that require SHARED conditions.

PRIVATE conditions (and mutexes) use more efficient syscalls.

Change-Id: I9a281a4b88206e92ac559c66554e886b9c62db3a
udioTrack.cpp
d3f93c572e55dc902d01f8eeda1d107a8b9128e2 17-Mar-2010 Eric Laurent <elaurent@google.com> Merge "Fix issue 2416481: Support Voice Dialer over BT SCO."
be55a2d66f03e80524a346500ffa9fd046410b28 11-Mar-2010 Eric Laurent <elaurent@google.com> Fix issue 2416481: Support Voice Dialer over BT SCO.

- AudioPolicyManager: allow platform specific choice for opening a direct output.
Also fixed problems in direct output management.
- AudioFliinger: use shorter standby delay and track inactivity grace period for direct output
thread to free hardware resources as soon as possible.
- AudioSystem: do not use cached output selection in getOutput() when a direct output
can be selected.

Change-Id: If44b50d29237b8402ffd7a5ba1dc43c56f903e9b
udioSystem.cpp
3e42b4491529975f771f8d71f931e24e120a7856 16-Mar-2010 Kenny Root <kroot@google.com> Fix regression in directory scanning

Previous range-checking fix removed an inequality check. This change
restores it.

Offending change was I5eb310ced58c3c64a7af2d11b80326efe5adbcab

Change-Id: Ic952c3ba5a4f7e5ab2148ec623b6f083cb7495fb
ediaScanner.cpp
8a6e24135608d1ec6629f381acd20d88369cd940 11-Mar-2010 Marco Nelissen <marcone@google.com> Merge "Revert "Do autodetection even if no locale was specified, and use the""
b5c3107262fdf82aef4bd5ee8b8c60dd3e4725fe 11-Mar-2010 Marco Nelissen <marcone@google.com> Revert "Do autodetection even if no locale was specified, and use the"

This reverts commit b45b0845a6db32848ad08ac1037ef67a68ec2d39.
ediaScannerClient.cpp
4023493a827bc9751d8e40795516d0d536a53348 10-Mar-2010 Nicolas Catania <niko@google.com> Allow invoke in all the player states except idle and error.

Previously invoke would work only after prepare but not
when the player is in play or pause state (for instance).
This new change just check that the player has been initialized
and is not in the error state.

Bug:2488931
Change-Id: I9b9f3679593a3b7697c1a84d993fdcd7e1693a90
ediaplayer.cpp
64fb06f698b39759a7a2ebacd0a175949b7506a5 11-Mar-2010 Nicolas Catania <niko@google.com> Revert "Allow invoke in all the player states except idle and error."

This reverts commit 88f3b81d065d4bec6f69a25eda99158e254f55b1.
ediaplayer.cpp
63bacaf543d4faee6dadda08e51556c878b078f5 10-Mar-2010 Nicolas Catania <niko@google.com> Allow invoke in all the player states except idle and error.

Previously invoke would work only after prepare but not
when the player is in play or pause state (for instance).
This new change just check that the player has been initialized
and is not in the error state.

Bug:2488931

Change-Id: I7a69d1b6e3eec1e5dbdf7378ff2085329062595a
ediaplayer.cpp
83ff1438d2d1d5dbf39ca5e6f2e4fa1799e7ba80 10-Mar-2010 Marco Nelissen <marcone@google.com> MEDIA_PLAYER_STATE_ERROR is not a bitmask
(b/2502881)

Change-Id: I08e427eb2c36f5d70e40f9aeb8638fa8262de989
ediaplayer.cpp
88335b1a749fe0157547907a2ce6c9632f4d2592 03-Mar-2010 Eric Laurent <elaurent@google.com> Fix issue 2428563: Camera rendered inoperable by voice call interruption.

The problem is that AudioRecord never exits read() when a timeout occurs while trying
to get new PCM data from audio hardware input buffer: it just keeps waiting and retrying until stop() is called.
In the same time, opencore AndroidAudioInput::audin_thread_func() loop cannot be exited when stuck
in AudioRecord::read() because the iExitAudioThread flag can only be sampled when AudioRecord::read()
returns. We remain stuck with the audio input thread running.

The fix consists in modifying AudioRecord behavior in case of timeout when getting new PCM samples.
We now wait only one timeout period and try to restart audio record, in case the problem is due to a media_server
process crash. If this fails, we exit read() with a number of bytes read equals to 0 so that
AndroidAudioInput::audin_thread_func() loop can exit.

Also modified Audioflinger::RecordThread() loop so that we attempt to recover from HAL read errors.
In case of read error, the input stream is forced to standby so that next read attempt does a
reconfiguration and restart of the audio input device.
udioRecord.cpp
05bca2fde53bfe3063d2a0a877f2b6bfdd6052cf 26-Feb-2010 Eric Laurent <elaurent@google.com> Issue 2071329: audio track is shorter than video track for video capture on sholes

Add API to retrieve number of frames dropped by audio input kernel driver.

Submitted on behalf of Masaki Sato <masaki.sato@motorola.com>
udioRecord.cpp
udioSystem.cpp
AudioFlinger.cpp
e3d91046072908f5613a21652b6da9b44043f1d5 27-Feb-2010 James Dong <jdong@google.com> Merge "Don't allow MediaRecorder.setParameter() to be invoked in the following states: error, prepared or recording"
698f476590bc9e38d4d1d4155da9efdbedd357c4 26-Feb-2010 Marco Nelissen <marcone@google.com> When we're in the 'playback complete' state, don't consider pausing
an error. This makes 'playback complete' essentially equivalent to
being paused at the end, and treats it the same as being paused at
any other position.
ediaplayer.cpp
e284bac7757ad732d0812eb6133125434ba66d5b 26-Feb-2010 James Dong <jdong@google.com> Don't allow MediaRecorder.setParameter() to be invoked in the following states:
error, prepared or recording

bug - 2362412
ediarecorder.cpp
f5a8385649204213dc19e1a64f4693931e048d85 24-Feb-2010 James Dong <jdong@google.com> Image encoding settings java API through xml configuration file

- I decided to completely remove jpeg decoding related stuff from this change
I think that setting is better off if it is specified by the system properties.
We don't have to include MediaProfiles.h header in skia files
ediaProfiles.cpp
df49e8926e85088bc7d1dc7905362437c9806b69 22-Feb-2010 Eric Laurent <elaurent@google.com> am 8978547f: am f5fe3949: Fix issue 2459650.

Merge commit '8978547f254b6b6ba2e322794aa044803f3edc2a'

* commit '8978547f254b6b6ba2e322794aa044803f3edc2a':
Fix issue 2459650.
7c7fa1b51bec497cd7f46c1bdb5bb0adfaa181b2 22-Feb-2010 Eric Laurent <elaurent@google.com> Fix issue 2459650.

This change fixes a problem where an unwanted tone is generated by audio policy manager when a MT call is answered.
This is because of a policy that replaces high visibility system sounds (ringtones, alarms...) by a beep when in call.
There is a transitory phase while the call is being answered where the phone state is changed to IN_CALL but the
ringtone is still playing. The audio policy manager then mutes the end of the ringtone and starts playing a beep
in replacement because the ringtone is categorized as high visibility.

The fix consists in changing the ringtone stream type from high visibility to low visibility. This is not a problem as
the only actual use case where a ringtone would be generated while in call is if another call is received.
But in this case, the phone system does not generate a ringtone but a call waiting tone instead.
It is therefore not required to handle a ringtone as a high visibiltiy tone that must be somehow signaled to the user
while in call.
udioSystem.cpp
eb03f13fd3b5a4b1060cd55881934ff9c918fe8c 18-Feb-2010 Kenny Root <kroot@google.com> Range check in MediaScanner::processDirectory

Make sure we don't have an empty string before checking if it's a
directory since this string is tainted.

Change-Id: I5eb310ced58c3c64a7af2d11b80326efe5adbcab
ediaScanner.cpp
4e92c7efc68b5d7635a32dbd283ab8558ad9bdd6 12-Feb-2010 Andreas Huber <andih@google.com> New API on java's MediaPlayer to suspend/resume a session.

related-to-bug: 2231576
MediaPlayer.cpp
ediaplayer.cpp
3cf613507f1e2f7bd932d921a6e222e426fd3be4 10-Feb-2010 Mathias Agopian <mathias@google.com> split libsurfaceflinger_client and libcamera_client out of libui
ndroid.mk
MediaPlayer.cpp
MediaRecorder.cpp
OMX.cpp
ediaplayer.cpp
ediarecorder.cpp
77f8531a739c46cffe7f7fd1e035de542deccf48 10-Feb-2010 Marco Nelissen <marcone@google.com> Do autodetection even if no locale was specified, and use the
detected encoding if it is unambiguous.
ediaScannerClient.cpp
1d7491b19516505e0754c66a3c8cd61811c9b6a6 20-Jan-2010 James Dong <jdong@google.com> Initial check-in for xml-based encoder capabilities retrieval
- Changed the Java API as suggested
- Treat /etc/media_profiles.xml as the default xml configurtion file
ndroid.mk
ediaProfiles.cpp
867d2f6ce668968e463eb86b856d21525f12fd67 26-Jan-2010 Mathias Agopian <mathias@google.com> Simplify the MemoryDealer implementation

At some point the implementation became complicated because of
SurfaceFlinger's special needs, since we are now relying on gralloc
we can go back to much simpler MemoryDealer.

Removed HeapInterface and AllocatorInterface, since those don't need
to be paramterized anymore. Merged SimpleMemory and Allocation.
Made SimplisticAllocator non virtual.

Removed MemoryDealer flags (READ_ONLY, PAGE_ALIGNED)

Removed a lot of unneeded code.
udioRecord.cpp
udioTrack.cpp
2db8455d8f4468a637109d31f319ce02d9d743ec 28-Jan-2010 Andreas Huber <andih@google.com> API Extension: Support for optionally specifying a map of extra request headers when specifying the uri of media data to be played.

related-to-bug: 2393577

Original change by Andrei Popescu <andreip@google.com>
MediaPlayerService.cpp
ediaplayer.cpp
342e9cf388cceb807def720e40e8b0a217f4bcaa 20-Jan-2010 Eric Laurent <elaurent@google.com> Fix issue 2285561: New AudioFlinger and audio driver API needed for A/V sync

Added getRenderPosition() API to IAudioFlinger to retreive number of audio frames
written by AudioFlinger to audio HAL and by DSP to DAC.

Added getRenderPosition() API to AudioHardwareInterface to retreive number of audio frames
written by DSP to DAC.

Exposed AudioTrack::getPosition() to AudioSink() to make it available to media player.

Removed excessive log in AudioHardwareGeneric.
udioSystem.cpp
AudioFlinger.cpp
b72a396826da8bd934b9531bbd40f86d7509e71c 25-Jan-2010 Eric Laurent <elaurent@google.com> Fix issue 2378022: AudioService should direct volume control to STREAM_VOICE_CALL stream when STREAM_VOICE_CALL stream is active.

Modified AudioService.getActiveStreamType() so that STREAM_VOICE_CALL is selected when a track using this stream
type is playing.

Chanded isMusicActive() for a more generic isStreamActive(stream) method in AudioSystem, IAudioFlinger and AudioFlinger.
udioSystem.cpp
AudioFlinger.cpp
0ef583f785528ef2785e6149d5964004cd1016b0 25-Jan-2010 Eric Laurent <elaurent@google.com> Fix issue 2363154: Speech synthesis fails to start over A2DP after media server process crash.

The problem is that after a media_server crash, the value of the A2DP output handle can change.
As this value is cached in AudioSystem for all client processes there can be a mismatch between the cached
and actual value after a media_server restart.

The fix consists in clearing the cached output handles and output to stream map values cached
in AudioSystem in AudioFlingerClient::binderDied() which is called when the media_server crashes.
udioSystem.cpp
570a3cb7582daa030cb38eedc5eb6a06f86ecc7f 21-Jan-2010 Andreas Huber <andih@google.com> Fix no-copy-overhead OMXCodec implementation to actually work.
OMX.cpp
5cb4241cbeb409f2322bd527349c080a2cf454df 19-Jan-2010 Andreas Huber <andih@google.com> Merge "Avoid unnecessary buffer copying if at all possible, detect if running in the mediaserver process."
7eaa9c9385535b651064e02d05a8ffa4b2359281 16-Jan-2010 Andreas Huber <andih@google.com> Avoid unnecessary buffer copying if at all possible, detect if running in the mediaserver process.
OMX.cpp
dd172fce75b2a1c3cb3a5d3b3bbb5020b1ae8675 16-Jan-2010 James Dong <jdong@google.com> Media server death nodification
ndroid.mk
MediaDeathNotifier.cpp
ediaplayer.cpp
ediarecorder.cpp
67e5a4f6f6879d512a859e5dba92e9beec7a2f91 08-Jan-2010 Andreas Huber <andih@google.com> Reorganize some of the stagefright implementation related to metadata.
ndroid.mk
tagefrightMediaScanner.cpp
tagefrightMediaScanner.h
134ee6a324c35f39e3576172e4eae4c6de6eb9dc 16-Dec-2009 Andreas Huber <andih@google.com> Squashed commit of the following:

commit 144b1c40e9cf08a584c50e1bef7ba3f287e81a4f
Author: Andreas Huber <andih@google.com>
Date: Wed Dec 16 09:28:23 2009 -0800

This H264 file shows a certain problem even better.

commit 3245f1f3b7471975aeeb824a756c987abd610f55
Author: Andreas Huber <andih@google.com>
Date: Wed Dec 16 09:20:08 2009 -0800

Using only the QA testfiles now.

commit 074817eb3816c5dd70858a3594e3b92d799d873b
Author: Andreas Huber <andih@google.com>
Date: Tue Dec 15 16:17:39 2009 -0800

Yay, roles are back again now that the API is in place.

commit 6d847e4932cc38301ae27cb7283b7f1553a95457
Author: Andreas Huber <andih@google.com>
Date: Tue Dec 15 13:01:20 2009 -0800

Added commandline option for specifying the random seed for reproducable tests.

commit 62ab37b26336eaa67e49791c41c996acb6acee3f
Author: Andreas Huber <andih@google.com>
Date: Mon Dec 14 10:53:27 2009 -0800

When issuing a seek it is important that only the first MediaSource::read call has the seek option.

commit e77c46644b2fb6862bafa3569f7d304252074f1e
Author: Andreas Huber <andih@google.com>
Date: Mon Dec 7 16:39:07 2009 -0800

Make sure the tests are actually built, sp<OMXCodec> becomes sp<MediaSource>

commit 6df56915bd55a9445b3c6f953d3cc251d81579b8
Author: Andreas Huber <andih@google.com>
Date: Thu Dec 3 14:25:36 2009 -0800

Temporarily disable support for querying the roles of OMX components.

commit 31bb26930df9e3658dea684cedb4b0f1a06a4a88
Author: Andreas Huber <andih@google.com>
Date: Tue Dec 1 13:36:52 2009 -0800

Disregard EOS events, slightly change the way the EOS flag on output buffers is handled.

commit 4c382fbc9aebee8197d5988d04378062809e7c48
Author: Andreas Huber <andih@google.com>
Date: Tue Dec 1 09:37:24 2009 -0800

New random seek test for the codec tests. Fixed "sticky" end-of-output-buffers flag behaviour in OMXCodec.

commit c762eac3e44309592b61a168d66e091cf609fa03
Author: Andreas Huber <andih@google.com>
Date: Tue Nov 3 14:13:43 2009 -0800

Fix a typo.

commit 50540a59b65c7d476b0193c7494cd75895e6ca6d
Author: Andreas Huber <andih@google.com>
Date: Tue Nov 3 09:48:35 2009 -0800

Some more fine tuning of the unit tests, make MPEG4Extractor less verbose.

commit 1157a7e52a0636706caa235abe16d2ff8a0b8140
Author: Andreas Huber <andih@google.com>
Date: Wed Oct 28 12:01:01 2009 -0700

Changes to the IOMX::listNodes API, this now returns the component's roles as well, unit tests now test all components in all supported roles by default.

commit 30fbf2d8c6cb927689f7ba75eb550a81e9df488a
Author: Andreas Huber <andih@google.com>
Date: Mon Oct 26 09:45:26 2009 -0700

Initial check-in of unit tests for OMX components.
OMX.cpp
a410d5a7150d6b14f98197e570c78ea7b6a65091 07-Dec-2009 Eric Laurent <elaurent@google.com> am 6d42d806: Merge change I9cc489a2 into eclair

Merge commit '6d42d80653f2c41f3e72a878a1d9a6f9693b89f7' into eclair-mr2

* commit '6d42d80653f2c41f3e72a878a1d9a6f9693b89f7':
Fix issue 2304669: VoiceIME: starting and canceling voice IME yields persistent "error 8" state on future attempts and breaks voice search.
148b266afe2ac92b5616c24e8d5160e6f9242f69 05-Dec-2009 Eric Laurent <elaurent@google.com> Fix issue 2304669: VoiceIME: starting and canceling voice IME yields persistent "error 8" state on future attempts and breaks voice search.

Fixed AudioFlinger::openInput() broken in change ddb78e7753be03937ad57ce7c3c842c52bdad65e
so that an invalid IO handle (0) is returned in case of failure.
Applied the same correction to openOutput().
Modified RecordThread start procedure so that a failure occuring during the first read from audio input stream is detected and causes
the record start to fail.
Modified RecordThread stop procedure to make sure that audio input stream fd is closed before we exit the stop function.

Fixed AudioRecord JAVA and JNI implementation to take status of native AudioRecord::start() into account
and not change mRecordingState to RECORDSTATE_RECORDING if start fails.
udioRecord.cpp
adf7d77752b3dbd47badc8819aa2674860d6ccba 04-Dec-2009 Android (Google) Code Review <android-gerrit@google.com> Merge change I6c84d731 into eclair-mr2

* changes:
Media/ToneGenerator: Change tone format for TONE_CDMA_ANSWER
97494da9d418b599fa1b9930487b90c978357634 04-Dec-2009 Andreas Huber <andih@google.com> I accidentally broke this code while refactoring MediaScanner. This is the fix.
tagefrightMediaScanner.cpp
413f523afe96aff02d2b0a7459127b8f67b2b43c 03-Dec-2009 Andreas Huber <andih@google.com> Refactor MediaScanner. Some steps on the way towards being able to build the tree without OpenCore.
ndroid.mk
ediaScanner.cpp
ediaScannerClient.cpp
tagefrightMediaScanner.cpp
tagefrightMediaScanner.h
utodetect.cpp
utodetect.h
981594f5c3697c3330bdbd4bb5a743fb9f01e6ab 14-Oct-2009 Naveen Kalla <nkalla@quicinc.com> Media/ToneGenerator: Change tone format for TONE_CDMA_ANSWER

Tone format for TONE_CDMA_ANSWER should be 660Hz + 1000Hz, with a 500ms ON
duration.
oneGenerator.cpp
a7c816c4bdb72cf4f9fe853a96cd7efdb394006d 24-Nov-2009 Dave Sparks <davidsparks@android.com> am 16cc72bd: Fix simulator build.

Merge commit '16cc72bdef471ffeee3f61eba8262783de248b04' into eclair-mr2

* commit '16cc72bdef471ffeee3f61eba8262783de248b04':
Fix simulator build.
827f3004421aacb6bceaf772ac825d4f2d3006e4 24-Nov-2009 Dave Sparks <davidsparks@android.com> am 8424ec32: Merge change I0f9a53d4 into eclair

Merge commit '8424ec323b2bc38887370c75e2c1fcd84bcdb013' into eclair-mr2

* commit '8424ec323b2bc38887370c75e2c1fcd84bcdb013':
Set metadata retriever thread group to the caller's group.
f311c557729099d002f4aae37c402a8287912369 24-Nov-2009 Dave Sparks <davidsparks@android.com> Fix simulator build.
MediaMetadataRetriever.cpp
ec4dde75955f87e5afea3f59ef991130257f3f3a 24-Nov-2009 Dave Sparks <davidsparks@android.com> Set metadata retriever thread group to the caller's group.

This patch modifies the native binder interface to the metadata
retriever to pass the caller's thread group across the binder
interface. On the server side, the thread scheduler group is
set to the caller's scheduler group temporarily and restored
after the request has completed. This patch also reverts a
previous patch where the priority of the thread was forced to
a low priority foreground thread.

This should give apps more control over the priority of their
metadata retrieval, particularly allow background process to
run without hogging the CPU.
MediaMetadataRetriever.cpp
bf89c099fc97717e3008a481aeddc76c1ac5e00d 21-Nov-2009 Eric Laurent <elaurent@google.com> am e7800946: Merge change I49f02be9 into eclair

Merge commit 'e7800946a42c0ebe8e0b3f6eba04a96a9641aaff' into eclair-mr2

* commit 'e7800946a42c0ebe8e0b3f6eba04a96a9641aaff':
Issue 2265163: Audio still reported routed through earpiece on sholes
6100d2d60517ff33ed8eb35d0b7ea63cde0831c9 19-Nov-2009 Eric Laurent <elaurent@google.com> Issue 2265163: Audio still reported routed through earpiece on sholes

This is a second attempt to fix the audio routed to earpiece syndrom.
The root cause identified this time is the crash of an application having an active AudioTrack playing on the VOICE_CALL stream type.
When this happens, the AudioTrack destructor is not called and the audio policy manager is not notified of the track stop.
Results a situation where the VOICE_CALL stream is considered as always in use by audio policy manager which makes that audio is routed to earpiece.

The fix consists in moving the track start/stop/close notification to audio policiy manager from AudioTrack to AudioFlinger Track objet.
The net result is that in the case of a client application crash, the AudioFlinger TrackHandle object (which implements the remote side of the IAudioTrack binder interface) destructor is called which in turn destroys the Track object and we can notify the audio policy manager of the track stop and removal.

The same modification is made for AudioRecord although no bug related to record has been reported yet.
Also fixed a potential problem if record stop is called while the record thread is exiting.
udioRecord.cpp
udioTrack.cpp
057eacf4578ac6b90ee18c524670e01445bf2732 13-Nov-2009 Eric Laurent <elaurent@google.com> am fddfb9ae: Merge change Iad79689a into eclair

Merge commit 'fddfb9ae03a2730ac5ce27fa4c47b7d3a0285d0f' into eclair-mr2

* commit 'fddfb9ae03a2730ac5ce27fa4c47b7d3a0285d0f':
Improvements for issue 2197683: English IME key-press latency is noticeably higher on passion than sholes
2b584244930c9de0e3bc46898a801e9ccb731900 10-Nov-2009 Eric Laurent <elaurent@google.com> Improvements for issue 2197683: English IME key-press latency is noticeably higher on passion than sholes

This change goes with a kernel driver change that reduces the audio buffer size from 4800 bytes (~27ms) to 3072 bytes (~17ms).
- The AudioFlinger modifcations in change 0bca68cfff161abbc992fec82dc7c88079dd1a36 have been removed: the short sleep period was counter productive when the AudioTrack is using the call back thread as it causes to many preemptions.
- AudioFlinger mixer thread now detects long standby exit time and in this case anticipates start by writing 0s as soon as a track is enabled even if not ready for mixing.
- AudioTrack::start() is modified to start call back thread before starting the IAudioTrack so that thread startup time is masked by IAudioTrack start and mixer thread wakeup time.
udioTrack.cpp
5b65c7043dada0c89d3a941742666ac40ea35746 05-Nov-2009 Andreas Huber <andih@google.com> DO NOT MERGE: Squashed commit of the following:

commit 08259dd3dc9026887f9bbfedaf45866eb56ea9bc
Author: Andreas Huber <andih@google.com>
Date: Thu Nov 5 12:02:31 2009 -0800

DO NOT MERGE: Use PV for metadata extraction even if stagefright is used for playback.

commit 991832fe4dc012e51d3d9ed8d647c7f09991858f
Author: Andreas Huber <andih@google.com>
Date: Thu Nov 5 11:24:11 2009 -0800

DO NOT MERGE: Do not assert if we encounter OMX_StateInvalid. All bets are off though.

commit cec45cf302d9218fe79956cbe8a462d7ca3a10bb
Author: Andreas Huber <andih@google.com>
Date: Mon Oct 26 16:11:54 2009 -0700

DO NOT MERGE: When freeing an OMX node, attempt to transition it from its current state all the way to "Loaded" in order to properly free any allocated buffers.

commit 34a1e885ef9113d68acbc26d36fcc47fdebbed84
Author: Andreas Huber <andih@google.com>
Date: Thu Nov 5 11:10:49 2009 -0800

DO NOT MERGE: Fix heap corruptin in OMXNodeInstance.

commit 5a47f7439a1298b330541a7e4e647a8b44487388
Author: Andreas Huber <andih@google.com>
Date: Thu Nov 5 11:08:19 2009 -0800

DO NOT MERGE: Fix seek-on-initial-read behaviour of OMXCodec.

commit 45bed64722501b9f411a2940aff5aff4cc4d2e98
Author: Andreas Huber <andih@google.com>
Date: Thu Nov 5 11:02:23 2009 -0800

DO NOT MERGE: Renaming string.h to stagefright_string.h to avoid conflicts.

commit 6738e306a50196f31a73d4fc7b7c45faff639903
Author: Andreas Huber <andih@google.com>
Date: Thu Oct 15 13:46:54 2009 -0700

DO NOT MERGE: Reimplement the OMX backend for stagefright.

Besides a major cleanup and refactoring, OMX is now a singleton living in the media server, it listens for death notifications of node observers/clients that allocated OMX nodes and performs/attempts cleanup.

Changed APIs to conform to the rest of the system.
MediaPlayerService.cpp
OMX.cpp
1c02bfb63ea6e1d1630a09229044d64be200a9ef 05-Nov-2009 Eric Laurent <elaurent@google.com> am 67b69292: Merge change I93f500a5 into eclair

Merge commit '67b692920c18f99b096dce285adc6f7439fa866c' into eclair-mr2

* commit '67b692920c18f99b096dce285adc6f7439fa866c':
Fix issue 2203561: Sholes: audio playing out of earpiece.
34f1d8ecd23169a5f299937e3aaf1bd7937578a0 04-Nov-2009 Eric Laurent <elaurent@google.com> Fix issue 2203561: Sholes: audio playing out of earpiece.

Create a new IAudioTrack interface to AudioFlinger when start() fails due to a broken pipe error.
Do the same if start fails due to the same error after time out in obtainBuffer().
Do not indicate that the AudioTrack is started to AudioPolicyManager if IAudioTrack start fails.
This avoids that an AudioTrack keeps a dead IAudioTrack after a media server crash.

Same modifications for AudioRecord.

Add a flag to ToneGenerator indicating that the callback thread can call Java. Without it, when the media server crashes and restarts, the AudioSystem error callback will crash in JNI if the IAudiotrack is created from AudioTrack callback thread.
udioRecord.cpp
udioTrack.cpp
AudioRecord.cpp
AudioTrack.cpp
oneGenerator.cpp
fe44b7a8b2b8da50a7a78f4b7e034b6d01785e44 24-Oct-2009 Eric Laurent <elaurent@google.com> am bf96aaad: Merge change Icf10db28 into eclair

Merge commit 'bf96aaadd46fb5b0884070177faa16ec4f22e2ba' into eclair-mr2

* commit 'bf96aaadd46fb5b0884070177faa16ec4f22e2ba':
Fix issue 2192181: AudioFlinger must provide separated methods to set VOICE_CALL stream volume and down link audio volume.
88e5ad9f0d9b35d4868347bce47b28b7358b32e4 24-Oct-2009 Android (Google) Code Review <android-gerrit@google.com> Merge change Icf10db28 into eclair

* changes:
Fix issue 2192181: AudioFlinger must provide separated methods to set VOICE_CALL stream volume and down link audio volume.
09d88b00dbd0a04ed45a661590cca49d6e5b42f5 23-Oct-2009 Eric Laurent <elaurent@google.com> am dd28d563: Fix 2209967 Tonegenerator: mutex not release in startTone() upon timeout waiting for the stop sequence to complete.

Merge commit 'dd28d56368441537ec5eb42150516416fdbf10ad' into eclair-mr2

* commit 'dd28d56368441537ec5eb42150516416fdbf10ad':
Fix 2209967 Tonegenerator: mutex not release in startTone() upon timeout waiting for the stop sequence to complete.
a9a4390989072d579eedab6b71fb41248b3ad8fe 23-Oct-2009 Eric Laurent <elaurent@google.com> Fix 2209967 Tonegenerator: mutex not release in startTone() upon timeout waiting for the stop sequence to complete.

Unlock mLock mutex when exiting upon wait stop timeout condition.
Increase timeout delays to avoid timing out when A2DP exits standby.
oneGenerator.cpp
f0ee6f4055e26fb35d9c526a596668a4dc9da5ba 21-Oct-2009 Eric Laurent <elaurent@google.com> Fix issue 2192181: AudioFlinger must provide separated methods to set VOICE_CALL stream volume and down link audio volume.

Added setVoiceVolume() method to AudioSystem, AudioFlinger, IAudioFlinger, AudioPolicyService.
Removed call to AudioHardwareInterface::setVoiceVolume() from AudioFlinger::setStreamVolume().
udioSystem.cpp
AudioFlinger.cpp
318ad9c1d9d6515026dfc2c021359d27decaa7a1 15-Oct-2009 Andreas Huber <andih@google.com> Reimplement the OMX backend for stagefright.

Besides a major cleanup and refactoring, OMX is now a singleton living in the media server, it listens for death notifications of node observers/clients that allocated OMX nodes and performs/attempts cleanup.

Changed APIs to conform to the rest of the system.
MediaPlayerService.cpp
OMX.cpp
36efa039efaae4526791336cb688032d22b34bec 08-Oct-2009 Andreas Huber <andih@google.com> Some decoders will return an error on OMX_EmptyThisBuffer to indicate that they don't support the media format, deal with this.
OMX.cpp
e33e00e931d1381d402484aa5cde67e540e3c82c 06-Oct-2009 Eric Laurent <elaurent@google.com> Fix issue 2139634: DTMF tones on Sholes popping, hissing (audio latency too high).

This change is a complement to the main fix in kernel driver for the same issue (partner change #1250).
It removes clicks sometimes heard after the end of the tones while audio flinger is sending 0s to the audio output stream.
The problem was that the sleep time between two writes was more than the duration of one audio output stream buffer which could cause some underrun.

Also fixed a recent regression in ToneGenerator that made that the end of previous tone was repeated at the beginning of current one under certain timing circumstances when the maximum tone duration was specified.
oneGenerator.cpp
10dbb8e97e7a81ca4867663b5517f048820b3094 20-Sep-2009 Marco Nelissen <marcone@google.com> Music visualizer support hack.
This currently assumes 44k stereo (won't crash on other formats, but won't give the correct results either), and links statically with libspeex to get FFT data, increasing the size of libmedia by about 45kb.
ndroid.mk
MediaPlayerService.cpp
ediaplayer.cpp
824b6a4a67166c3937400702944f659bd0d5d386 24-Sep-2009 Eric Laurent <elaurent@google.com> Fix issue 2142613: ToneGenerator: short tones sometimes don't play on sholes or over A2DP.

When the AudioTrack callback notification size is relatively high (Which is the case on Sholes and over A2DP), it is likely that the end of tone is reached during the first callback. In this case, the AudioTrack is stopped before exiting the callback which causes 2 problems:
- 1: If the AudioFlinger thread is scheduled before we exit the ToneGenerator callback, the track can be stopped and reset before the data is actually marked as present in the buffer by the AudioTrack callback => no audio will be processed by AudioFlinger.
- 2: In this case, the data write index in the AudioTrack buffer is incremented after the track was reset by the AudioFlinger which leaves unplayed data in the buffer. This data will be played the next time the AudioTrack is started if not flushed in between.

The fix consists in adding an intermediate state to ToneGenerator state machine so that we exit the callback function when the stop condition is reached and stop the AudioTrack the next time we execute the callback.
oneGenerator.cpp
1b84df1a0823fbcb9cec754311f53eaccfe85ae3 15-Sep-2009 Andreas Huber <andih@google.com> Added an API IOMX::createRendererFromJavaSurface.

This api allows to instantiate a renderer by specifying the hosting java Surface object. This hides the implementation details of (java-)Surface, (native-)Surface and friends.
ndroid.mk
OMX.cpp
5841db78dff14898538200287d246577b1fc37e2 09-Sep-2009 Eric Laurent <elaurent@google.com> Fix issue 2107584: media server crash when AudioFlinger fails to allocate memory for track control block.

AudioFlinger: verify that mCblk is not null before using it in Track and RecordTrack contructors.
IAudioFlinger: check result of remote transaction before reading IAudioTrack and IAudioRecord.
IAudioTrack and IAudioRecord: check result of remote transaction before reading IMemory.
AudioFlinger.cpp
AudioRecord.cpp
AudioTrack.cpp
85fa14d35468acca07ce0085d67b909f673fae07 07-Sep-2009 Eric Laurent <elaurent@google.com> Fix issue 1992233: DTMF tones on Sholes is really long.

Add a parameter to ToneGenerator.startTone() allowing the caller to specify the tone duration. This is used by the phone application to have a precise control on the DTMF tone duration which was not possible with the use of delayed messaged.
Also modified AudioFlinger output threads so that 0s are written to the audio output stream when no more tracks are ready to mix instead of just sleeping. This avoids an issue where the end of a previous DTMF tone could stay in audio hardware buffers and be played just before the beginning of the next DTMF tone.
oneGenerator.cpp
a9c322e398a1f5fdcace3b8b73967f010b1c31ca 27-Aug-2009 Eric Laurent <elaurent@google.com> Fix issue 2045911: Camera Shutter tone does not play correctly while listening to music.

Add the possibility to delay routing and volume commands in AudioPolicyClientInterface. The delay is not blocking for the caller.
udioSystem.cpp
c6b59b7c8acf7c6e7fbb93470aecc2c0ebe1b084 17-Aug-2009 Andreas Huber <andih@google.com> Support for marshalling pointers / intptr_t in Parcel.

Some refactoring to eliminate code duplication in Parcel implementation.
OMX.cpp
693d271e62a3726689ff68f4505ba49228eb94b2 14-Aug-2009 Andreas Huber <andih@google.com> Squashed commit of the following:

commit 5bb012f0065f7ffaaeb4f569d71f0e3a8d6b19c3
Author: Andreas Huber <andih@google.com>
Date: Fri Aug 14 10:40:08 2009 -0700

An attempt at fixing export using the qcom encoders. More quirks.

commit 0690e76bfa48118a68287ccf1bbfa82febaa620c
Author: Andreas Huber <andih@google.com>
Date: Fri Aug 14 09:08:28 2009 -0700

Callbacks are now dispatched from a separate thread in OMX.

commit c6571a039526df29b6343f9a1971dbc019088c61
Author: Andreas Huber <andih@google.com>
Date: Thu Aug 13 15:42:25 2009 -0700

Massive API changes throughout stagefright, smart pointers everywhere.

commit 900612af6a0555664d9ba195112cd859491265f4
Author: Andreas Huber <andih@google.com>
Date: Thu Aug 13 13:33:12 2009 -0700

OMXCodecs now properly shutdown.

commit 96732f05e1b0603dcd1b11f16a23512592eeb4f5
Author: Andreas Huber <andih@google.com>
Date: Thu Aug 13 12:04:04 2009 -0700

More work on JPEG decoding using the hardware OMX component.

commit 63839a073ac393e3a130434ba467969053b694ad
Author: Andreas Huber <andih@google.com>
Date: Wed Aug 12 13:13:31 2009 -0700

An attempt to drive the JPEG decoder OMX node.

commit 3ac2fe5ab2926eda81b2123610b2434c645294ff
Author: Andreas Huber <andih@google.com>
Date: Tue Aug 11 16:38:21 2009 -0700

Renamed StateMachine to OMXCodec and put it in its proper place.

commit 247da75a96bf8881956413023dd49a84d5b4f5b2
Author: Andreas Huber <andih@google.com>
Date: Tue Aug 11 16:06:19 2009 -0700

Statemachine is now a full-fledged MediaSource.

commit 045244f6771fa0b9b329495c953afda900a84b71
Author: Andreas Huber <andih@google.com>
Date: Fri Aug 7 09:16:54 2009 -0700

Properly setup the input format when exporting to AMR audio.

commit 271b984cb32c5cd9e46e3f90ae121f334e4b8da9
Author: Andreas Huber <andih@google.com>
Date: Thu Aug 6 09:59:38 2009 -0700

Added some code to test audio encoding to the OMX harness.

commit 79af4748e4af33bd66d3fbac606e332a69741cf4
Author: Andreas Huber <andih@google.com>
Date: Wed Aug 5 14:36:22 2009 -0700

Merge the old OMXDecoder and the new, shiny, StateMachine code.

commit 91cf5dd77a8762bc10a0b2ffce35e3bbeb262231
Author: Andreas Huber <andih@google.com>
Date: Tue Aug 4 17:41:43 2009 -0700

A new harness to test OMX node compliance (and quirks).
OMX.cpp
5a22b909c9e8fc0d9321dcc014706a790b26b971 11-Aug-2009 Eric Laurent <elaurent@google.com> Fix issue 2045983 ToneGenerator: fix void statement.

There is a void statement at line 917 of ToneGenerator.cpp: mState == TONE_IDLE;
This problem is harmless as in current code this execution path is never taken; it can only happen if a "new" operator fails in prepareWave() which is a case we usually consider as unlikely in android audio framework.
oneGenerator.cpp
f4148b55c5d6f68b22462e3880015fefa91ae7c6 07-Aug-2009 Andreas Huber <andih@google.com> Expose a variation of the createRenderer API that works on a plain Surface.
OMX.cpp
408b8e1073385d0d09bb96b9952f84731a0b4aeb 07-Aug-2009 Andreas Huber <andih@google.com> Deprecate/remove now unused socketpair ipc communication in favour of exclusive binder use.
OMX.cpp
23aea9771d800ce43ffd8a23ad64ed6cead4b159 07-Aug-2009 Android (Google) Code Review <android-gerrit@google.com> Merge change 9674

* changes:
Fix problem in AudioTrack with 8 bit PCM and direct output.
fa2877b9ea48baed934b866d2ab3658b69c4c869 28-Jul-2009 Eric Laurent <elaurent@google.com> Fix issue 2001214: AudioFlinger and AudioPolicyService interfaces should not use pointers as handles to inputs and outputs.

Use integers instead of void* as input/output handles at IAudioFlinger and IAudioPolicyService interfaces.
AudioFlinger maintains an always increasing count of opened inputs or outputs as unique ID.
udioSystem.cpp
AudioFlinger.cpp
AudioFlingerClient.cpp
AudioPolicyService.cpp
3302526f6276911b2dc40c731ea7fa0e7972d908 04-Aug-2009 Eric Laurent <elaurent@google.com> Fix problem in AudioTrack with 8 bit PCM and direct output.

Do not perform 8 to 16 bit conversion in AudioTrack write() and processAudioBuffer() if direct output flag is set.
udioTrack.cpp
8b938cdab5bd3d074d9b41bc2915fcfc11e47f27 31-Jul-2009 Andreas Huber <andih@google.com> The IOMX interface now instantiates IOMXRenderers to hide the details of hardware accelerated blitting.
OMX.cpp
c2f1f07084818942352c6bbfb36af9b6b330eb4e 17-Jul-2009 Eric Laurent <elaurent@google.com> Fix issue 1795088 Improve audio routing code

Initial commit for review.
Integrated comments after patch set 1 review.
Fixed lockup in AudioFlinger::ThreadBase::exit()
Fixed lockup when playing tone with AudioPlocyService startTone()
ndroid.mk
udioRecord.cpp
udioSystem.cpp
udioTrack.cpp
AudioFlinger.cpp
AudioFlingerClient.cpp
AudioPolicyService.cpp
etPlayer.cpp
oneGenerator.cpp
a64c8c79af1a15911c55306d83a797fa50969f77 21-Jul-2009 niko <niko@google.com> Added native metadata support.

Metadata.java:
Fixed typo 8k != 8092. The comment was correct though.

In Metadata.h, the new Metadata class is declared in the ns android::media
to limit the chances of conflict with other packages.

The MetadataType in MediaPlayerInterface is gone and moved to Metadata as
an inner typedef.

Similarly the SortedVector<MetadataType> instance have been replace by a
new type Metadata::Filter.

All the keys declared in the java counterpart are also in Metadata.h.

Metadata.cpp:
Contains the implementation of the native metadata packing.

There an associated change in the opencore package that should go in
at the same time as this one.
ndroid.mk
etadata.cpp
20111aa043c5f404472bc63b90bc5aad906b1101 15-Jul-2009 Andreas Huber <andih@google.com> Squashed commit of the following:

commit 8d179995654c19d9094e51989dc84ed0deba6e04
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 16:30:40 2009 -0700

Protect stagefright code with BUILD_WITH_STAGEFRIGHT build-define.

commit 99b41acb58c34e8f024c30c833a09fd7b31c4e1f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 14:06:00 2009 -0700

OMX::list_nodes API, stagefright --list now lists all available OMX components.

commit 94a74c5b24aae6d7e446fff83d62ae3a57dc351b
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 16:04:29 2009 -0700

Reenabled "record" commandline application to test encoding, support for h263 codec specific data when writing to .mp4.

commit d363dd74f611577567c66d25900d6264c306468c
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:59:58 2009 -0700

Make non-socket communication in IOMX the default.

commit e89fc82c4fd138c88339887baf72f1d0e67f8660
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:32:33 2009 -0700

The OMX interface now optionally supports communication through the binder only (no sockets involved)

commit 28611de11223fba65299787cdd33f7fdbd6a60a3
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 15:09:13 2009 -0700

Split off the logic to render to a Surface (not ISurface!) into SurfaceRender.{cpp,h}

commit c0cfa885faaeb17d3fc5436f6447b61708bd6fe1
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 12:21:46 2009 -0700

Fix display dimensions vs. decoded dimensions display issues, unfortunately breaks software rendering a bit...

commit ae209a2b5d09caed5dd383c910f238926aaa8fc6
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 09:33:29 2009 -0700

Simple video decoder performance test in "stagefright" commandline tool.

commit 59fe7840111d6f46dd3c48f4950146aed962dbd2
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 16:05:12 2009 -0700

StagefrightPlayer: Properly publish video dimensions by notifying the listener.

commit 51b6598f0e47be5e12d77f1d14e111e71c593638
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 11:38:15 2009 -0700

MediaPlayerInterface::AudioSink now supports the specification of a callback for pull-based audio.

commit 31ce53375d748da3e7d30e993ce89dae97fd65ea
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 17:23:37 2009 -0700

Proper support for pushing audio to a specified AudioSink interface. Still not bulletproof: video falls behind frequently.

commit a23e312b10631a5d47f5c9831205beac6b84ab36
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 15:10:13 2009 -0700

IGenesisPlayer and friends are no more, java interface now uses local playback instead
of playing inside the media server process.

commit 42ee5c06ab5ba1c16f50472b0b26a0526635c73c
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 13:17:03 2009 -0700

MP3 extractor now supports seeking (only fixed bitrate files currently supported)

commit 96a790405763bfa738d1c6845c99a9fdf579b66f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 7 10:53:54 2009 -0700

Keeping up-to-date with new master-gl changes, removing CameraSource for now, removing unnecessary commandline utilities from the build.

commit 6c9dcb7c628c0347154dd7f37913a3a5f04deb99
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 16:40:02 2009 -0700

Finally take advantage of the fact that the Qcom OMX decoders already place the output buffers into memory accessible by the hardware yuv converter and avoid extra allocations and memcpys in that case. Split of the render logic into subclasses of VideoRenderer.

commit e8d46e81cffc15ffb0bdf03f511e4a4497ca7621
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 12:18:29 2009 -0700

Added a few more cases of valid MPEG4 files to the sniffer, fixed end of stream notifications in MPEG4 files.

commit 88bffc5ed4033a607080f8777a1c0ec9e3e079de
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 2 12:25:03 2009 -0700

MediaPlayerImpl now properly pauses/resumes instead of tearing down the decoder chains and starting back up from the beginning.

commit 732aa0a87c7e8d8a10776b275712649954962414
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:58:56 2009 -0700

Remove pthread_mutex_* and pthread_cond_* in favour of Mutex and Condition.

commit 669e5944b2fe0542a3b8dba0c441a94503e99fb0
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:43:02 2009 -0700

Proper support for end-of-stream signalling of MediaSources.

commit afb038f2dc594c742e554b2d42b86ffc7434e3fc
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 30 16:48:03 2009 -0700

Support for the "sniffing" of datasources to determine their probable mime type (along with confidence). Slightly refactored the MP3Extractor to share common code with the sniffer.

commit ed3644b8bd56807e1db4b32433a93a2467f1f3c5
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 13:27:52 2009 -0700

I don't think prepare should automatically start the player.

commit 11eb9b49dc4a0819d366682817cba68613f4fe12
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 11:09:22 2009 -0700

Somewhat better timing information implemented in the MP3Extractor.

commit cab023a1751735c0ed26c8493498a91d8644c6c9
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 25 15:41:56 2009 -0700

Initial checkin for support of mp3 content, extraction and playback. Media extractors now abstracted in MediaExtractor baseclass.

commit 40f4146bb3c647e56690dd9b0fa3ffdea60030dc
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:41:12 2009 -0700

Make sure we only allocate surface buffers if there is video to be played.

commit 7f85e7d92fe81740e102e09905b19354f4ac178e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:19:32 2009 -0700

Clean up a failed merge and implement stub for new API in MediaPlayerBase.

commit f0e9d494a4c03402ea7b54891848ca5a50c421b2
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 15:38:03 2009 -0700

Support yuv420->rgb565 conversion if hardware color conversion is unavailable.

commit 87223248b3099cd5261b94169f84cfd1eba56a8f
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 09:35:56 2009 -0700

Remove unimplemented and currently unnecessary blocking option from MediaSource::ReadOptions.

commit e07e651f0325892b797f3eb64dbeca0f317afdfd
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 16:26:42 2009 -0700

Enable assertions in HTTPDataSource.

commit 0dc97adebea1721156880f4b3d5c70f8d50c53b2
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:39 2009 -0700

delete foo.

commit 7f05845dda496e7defee284d32509d127e785784
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:08 2009 -0700

added foo.

commit e432970c51eeec4e5d549bdb3e2d3e48ffb4f0e7
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 11:44:31 2009 -0700

Make sure to initialize all fields in _all_ constructors... Use a Mutex instead of the raw pthread_mutex_t.

commit d6286a6bbca639952491448fa3e609b775a8a814
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 17:11:49 2009 -0700

send_command is now implemented twice... ugly hack to get both shutdown working correctly and startup as well... playback now "works" on the emulator, too.

commit 8d657e004677a7c5dae4479e8519bcaa94c18aad
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 11:58:55 2009 -0700

Instead of erasing codec specific data once it's been output to the omx node, retain the data and just rewind after a stop.

commit 279fede6ba35cbc37c35616c53406bf2c9720202
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 10:58:11 2009 -0700

Various fixes related to play/pause. Decoder now properly frees OMXMediaBuffers, made MemoryDealer destructor protected instead of public to prevent accidental stack-allocation of MemoryDealer objects.

commit 0f717f15a6328efd3f34082929cd8ad2351095a9
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 08:44:12 2009 -0700

Make sure to rewind codec specific data on OMXDecoder::stop and reset AudioPlayer's notion of time mapping.

commit 0cfb63e33270daf9b215214608ab383f93a31823
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 14:25:48 2009 -0700

Massive rename.

commit 30ed8f476c4431a5275538958b3e281bd17d5eab
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 13:52:41 2009 -0700

send_command and fill/empty buffer commands must be executed in sequence, send_command is now dispatched over the socket instead of through the binder interface to ensure this.

commit b832d04011b2dd8a9632eb7e575bfe1addd1270d
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:21:17 2009 -0700

MediaBuffers can now be "clone()", they sit on top of the same data but have their own range and metadata. Once a clone's refcount drops to 0 it decrements the refcount on the original buffer.

commit 4e944672808bdf1ed40a69f3f602f93ebf7b4049
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:01:01 2009 -0700

Split MediaBuffer.h into MediaBufferGroup.h and MediaBuffer.h, same with their respective source files.

commit ddb7529b4de4828db51432bd405fddd76cfa3b6a
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 16:30:25 2009 -0700

More fudging with A/V sync...

commit 1e5a4d8df08237b58c06c6527a33152ae931addf
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 11:54:20 2009 -0700

API cleanup of MediaSource. Got rid of MediaRing as it really doesn't serve a purpose if OMX decoders are used.

commit 0953c65232aa9753d17d2e25c5f5526eb810cf13
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 16:59:19 2009 -0700

Experimental TimedEventQueue and an attempt at a cleaner player implementation using it, OMXDecoder is now a little less verbose.

commit 2085b8ea9484a21fa11f94194a27405d413aeecc
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 10:17:01 2009 -0700

Properly bail out of the AV sync loop if the MediaPlayerImpl is stopped.

commit 471f143458a8a0d93cb1bf9568c63c3967279dc6
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 17:32:27 2009 -0700

Now this is much better AV sync, defer seeking the audio source until we know where the video source synced to.

commit 4010d371dbe62ce4971e13437776cba32cb0bb3d
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 16:01:07 2009 -0700

Tweaked some of the heuristics in AV sync, OMXDecoder is now a little less verbose, seek to a sync sample at or _after_ the requested position.

commit f3d4af1d5a4ac31fa02271b000f6c7ec593f0da9
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 15:33:58 2009 -0700

Change the TimeSource interface's APIs, prefer microseconds over milliseconds now, changed the way MediaPlayerImpl does AV sync.

commit 08bb46fa61d12e852a424698ddb0c90700328f6e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 11:57:24 2009 -0700

Using framework's Mutex and Condition classes instead of pthread functions, much saner locking in OMXDecoder.

commit 4d77b4e09e59bbf8c1af009ae7dc62b10af52fd6
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 17:12:03 2009 -0700

MediaSources now publish their format.

commit 7e429a26c57bf936e1a08035d2d11839f9f00310
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 16:38:29 2009 -0700

MetaData is now implemented in terms of KeyedVector, MetaData is now reference counted.

commit 0fa957aa5c9bcb6ec122ed7b5b97430039be6797
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 14:39:55 2009 -0700

Sync sample seek support.

commit 78a5f090d02e7e6e1a146b29bdb7771eecaa2f86
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 13:51:11 2009 -0700

Distinguish shutdown from port-flush since one requires buffers to be freed and the other one doesn't. Fixes a problem with seek.

commit e57781d3b2c985a74cd8b60e7c8f2d576459d038
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 10:52:20 2009 -0700

First shot at support for seeking a MediaSource. Sync frames are not properly handled yet.

commit 0551cd78fda78bf66877fb26c5a55e5ae23d8367
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 16:23:38 2009 -0700

Preliminary support for camera input.

commit f8ebafa65d10d5a06944de6b2e2992a33121b857
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 12:13:47 2009 -0700

Allow NativeMediaPlayer access to Surface's getISurface() method.

commit b1a9fb36eeccd9f49d28c1c64b31fccbd6506eeb
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:38:25 2009 -0700

Header files are now in their own genesis2 hierarchy below frameworks/base/include.

commit f49b8b234b8f6ce83148787eef540dd920f04aa6
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:22:03 2009 -0700

moved MPEG4Writer into libgenesis2.

commit 5224254919dac4728677335ea60429fa16f518b4
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:13:38 2009 -0700

Everything now lives in the android namespace, integrated errors with android errors, renamed MediaPlayer to MediaPlayerImpl.

commit f9a9d84f7e0465ef5d1938a068655ba39527cf99
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 16:43:11 2009 -0700

Support for getPosition() and getDuration().

commit 3206cc5140bcbc88be039f8d94b954af63e69752
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 15:37:45 2009 -0700

Support for {MediaPlayer, GenesisPlayer, Genesis2Player}::isPlaying()

commit 9f41b248e0dfce71bbc50f883750cec52ebfd1fe
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 13:49:50 2009 -0700

Proper disconnection from the OMX service.

commit cdcf47a2c31599109ee42277c7fa14af3c600091
Author: Andreas Huber <andih@google.com>
Date: Tue May 26 17:27:06 2009 -0700

New player type for the genesis player in libmediaplayerservice. Playing video through an ISurface now.

commit 0586af20ac9ae0403dd190bafd290b0f90549723
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 15:53:19 2009 -0700

Fix a buffer overflow error by adding padding in case we need to de-frame AVC data.

commit eac62fff6ad2ffb7b75c0d4a1b9620d33e93fb9b
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 13:35:30 2009 -0700

Support for http URIs in MediaPlayer, compensate for AudioTrack latency.

commit a7db456e3173d94d6b5e457547e2a6a5f7a8e1cc
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 11:33:25 2009 -0700

Support for URIs in MediaPlayer class, support for shoutcast streams in MediaPlayer, force shutdown of OMX nodes if they don't shutdown cleanly within a second.

commit 1f0268f4f14ad5215668f34e06a420850174d665
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:33:16 2009 -0700

and foo.txt is gone again.

commit 0feca4e0919f345704d78ec78894bac5027bd5ed
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:28:49 2009 -0700

added foo.txt

commit 9c7d04b35cdc895a2de3602dc46522f608bd205f
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:28:04 2009 -0700

delete foo again

commit fec3ca1720992cce51b9a92b86b945da88a6b16c
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:27:45 2009 -0700

weird

commit 30a6571302333146e537e537a3a8986245cca87c
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:18:55 2009 -0700

reverse test

commit dea3d99dd0fe9386e8a3c51954d9d0fe2be09d38
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:18:22 2009 -0700

test

commit a9eeafec6e46072cac41e54ebdbd153cb7ae7518
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 16:37:50 2009 -0700

Use the video ring again for now.

commit e05ff3d3c1c4f89ef499a2b172138a775fd694e3
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 15:42:19 2009 -0700

Export to .mp4 now works for MPEG4 video content. Fixed a bug in the sample table wrt co64 chunks.

commit 5c44c540374a4e50c4e8aaab2b7a34aed6e1391e
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 09:56:11 2009 -0700

Fix the build, all binder-related headers have moved and there's a new library libbinde
r to link against now.

commit 23e0a24404d16c898c2c6b3c7495ad303844bc71
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 08:42:04 2009 -0700

Initial checkin of MPEG4Writer, a class to export media sources into an mpeg4 file. MPEG4/AVC metadata (efss & friends) not currently working.

commit 9cd77adb1ac194197364ffad00a0d7215f458e1a
Author: Andreas Huber <andih@google.com>
Date: Wed May 20 12:31:45 2009 -0700

New shell command to test recording/encoding. Various changes to OMXDecoder to support encoding properly. Now each OMXDecoder needs a dedicated thread on the client side since onEvent responses could block which would cause deadlocks if a node depends on the output of another node for example.

commit 5c510fb55ffed7ec25305999ed9b6c1eec48d503
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 15:40:06 2009 -0700

Make media decoding the default in the genesis2 commandline app instead of shoutcast playback.

commit f6c7a2040b8eb43326621f12c3a936e09b3a70e3
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 11:03:04 2009 -0700

The king is dead, long live the kind... Replaced old OMX binder interface with new OMX binder interface/socket hybrid.

commit 0d4955eb5df9bfafb576d22f2ed572644d6d69ac
Author: Andreas Huber <andih@google.com>
Date: Thu May 14 12:39:34 2009 -0700

dynamic negotiation of NAL framing with the MPEG4Source, removed stale code from genesis2 commandline tool. Enable support form PV H264 software decoder.

commit 380369f54a8027cbc9349305184d6bf527a24efe
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 17:32:00 2009 -0700

Explore the option of running everything inside the mediaserver process by encapsulating the player in an IGenesisPlayer binder interface.

commit b5cada56b9089a23e0c461352a97dc71e08b424d
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 12:11:06 2009 -0700

Introduction of TimeSource class, clean shutdown of OMX Nodes.

commit 89f6e582e605dcb2149eb67f73fe9345d4b9be2e
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 17:11:56 2009 -0700

Helper classes MediaRing and MediaPlayer.

commit 9aaed8739b4bb941473da367fb88f63224d2f1b7
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 14:19:18 2009 -0700

Using mmap to map a file instead of going through FILE* improves performance, who knew?

commit ad097a78bbd002c59193ffdc39b64935928426c7
Author: Andreas Huber <andih@google.com>
Date: Mon May 11 16:42:42 2009 -0700

Added a performance test, refactored AudioDecoder a little.

commit bdd1b80ab3f3ba43e04f1f996e7fa84ed2e2728a
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 16:19:29 2009 -0700

No more copying the output buffers coming out of the decoder, NAL separation also done in the extractor to avoid copying the data.

commit 858955b42c29b8033841a8caaa56c2a449810ef3
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 14:02:38 2009 -0700

Change from a model in which the caller specifies the destination buffer to one where the MediaSource returns a buffer.

commit 95098b6d4f8bdc37dfb6a109ca58db4d9e414e2d
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 13:21:45 2009 -0700

Changes to support multiple pieces of codec specific data to the decoder, de-frame nal units from the h.264 stream and insert start codes

commit 3941fcf87a48dda81683df727dfb1381f62d9184
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 16:37:45 2009 -0700

some refactoring. Most streams play now.

commit d3152862840d4dd39068e5197bec8674f3d55dd5
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 15:37:32 2009 -0700

Misc. changes to support H264 decoding using the qcom hardware decoder

commit d4ecdfe7af36e7468270d1c2cbbdc540efe0351e
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 09:28:18 2009 -0700

Timestamps are now stored as a fraction, i.e. units and scale, also, PV appears to violate OMX specs by assuming timestamps are in milliseconds instead of microseconds.

commit fe6a50943f885e065d4061aa727a54417e9f36db
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 14:18:27 2009 -0700

Refactored commandline app instantiation of the decoder.

commit da1ff2724d0e78e8b360d9a2c34c55dd0e2c0492
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 10:41:14 2009 -0700

Proper audio/video synchronization.

commit 569ee3a23f600f4b6b87c6178c0223b06e97f201
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 09:17:20 2009 -0700

Preliminary support for timestamps.

commit e4e302a89207550d8a7170d8c0afbd9c15047c84
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:13:12 2009 -0700

Another quick hack job to make CachingDataSource thread-safe as well.

commit dfb376a58bd7c09aa04e89558186fcfe13fe696c
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:08:14 2009 -0700

Quick rushjob to make FileSource and SampleTable thread safe.

commit 02b29e7ebdab1f8b959b6c177ceb3b89d998f375
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 17:22:04 2009 -0700

Made video decoding work for mpeg4/h263 and mostly(?) with AVC content.

commit 3a57b8ff15e48f5a0af03bf0a99c32e240dbb7ef
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 09:26:42 2009 -0700

Getting rid of old sample code to drive the OMXNode binder interface.

commit 5b046aed0cf524a57ea711bc1e43ea80e57b2cb3
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 16:21:11 2009 -0700

Moved files from the commandline utility into the framework, renamed MP3Decoder to AudioDecoder

commit 7f3fbba21512a078b732cc52c7bd5ba5acb9a317
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 15:56:19 2009 -0700

Fixed buffer ordering and an off-by-1 error in the SampleTable code. Plays all AACs now :)

commit 024d06baab8f2c540dde16f7e7a4b6dd57f638c7
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 11:52:48 2009 -0700

Some AAC content in .3gp or .mp4 files plays correctly now, other does not. Implemented ESFS parser.

commit 1470427866b0d3e0ce6848b4edc01c13a09be289
Author: Andreas Huber <andih@google.com>
Date: Thu Apr 30 15:19:31 2009 -0700

Another checkpoint, amr decoding now functional.

commit e612d044439f56331b6a2bc4a88622e04d4d42e7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 12:11:29 2009 -0700

string wrapper around String8, various fixes, shoutcast now works again.

commit 2ea52dfb1a39bf3a223ffc87855e54919e2daff7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 11:08:18 2009 -0700

Initial check-in of OMXNode binder interface.

commit 7880d2957f74c0d7fba7679431ff5adb3780543b
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 10:05:01 2009 -0700

Initial check-in of both libgenesis2 and the genesis2 commandline tool.
ndroid.mk
MediaPlayerService.cpp
OMX.cpp
a25f0fcebaa9fcb550ae2ccd5913085ae48b1018 15-Jul-2009 Android (Google) Code Review <android-gerrit@google.com> Merge change 7067

* changes:
add a ctor to Mutex to specify the type, which can be shared. This is used by sf and af an soon will allow some optimization in the kernel for non shared mutexes
2b50fba2b143c2e0597c941d67bea1b8e80c9caf 14-Jul-2009 Mathias Agopian <mathias@google.com> first attempt to fix the sim
ndroid.mk
b07c28b90b2d2793be2b8878d813b607f3eebbb7 14-Jul-2009 Mathias Agopian <mathias@google.com> add a ctor to Mutex to specify the type, which can be shared. This is used by sf and af an soon will allow some optimization in the kernel for non shared mutexes
udioTrack.cpp
aa37173500f221298fa618b5ca8b4814aff5ef31 10-Jul-2009 Marco Nelissen <marcone@google.com> Don't pass references to temporary objects, and handle the case where we dont have a Surface.
ediaplayer.cpp
8e1b6cce24574b9ecd5b0300155776bd0b4ef756 09-Jul-2009 Nicolas Catania <niko@google.com> Basic plumbing to retrieve metadata from the native player.

IMediaPlayer.h
Added a getMetadata method that mirrors the on in MediaPlayer.java.

MediaPlayer.java
Added a native method to get the metadata from the native player.
Parse the parcel into a Metadata object.

Metadata.java
Added a stub to parse the Parcel returned by the native player into
a set of metadata.

android_media_MediaPlayer.cpp
JNI call to forward the getMetadata call.

MediaPlayerService.cpp
MediaPlayerService::Client implements the new getMetadata method added in IMediaPlayer.h
MediaPlayer.cpp
ediaplayer.cpp
a920ee99dc97b54b661d1238d8c26ac07c875bed 09-Jul-2009 Android (Google) Code Review <android-gerrit@google.com> Merge change 6636

* changes:
Implemented the metadata changed notification filters.
699f095c05229c5f3d21c54d55698de4f30eaa35 09-Jul-2009 Eric Laurent <elaurent@google.com> am 5964e737: Fix issue 1946033: dialer deadlocks and/or ANRs when using dialpad in-call

Merge commit '5964e73774b381748013b91d04dfb6fc60f533ee'

* commit '5964e73774b381748013b91d04dfb6fc60f533ee':
Fix issue 1946033: dialer deadlocks and/or ANRs when using dialpad in-call
a7e0e8b4c429fc68eb1bd5b5a30f5b91352288f9 08-Jul-2009 Nicolas Catania <niko@google.com> Implemented the metadata changed notification filters.

IMediaPlayer:
new setMetadataFilter method so set a filter (2 lists of allowed and blocked metadata type)
serialized in a Parcel.

MediaPlayer.java/android_media_MediaPlayer.cpp/mediaplayer.cpp
new setMetadataFilter that passes the filter down to the MediaPlayerService's binder interface.

MediaPlayerService.cpp
The Client inner class holds the allowed and blocked metadata types.
These are in 2 vectors that get populated in the setMetadataFilter.

A new shourldDropMetadata method returns true if a type of metadata should be dropped according
to the filters.

The notify method in run the metadata update notifications thru the filter and possibly drop them.
MediaPlayer.cpp
ediaplayer.cpp
c38bb0614dc0b5dee682b9a1de47de5ae7d215d8 09-Jul-2009 Eric Laurent <elaurent@google.com> Fix issue 1946033: dialer deadlocks and/or ANRs when using dialpad in-call

The cause is very likely that the WaveGenerator *lpWaveGen returned by lpToneGen->mWaveGens.valueFor(lFrequency) just before calling lpWaveGen->getSamples(lpOut, lGenSmp, lWaveCmd) is invalid. The frequency lFrequency is not part of the frequencies in mWaveGens.
This can happen if a different tone is started while the callback function is active: The state is changed to TONE_RESTARTING and the call to prepareWave() at line 1226 will change the tone descriptor pointed to by mpToneDesc as well as the content of mWaveGens. However, mpToneDesc was cached in a local variable lpToneDesc when entering the callback and is not reloaded when exiting prepareWave(). This causes a mismatch between the tone frequencies listed in lpToneDesc and the frequencies present in mWaveGens.
This regression was introduced in change 973 when mpToneDesc was cached in a local variable.
oneGenerator.cpp
349dba337e07e129f6ba49a132999f0b73fedbe3 07-Jul-2009 Eric Laurent <elaurent@google.com> am 88e209dc: Fix issue 1743700: AudioTrack: setPlaybackRate can not set the playback rate to twice of the ouputSR

Merge commit '88e209dcf8c2ebddda5c272f46d1bd5478bc639c'

* commit '88e209dcf8c2ebddda5c272f46d1bd5478bc639c':
Fix issue 1743700: AudioTrack: setPlaybackRate can not set the playback rate to twice of the ouputSR
573266210fb2b2e7d86fbd46d0dfe16763611d91 07-Jul-2009 Eric Laurent <elaurent@google.com> Fix issue 1743700: AudioTrack: setPlaybackRate can not set the playback rate to twice of the ouputSR

Store sample rate on 32 bits instead of 16 bits in audio_track_cblk_t.
Removed sampleRate() methods from AudioTrack and AudioRecord: replaced by getSampleRate().
AudioTrack::setSampleRate() no returns a status.
udioRecord.cpp
udioTrack.cpp
1d187f1a86855f5f0694d7ec30efc9833bf7c589 13-May-2009 Nicolas Catania <niko@google.com> Direct api to the native media player.

MediaPlayer.java has 3 new methods:
* newRequest creates a Parcel that can be used to send data to the
native player using invoke.
* invoke issues synchronous calls to the native player using opaque
parcels for the request and reply.

IMediaPlayer.h has 1 new abstract method:
* invoke

The Midi and Vorbis players have a stub for these. So far only PV
makes use of that new feature.

To avoid any copy overhead, the JNI interface uses Parcel as a java
object (no serialization/copy happens at the JNI layer).

The remote interface token is inserted when the Parcel is constructed
in java. That way the parcel is already routable when it reaches
IMediaPlayer.cpp (proxy). No extra copy is needed there.
MediaPlayer.cpp
MediaPlayerService.cpp
ediaplayer.cpp
3d59a4b99937a7d0dc07eec2574cc8a98cc99fdd 23-Jun-2009 Android (Google) Code Review <android-gerrit@google.com> am 1bee98af: Merge change 5100 into donut

Merge commit '1bee98af6532eba3c6cda636eee890530c95a2a7'

* commit '1bee98af6532eba3c6cda636eee890530c95a2a7':
Fill in CDMA gaps and clean up ToneGenerator code
5e0a3043af16bc71a4211ee00dc00724de6623a7 17-Jun-2009 David Krause <david.krause@motorola.com> Fill in CDMA gaps and clean up ToneGenerator code
oneGenerator.cpp
56f0cc533a38bdb84bc03adcb43515614ab21bae 22-Jun-2009 niko <niko@google.com> Renamed all android.hardware.IMedia* strings to android.media.IMedia*

The android.hardware.ICamera string have not been changed (but is looks
like the camera service and client one should undergo the same procedure)

The implementation of the interface must provide a unique string for
it's interface name. Currently all these strings in the media framework
start with 'android.hardware' when it should really be 'android.media',
the interface token has nothing to do with hardware.
MediaMetadataRetriever.cpp
MediaPlayer.cpp
MediaPlayerClient.cpp
MediaPlayerService.cpp
MediaRecorder.cpp
4710a1f6c9800dae90f9e2702ba2b5b54c095eae 12-Jun-2009 Android (Google) Code Review <android-gerrit@google.com> am d670b8c6: Merge change 3981 into donut

Merge commit 'd670b8c61ebd13324ac21bdbc08d8a02fc0a765a'

* commit 'd670b8c61ebd13324ac21bdbc08d8a02fc0a765a':
Removed trailing whitespaces.
660951867e959ebe98612742ef1f72d33ea7e9a3 12-Jun-2009 Nicolas Catania <niko@google.com> Removed trailing whitespaces.
MediaPlayerService.cpp
ediaplayer.cpp
2a7d5b3c1a3749db7c4ace34bf1253c44967e843 09-Jun-2009 Android (Google) Code Review <android-gerrit@google.com> am b2df1699: Merge change 1548 into donut

Merge commit 'b2df1699c996e62baa78877978cd2c5607ea4194'

* commit 'b2df1699c996e62baa78877978cd2c5607ea4194':
NJ-1409: (frameworks/base) Support new audio encoding types(AMR and AAC).
9747c5a1f5e51fab72169767972bf55f73711000 08-Jun-2009 Jianhong Jiang <jianhong@google.com> NJ-1409: (frameworks/base) Support new audio encoding types(AMR and AAC).
ediarecorder.cpp
489d60ec36c3927c9ee0bc14a44c1c77b74c09f6 27-May-2009 Android (Google) Code Review <android-gerrit@google.com> am f3288f17: Merge change 2468 into donut

Merge commit 'f3288f178ae2b2c7910b234f54f43475a83eb860'

* commit 'f3288f178ae2b2c7910b234f54f43475a83eb860':
setVolume did not check interface descriptor
b7056fc8525e0515c6f46676e3307088f8b64cdc 23-May-2009 Mathias Agopian <mathias@google.com> some work to try to reduce the code size of some native libraries

- make sure that all binder Bn classes define a ctor and dtor in their respective library.
This avoids duplication of the ctor/dtor in libraries where these objects are instantiated.
This is also cleaner, should we want these ctor/dtor to do something one day.

- same change as above for some Bp classes and various other non-binder classes

- moved the definition of CHECK_INTERFACE() in IInterface.h instead of having it everywhere.

- improved the CHECK_INTERFACE() macro so it calls a single method in Parcel, instead of inlining its code everywhere

- IBinder::getInterfaceDescriptor() now returns a "const String16&" instead of String16, which saves calls to String16 and ~String16

- implemented a cache for BpBinder::getInterfaceDescriptor(), since this does an IPC. HOWEVER, this method never seems to be called.
The cache makes BpBinder bigger, so we need to figure out if we need this method at all.
AudioFlinger.cpp
AudioFlingerClient.cpp
AudioRecord.cpp
AudioTrack.cpp
MediaMetadataRetriever.cpp
MediaPlayer.cpp
MediaPlayerClient.cpp
MediaPlayerService.cpp
MediaRecorder.cpp
172fb9ab347e146642234f0bd6f223d351e9fd0b 26-May-2009 Dave Sparks <davidsparks@android.com> setVolume did not check interface descriptor
DO NOT MERGE
MediaPlayer.cpp
95634c8b6ad5419e310a5196bcc37f5988ed82da 26-May-2009 Android (Google) Code Review <android-gerrit@google.com> am de8268d6: Merge change 2331 into donut

Merge commit 'de8268d6d1cd168510c490b17e93154d2eab767c'

* commit 'de8268d6d1cd168510c490b17e93154d2eab767c':
Fix issue 1846343 - part 1
f5879c1448cc6aebc51b26d3ec2399d66144f8f4 22-May-2009 Eric Laurent <elaurent@google.com> Fix issue 1846343 - part 1

This change is the first part of a fix for issue 1846343, :
- Added new enum values for input sources in AudioRecord and MediaRecorder for voice uplink, downlink and uplink+downlink sources.
- renamed streamType to inputSource in all native functions handling audio record.

A second change is required in opencore author driver and android audio input to completely fix the issue.
udioRecord.cpp
AudioFlinger.cpp
7562408b2261d38415453378b6188f74fda99d88 20-May-2009 Mathias Agopian <mathias@google.com> move libbinder's header files under includes/binder
udioRecord.cpp
udioSystem.cpp
udioTrack.cpp
AudioFlinger.cpp
AudioFlingerClient.cpp
AudioRecord.cpp
AudioTrack.cpp
MediaMetadataRetriever.cpp
MediaPlayer.cpp
MediaPlayerClient.cpp
MediaPlayerService.cpp
MediaRecorder.cpp
ediametadataretriever.cpp
ediaplayer.cpp
ediarecorder.cpp
615a9bfbd98b90e09d868c128db84836feb658e4 19-May-2009 Mathias Agopian <mathias@google.com> checkpoint: split libutils into libutils + libbinder
ndroid.mk
4afdfa7fd7e9fe59fb298ef2ac252686e68bc73a 07-May-2009 Dave Sparks <davidsparks@android.com> Don't allow negative numbers in ToneGenerator toneType parameter
Bug 1836596
oneGenerator.cpp
0b62e242d112d46e9357242b0a4e11c720c98ca0 05-May-2009 Eric Laurent <elaurent@google.com> Fixed issue 1709450: Requirements for CDMA Tone Generator

Added new tone types for CDMA IS-95 specific tones.
Automatic selection between IS-95, CEPT and JAPAN version base on operator
country code for call supervisory tones.
Also improved tone generator capabilities:
- Each tone segment can now generate its own set of frequencies
- A tone does not have to be a succession of alternating ON/OFF segments
- The sequence repetition does not have to start from first segment
oneGenerator.cpp
1dd70b9f04961a06fcb73a97fca10a53b3245d3c 21-Apr-2009 Eric Laurent <elaurent@google.com> Fix issue 1745312: Various cleanups in media framework

AudioTrack, AudioRecord:
- remove useless mAudioFlinger member of AudioTrack and AudioRecord.
- signal cblk.cv condition in stop() method to speed up stop completion.
- extend wait condition timeout in obtainBuffer() when waitCount is -1 to avoid waking up callback thread unnecessarily

AudioFlinger:
- remove some warnings in AudioFlinger.cpp.
- remove function AudioFlinger::MixerThread::removetrack_l() as its content is never executed.
- remove useless call to setMasterVolume in AudioFlinger::handleForcedSpeakerRoute().
- Offset VOICE_CALL stream volume to reflect actual volume that is never 0 in hardware (this fix has been made in the open source): 0.01 + v * 0.99.

AudioSystem.java:
- correct typo in comment

IAudioflinger, IAudioFlingerClient:
- make AudioFlinger binder interfaces used for callbacks ONEWAY.

AudioHardwareInterface:
- correct routeStrings[] table in AudioHardwareInteface.cpp
udioRecord.cpp
udioTrack.cpp
AudioFlinger.cpp
AudioFlingerClient.cpp
ce80c82f58378da72d8a36f520c781cc5cac18a1 01-Apr-2009 Eric Laurent <> AI 144054: am: CL 144053 Fix issue #1751242 A2DP playback fails first time: Invalid buffer size: minFrameCount 10240, frameCount 4800
The problem comes from the fact that AudioSystem::getOutputFrameCount() calls getOutput() to retrieve the active output (A2DP or Hardware) before calling get_audio_flinger(). If it is the first time AudioSystem::getOutputFrameCount() is called in a given process, getOutput() will return a wrong value because gA2dpEnabled has not yet been updated by get_audio_flinger().
The fix consists in calling get_audio_flinger() in getOutput() to be sure that gA2dpEnabled is valid when getOutput() reads it.
Original author: elaurent
Merged from: //branches/cupcake/...

Automated import of CL 144054
udioSystem.cpp
cd6725a333395ffeac3215ea4bf834a95aaa8def 25-Mar-2009 Eric Laurent <> Automated import from //branches/donutburger/...@142065,142065
udioRecord.cpp
4003bf5e4cd948fe7732c16b2a683acdbfa8c44d 25-Mar-2009 Andreas Huber <> Automated import from //branches/donutburger/...@141711,141711
ediaplayer.cpp
7d563247cdac0509009d579bbf849157d47c38a9 25-Mar-2009 Jean-Michel Trivi <> Automated import from //branches/donutburger/...@141200,141200
udioRecord.cpp
158857d5a6bb93aa6a135a338f9b6389e0f2b3a5 25-Mar-2009 Jean-Michel Trivi <> Automated import from //branches/donutburger/...@140867,140867
etPlayer.cpp
7dc112527d77b675d5c0451502b33fe2c552a79e 25-Mar-2009 Jason Sams <> Automated import from //branches/donutburger/...@140866,140866
ediaplayer.cpp
2c22aeb65e801f663a754d043062f85e49f77739 25-Mar-2009 Jean-Michel Trivi <> Automated import from //branches/donutburger/...@140663,140663
udioTrack.cpp
1179bc9b0e3d17c984e8f4ad38561c049dd102fa 19-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake_rel/...@140373
udioTrack.cpp
etPlayer.cpp
ediarecorder.cpp
c048cae0367db6fbb4fe1127be5011910713d4ad 13-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake_rel/...@138607
MediaRecorder.cpp
ediarecorder.cpp
65e731f393f704eedab6fbe0af7f8a580c8d4617 11-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@137873
ediaplayer.cpp
ediarecorder.cpp
8365529381f6284f2d59dcc38e26f73adeec9c67 09-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@137197
oneGenerator.cpp
8555d0867c3e8fe6cc5c7ad40af557fe6b92fa72 05-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@136594
udioTrack.cpp
ediarecorder.cpp
89fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
ndroid.mk
udioRecord.cpp
udioSystem.cpp
udioTrack.cpp
AudioFlinger.cpp
AudioFlingerClient.cpp
AudioRecord.cpp
AudioTrack.cpp
MediaMetadataRetriever.cpp
MediaPlayer.cpp
MediaPlayerClient.cpp
MediaPlayerService.cpp
MediaRecorder.cpp
etPlayer.cpp
ODULE_LICENSE_APACHE2
OTICE
oneGenerator.cpp
ediametadataretriever.cpp
ediaplayer.cpp
ediarecorder.cpp
15f767b960b38059a74a42a33e16d8df2aec8bc1 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
ndroid.mk
udioRecord.cpp
udioSystem.cpp
udioTrack.cpp
AudioFlinger.cpp
AudioFlingerClient.cpp
AudioRecord.cpp
AudioTrack.cpp
MediaMetadataRetriever.cpp
MediaPlayer.cpp
MediaPlayerClient.cpp
MediaPlayerService.cpp
MediaRecorder.cpp
etPlayer.cpp
ODULE_LICENSE_APACHE2
OTICE
oneGenerator.cpp
ediametadataretriever.cpp
ediaplayer.cpp
ediarecorder.cpp
ad04d9201452001dbaac4349f084cc9316190b89 03-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@132589
udioRecord.cpp
udioTrack.cpp
MediaRecorder.cpp
ediarecorder.cpp
99ffda877980468a9ae31e013cd10fb3645df1b0 03-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@137055
udioRecord.cpp
udioTrack.cpp
MediaRecorder.cpp
ediarecorder.cpp
925a349b45d1d16eaaca6a1f4827191831271ca0 20-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@132569
udioRecord.cpp
oneGenerator.cpp
25658fd43d150a45fb37734a9f9f27f48bb5c133 19-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@132276
udioTrack.cpp
etPlayer.cpp
7a2146d5807030b2629f347736be5301b61e8811 13-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@131421
udioRecord.cpp
udioSystem.cpp
udioTrack.cpp
AudioFlinger.cpp
AudioFlingerClient.cpp
MediaRecorder.cpp
etPlayer.cpp
oneGenerator.cpp
ediaplayer.cpp
ediarecorder.cpp
5e07b5774c8b376776caa4f5b0a193767697e97e 11-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@130745
ndroid.mk
udioRecord.cpp
udioSystem.cpp
udioTrack.cpp
AudioFlinger.cpp
AudioFlingerClient.cpp
etPlayer.cpp
oneGenerator.cpp
ediaplayer.cpp
e5198b620a9a208ec59ea8457282404725f8ff6e 20-Jan-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@127101
udioRecord.cpp
udioTrack.cpp
cce8bd12da6d8419a8770e4552a51ec297c250c2 10-Jan-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@125939
ndroid.mk
udioTrack.cpp
MediaMetadataRetriever.cpp
etPlayer.cpp
oneGenerator.cpp
ediarecorder.cpp
7b5eb023f8d87cca6d830ae6c11c6aadbe02aca8 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
ndroid.mk
udioRecord.cpp
udioSystem.cpp
udioTrack.cpp
AudioFlinger.cpp
MediaMetadataRetriever.cpp
MediaPlayer.cpp
MediaPlayerService.cpp
MediaRecorder.cpp
oneGenerator.cpp
ediametadataretriever.cpp
ediaplayer.cpp
ediarecorder.cpp
2729ea9262ca60d93047e984739887cfc89e82eb 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution
ndroid.mk
udioRecord.cpp
udioSystem.cpp
udioTrack.cpp
AudioFlinger.cpp
AudioRecord.cpp
AudioTrack.cpp
MediaPlayer.cpp
MediaPlayerClient.cpp
MediaPlayerService.cpp
ODULE_LICENSE_APACHE2
OTICE
oneGenerator.cpp
ediametadataretriever.cpp
ediaplayer.cpp