2048c2292c0466b184fb8f67c91f4d0ab9f5c3f3 |
|
08-Jan-2014 |
Haynes Mathew George <hgeorge@codeaurora.org> |
AudioTrack: When paused, return cached playback position An offload output can be re-used between two audio tracks having the same configuration. A timestamp query for a paused track while the other is running would return an incorrect time. To fix this, cache the playback position on a pause() and return this time when requested until the track is resumed. Bug: 12826612. Change-Id: Ia42b8b8fd2ba8993dfcc9abca72da48d71d78d74
/frameworks/av/include/media/AudioTrack.h
|
d0115d8c4db2f337030dea706bc0a434c4a03ed6 |
|
27-Jul-2013 |
Eric Laurent <elaurent@google.com> |
update offloaded audio track sampling rate AudioPlayer must read the sampling rate from offloaded audio sinks whenever a new time position is computed as the decoder can update the sampling rate on the fly. Bug: 12823955. Change-Id: I997e5248cfd4017aeceb4e11689324ded2a5bc88
/frameworks/av/include/media/AudioTrack.h
|
9cae217050aa1347d4ac5053c305754879e3f97f |
|
14-Jan-2013 |
Marco Nelissen <marcone@google.com> |
Assign blame for playback wakelocks. Set a work source for the playback wakelock, so that playback is counted against the requesting app instead of the media server. Cherrypicked from master. b/9464621 Change-Id: I7329f88a288a95a582a78005a1c3d16a5a611e31
/frameworks/av/include/media/AudioTrack.h
|
598de6c701e989385eeffa7c5dfd61f0459a2631 |
|
17-Oct-2013 |
Glenn Kasten <gkasten@google.com> |
Fix race condition in AudioTrack::pause followed by start Bug: 11148722 Change-Id: Iec88f00c8510363d4418e4b8d5b34feb06ecf04d
/frameworks/av/include/media/AudioTrack.h
|
5a6cd224d07c05b496b6aca050ce5ecf96f125af |
|
20-Sep-2013 |
Glenn Kasten <gkasten@google.com> |
Fix slow AudioTrack and AudioRecord destruction There were two causes for the slowness: When thread was paused, it used nanosleep and sleep. These usually run to completion (except for POSIX signal, which we avoid because it is low-level). Instead, replace the nanosleep and sleep by condition timed wait, as that can be made to return early by a condition signal. Another advantage of condition timed wait is that a condition wait was already being used at top of thread loop, so it is a simpler change. The AudioRecord destructor was missing a proxy interrupt that was correct in AudioTrack. This proxy interrupt is needed in case another thread is blocked in proxy obtainBuffer. Does not address the 1 second polling for NS_WHENEVER. Bug: 10822765 Change-Id: Id665994551e87e4d7da9c7b015f424fd7a0b5560
/frameworks/av/include/media/AudioTrack.h
|
53cec22821072719ee02c856e9ac2dda2496c570 |
|
29-Aug-2013 |
Glenn Kasten <gkasten@google.com> |
Add IAudioTrack::getTimestamp() with dummy implementation in AudioFlinger::TrackHandle, and implement AudioTrack::getTimestamp() using IAudioTrack. Also document invariant that mAudioTrack and control block are always non-0 after successful initialization. Change-Id: I9861d1454cff7decf795d5d5898ac7999a9f3b7e
/frameworks/av/include/media/AudioTrack.h
|
ce70374bf105f8a6160bf5dd70affea012b2a464 |
|
20-Jul-2013 |
Glenn Kasten <gkasten@google.com> |
New AudioTrack C++ API for audio timestamps This new API is intended to replace latency(), especially for A/V sync. The application will receive periodic timestamp notifications. The period is unspecified, but will likely be more frequent after a pause or stop, set position, underrun, display on/off change, route change, or when audio framework notices drift. It will be up to the higher level application (e.g. Stagefright) to reconstruct a clock that updates more frequently. The current latency() method doesn't indicate when latency changes due to screen on/off state, route changes, etc. Includes squahsed change-Id: I2082f8752040be0c234b1a6f1be2e269abf2ce7c Dummy implementation of AudioTrack:getTimestamp() Rename AudioTrack::Timestamp to AudioTimestamp. Renaming and pulling up to a higher level allows more modules to use it. Change-Id: Ibf7f6a207c3f8d8697f25ede2cd5200697fadb86 (cherry picked from commit dd69eb893867634fd169c03204a6ad7c74b351e7)
/frameworks/av/include/media/AudioTrack.h
|
f31abb4ee82050030b3e5a0793bb2b8e30f40d31 |
|
07-Aug-2013 |
Glenn Kasten <gkasten@google.com> |
Merge "Cleanup comments for the new control block implementation"
|
9b26847ed122a601ba857e0ef22ee2c818641120 |
|
05-Aug-2013 |
Glenn Kasten <gkasten@google.com> |
Merge "Make AudioRecord and AudioTrack comments more similar"
|
02de89293b74ab1e9a77ce2367c5c499ab038968 |
|
31-Jul-2013 |
Glenn Kasten <gkasten@google.com> |
Cleanup comments for the new control block implementation There was some obsolete and incomplete text left over after the new control block code was submitted. This cleans up all those comments to be accurate again. Change-Id: Ic52f5869cb723cde25d709514d6deea6aa6f20aa
/frameworks/av/include/media/AudioTrack.h
|
743732236ab84e94168378cdb293964861b1ed00 |
|
03-Aug-2013 |
Glenn Kasten <gkasten@google.com> |
Remove default parameters for AudioTrack The defaults aren't needed; all users must know these values. Change-Id: I0c1c97cb80bfea8e69a7cfa53ec85a91a8d48bb5
/frameworks/av/include/media/AudioTrack.h
|
6ca126d5c83386941c5cb9600099e5510e4430d6 |
|
31-Jul-2013 |
Glenn Kasten <gkasten@google.com> |
Make AudioRecord and AudioTrack comments more similar Change-Id: I122a7cf7bfc162090cb27f37c325db7a23985bc7
/frameworks/av/include/media/AudioTrack.h
|
d054c32443a493513ab63529b0c8b1aca290278c |
|
12-Jul-2013 |
Glenn Kasten <gkasten@google.com> |
Move control block mName to createTrack() output This is part of a series of CLs to clean up the shared memory control block, by removing any fields that don't have to be there. Change-Id: I6e51003a1293b6800258c31b22cff2eba42162e7
/frameworks/av/include/media/AudioTrack.h
|
b1a270d1e926fb9a01b4265a7675ed0c2c8f4868 |
|
14-May-2013 |
Richard Fitzgerald <rf@opensource.wolfsonmicro.com> |
libmedia: offloaded playback support - start() returns a status so that upper layers can recreate a non offloaded track in case of error. - Added states to handle offloaded tracks specific: - waiting for stream end (drain) notification by audio flinger - allow pause while waiting for stream end notification - getPosition() queries the render position directly from audio HAL. - disable APIs not applicable to offloaded tracks - Modified track restoring behavior for invalidated offloaded tracks: just send the callback and wait for upper layers to create a new track. - Added wait for stream end management in audio track client proxy. Similar to obtainBuffer and should be factored in. Change-Id: I0fc48117946364cb255afd653195498891f622bd Signed-off-by: Eric Laurent <elaurent@google.com>
/frameworks/av/include/media/AudioTrack.h
|
fb1fdc9d6603aa228362e7349451f6455c9849c2 |
|
11-Jul-2013 |
Glenn Kasten <gkasten@google.com> |
Add comments Change-Id: Ifbf3a46a4183c8abc0feee1c588953ab10303cc1
/frameworks/av/include/media/AudioTrack.h
|
ad3af3305f024bcbbd55c894a4995e449498e1ba |
|
25-Mar-2013 |
Richard Fitzgerald <rf@opensource.wolfsonmicro.com> |
Public API changes for audio offload support. NOTE: this does _not_ include all private member variables added to classes as part of offload support. Only public/protected functions and stubs functions/variables needed to make the changes buildable. - isOffloadSupported() added to audio policy service A stub implementation is required to build, this always returns false - setParameters() added to IAudioTrack A stub implementation is required to build, this always returns INVALID_OPERATION - CBlk flag for stream end - Change AudioSystem::getRenderPosition() to take an audio_output_t so caller can specify which output to query - Add AudioSystem::isOffloadSupported() This is fully implemented down to the AudioFlinger function AudioPolicyServer::isOffloadSupported() which is just a stub that always returns false. - Add EVENT_STREAM_END to AudioTrack interface. STREAM_END is used to signal when the hardware has actually finished playing all the data it was sent. - Add event type enumeration to media player interface AudioSink callbacks so that the same callback can be used to handle multiple types of event. For offloaded tracks we also have to handle STREAM_END and TEAR_DOWN events - Pass audio_offload_info_t to various functions used for opening outputs, tracks and audio players. This passes additional information about the compressed stream down to the HAL when using offload. For publicly-available APIs this is an optional parameter (for some of the internal and low-level APIs around the HAL interface it is mandatory) - Add getParameters() and setParameters() API to AudioTrack Currently dummy implementations. - Change AudioPlayer contructor so that it takes a set of bitflags defining what options are required. This replaces the original bool which only specified whether to use deep buffering. - Changes to StageFright class definition related to handling tearing-down of an offloaded track when we need to switch back to software decode - Define new StageFright utility functions used for offloaded tracks Currently dummy implementations. - AudioFlinger changes to use extended audio_config_t. Fills in audio_offload_info_t member if this info is passed in when opening an output. - libvideoeditor changes required to add the new event type parameter to AudioSink callback functions - libmediaplayerservice changes required to add the new event type parameter to AudioSink callback functions Change-Id: I3ab41138aa1083d81fe83b886a9b1021ec7320f1 Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com> Signed-off-by: Eric Laurent <elaurent@google.com>
/frameworks/av/include/media/AudioTrack.h
|
9f80dd223d83d9bb9077fb6baee056cee4eaf7e5 |
|
19-Dec-2012 |
Glenn Kasten <gkasten@google.com> |
New control block for AudioTrack and AudioRecord Main differences between old and new control block: - removes the mutex, which was a potential source of priority inversion - circular indices into shared buffer, which is now always a power-of-2 size Change-Id: I4e9b7fa99858b488ac98a441fa70e31dbba1b865
/frameworks/av/include/media/AudioTrack.h
|
2799d743ee2ae5a25fe869a7f9c052acc029559f |
|
30-May-2013 |
Glenn Kasten <gkasten@google.com> |
Use sp<AudioTrack> instead of raw AudioTrack * This change prepares for the new implementation of AudioTrack client, which will require clients to use only sp<AudioTrack>, not raw AudioTrack *. A raw delete will cause a race condition during AudioTrack destruction. AudioTrack was made a RefBase by commit b68a91a70bc8d0d18e7404e14443d4e4020b3635 on 2011/11/15, when it was needed by OpenSL ES (for the callback protector). At that time, the only other client that was also converted from AudioTrack * to sp<AudioTrack> was android.media.AudioTrack JNI in project frameworks/base (file android_media_AudioTrack.cpp). Details: * Use .clear() instead of delete followed by = NULL. * ALOG %p need .get(). * sp<> don't need to be listed in constructor initializer, if initially 0. * Use == 0 for sp<> vs == NULL for raw pointers. * Use if (sp != 0) instead of if (raw). Change-Id: Ic7cad25795d6e862e112abdc227b6d33afdfce17
/frameworks/av/include/media/AudioTrack.h
|
61aa989a5768b9b0571ca14edaf15886509a0ec8 |
|
03-May-2013 |
Eric Laurent <elaurent@google.com> |
am 1641f328: am 4170f515: Merge "Remove timing jitter during startup of audio" into jb-mr2-dev * commit '1641f328d4de3b2b61481607dc482ccaefe808a9': Remove timing jitter during startup of audio
|
a07f17ca46db04c9d5d9e7d6b2878db59ca2b9ea |
|
23-Apr-2013 |
Glenn Kasten <gkasten@google.com> |
Remove timing jitter during startup of audio This fixes a regression introduced recently, that increased timing jitter during the startup of the FastMixer and AudioTrack callback threads. The regression was to make requestPriority() asynchronous as a way to avoid an apparent priority inversion in system_server. This means that the target thread could run briefly with the initial priority, before the new priority takes effect. This change removes the startup jitter for FastMixer, by making the requestPriority() synchronous again for that case. It doesn't matter that this restores the priority inversion involving normal mixer thread, because it happens during startup of both threads. The change also removes the startup jitter for the AudioTrack callback thread, by having the target thread check whether the requestPriority() has completed yet. If not, the target thread blocks with a timeout until the priority boost finishes. Finally, we now log an error message if the expected priority boost doesn't happen. Bug: 8698989 Change-Id: Id590e9a274b70ec1ba85b44a585ee37a22e41cbc
/frameworks/av/include/media/AudioTrack.h
|
660fbbb77f42745d2c05b436f1a09c5cbd3853c5 |
|
09-Mar-2013 |
Glenn Kasten <gkasten@google.com> |
Merge "Propose new interpretation for setPosition and setLoop"
|
c9b2e20f7c9a71e07ef398152709c76079decbcd |
|
26-Feb-2013 |
Glenn Kasten <gkasten@google.com> |
Miscellaneous cleanup Abbreviation framesReady to fRdy for new systrace. Put inline const on one line. Use local copy of mState in state. Improve logging. Line length 100. Change-Id: I8201c3ce0e53fd464fd33d02544e52c342d40b68
/frameworks/av/include/media/AudioTrack.h
|
9c6745f128648f6e0144b74ee593911a9fa10d51 |
|
30-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Propose new interpretation for setPosition and setLoop Add new API getBufferPosition to return position relative to start of fixed buffer. Change-Id: I7aca8e392d45b988545f07b36b5032691057b03e
/frameworks/av/include/media/AudioTrack.h
|
e3aa659e9cee7df5c12a80d285cc29ab3b2cbb39 |
|
04-Dec-2012 |
Glenn Kasten <gkasten@google.com> |
Start isolating control block accesses in a proxy The proxy object will eventually be the only code that understands the details of the control block. This should make it easier to change the control block in the future. Initial set of control block fields that are isolated: - sample rate - send level - volume Prepare for streaming/static separation by adding a union to the control block for the new fields. Fix bug in handling of max sample rate on a track. It was only checking at re-configuration, not at each mix. Simplify OutputTrack::obtainBuffer. Change-Id: I2249f9d04f73a911a922ad1d7f6197292c74cd92
/frameworks/av/include/media/AudioTrack.h
|
083d1c1492d496960d5b28f4664ff02101736677 |
|
01-Dec-2012 |
Glenn Kasten <gkasten@google.com> |
Emphasize distinction between streaming and static Update comments and improve error checks to match Change-Id: I7370d6e59a7ef26dfb284a8b058d5ab2e0a42ccf
/frameworks/av/include/media/AudioTrack.h
|
4bae3649d504d590a546717a8e49f96a30d9a745 |
|
30-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
flush() comments and checks flush() is only useful for streaming mode. It is a no-op if track is active or uses a static buffer. Change-Id: I918ac181ffae3d16a0d67d8a7208f4aec61b5bd6
/frameworks/av/include/media/AudioTrack.h
|
e4756fe3a387615acb63c6a05788c8db9b5786cb |
|
29-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
AudioTrack::mute() is unused so remove it If ever needed again, it could be implemented on client side by forcing a track volume of 0. Change-Id: I88a9b4f675b6dca2948549414f9ec2c192d29269
/frameworks/av/include/media/AudioTrack.h
|
01437b7cdaecf53acb46b50ff8b5d86b9d36eb20 |
|
29-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
AudioTrack inline short const methods Change-Id: I142917edb454d510bbe545e94e6eaea30b650fae
/frameworks/av/include/media/AudioTrack.h
|
a42ff007a17d63df22c60dd5e5fd811ee45ca1b3 |
|
14-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Clean up channel count and channel mask Channel count is uint32_t. Remove redundant mask parameter to AudioTrack::createTrack_l() and AudioRecord::openRecord_l(). Change-Id: I5dc2b18eb609b2c0dc3091994cbaa4628062c17f
/frameworks/av/include/media/AudioTrack.h
|
b603744e96b07b1d5bf745bde593fb2c025cefcf |
|
14-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Don't use control block frame count after create This is part of a series to clean up the control block. Change-Id: I7f4cb05aef63053f8e2ab05b286d302260ef4758
/frameworks/av/include/media/AudioTrack.h
|
e33054eb968cbf8ccaee1b0ff0301403902deed6 |
|
14-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Use size_t for frame counts Also fix typo: bufferCount should be frameCount. Change-Id: Ibed539504db75ef99dc21c8ff1bf2987122063a5
/frameworks/av/include/media/AudioTrack.h
|
60a839204713e0f8258d082af83262b1eb33a6c3 |
|
21-Jun-2012 |
Glenn Kasten <gkasten@google.com> |
Clean up frame size in AudioTrack and AudioFlinger TrackBase::mFrameSize, mChannelMask, and mChannelCount are now const. Use TrackBase::mFrameSize instead of re-calculating frame size. AudioFlinger only sees 16-bit PCM format, conversion from 8-bit is now entirely on the client side. Previously a small part of the responsibility was on server side also. size_t is unsigned, so use %u in logs. Fix theoretical bug where TrackBase constructor was over-allocating space for non-linear AudioTrack or 8-bit PCM AudioRecord (probably benign). Change-Id: I7cbbba0bf4dba29ea751d8af341ab8e5cbbdc206
/frameworks/av/include/media/AudioTrack.h
|
3b16c766d1ae2cfd8487e8ffb2b23936fc0a8e17 |
|
14-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Use uint32_t for sample rate Change-Id: Ie240b48fb54b08359f69ecd4e5f8bda3d15cbe80
/frameworks/av/include/media/AudioTrack.h
|
22eb4e239fbe9103568147d566d7482e480350b8 |
|
07-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Update audio comments Change-Id: I85d7d2f6381b251db5695202fec75128883a8662
/frameworks/av/include/media/AudioTrack.h
|
83a0382dc17364567667a4e6135db43f5bd92efc |
|
12-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Move frame size out of the control block This is part of a series to clean up the control block. Change-Id: Ifab1c42ac0f8be704e571b292713cd2250d12a3f
/frameworks/av/include/media/AudioTrack.h
|
b929e417853694e37aba1ef4399f188987b709d9 |
|
08-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Move buffers pointer out of the control block This is part of a series to clean up the control block. Change-Id: Ie474557db7cb360f2d9a0f11600a68f5a3d46f07
/frameworks/av/include/media/AudioTrack.h
|
a47f3165f53c8e8fb8907a94de7417e2c3047eeb |
|
07-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Simplify AudioTrack::restoreTrack_l() Remove CBLK_RESTORING and CBLK_RESTORED from control block flags, for AudioTrack only. They are still used by AudioRecord. This is part of a series to clean up the control block. Change-Id: Iae4798f5b527c492bdaf789987ff3a1dadd0cb37
/frameworks/av/include/media/AudioTrack.h
|
659004c2949620d8adb29e1d950a2dd1c75ba9a9 |
|
08-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Add all-channel AudioTrack::setVolume() API"
|
d5ed6e88a9bea1879e41d7defaf1edea7c09f554 |
|
02-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Fix call to restoreTrack_l() without lock held Also document lock order Change-Id: I2c1f273a0a51fa79ee3dd766de8d23083e270051
/frameworks/av/include/media/AudioTrack.h
|
05d499958e4030938ed77a924ebdd9899f36752e |
|
06-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Remove unused fields in AudioTrack::Buffer Change-Id: Iab75f6e2348d8b6d1f3cec95aeb3fcd5135dfb50
/frameworks/av/include/media/AudioTrack.h
|
b1c0993b215c5c3eebd1c6bafc22bba23d57a70b |
|
28-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Add all-channel AudioTrack::setVolume() API Add combined channel APIs setVolume to AudioTrack, and remove obsolete getVolume. Change-Id: I0c87bfdbff4f4292259fa33e65f67badbafd270b
/frameworks/av/include/media/AudioTrack.h
|
847d05dc8fa144dcf8f4f435d6a6ac1727f00937 |
|
28-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Remove deprecated AudioTrack APIs Change-Id: I88be6525f3e33df529c0c3cb701d12a484809477
/frameworks/av/include/media/AudioTrack.h
|
ad2f6dbe14e601ae69f3697bc17106f9fd7d59d6 |
|
01-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
AudioTrack comments Change-Id: I08988f635c5bc6f4c35e9c4188f3d6fa557bc4c2
/frameworks/av/include/media/AudioTrack.h
|
85ab62c4b433df3f1a9826bed1c9bec07a86c750 |
|
01-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Line length 100 Change-Id: Ib28fd7b9ce951a6933f006e7f8812ba617625530
/frameworks/av/include/media/AudioTrack.h
|
c3ae93f21280859086ae371428ffd32f39e76d50 |
|
30-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Update audio comments Change-Id: Ie7504d0ddb252f7e4d4f99ed0b44cfc7b1049816
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
28b76b334f92a15a2be3cc9e2f7d229a3275d1ac |
|
04-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Use audio_channel_mask_t for channel mask Change-Id: I1c1896da48983aa9f1462a4b471f910498816f60
/frameworks/av/include/media/AudioTrack.h
|
d4070955e28ae62aa4be1657f9d32acde104bb86 |
|
12-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Remove dead code in libmedia Change-Id: I7d8201590cda29c9fa99662a4fdba222091febfe
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
3acbd053c842e76e1a40fc8a0bf62de87eebf00f |
|
28-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Configure policy of mediaserver threads Change-Id: Ifd825590ba36996064a458f64453a94b84722cb0
/frameworks/av/include/media/AudioTrack.h
|
0ca3cf94c0dfc173ad7886ae162c4b67067539f6 |
|
18-Apr-2012 |
Eric Laurent <elaurent@google.com> |
rename audio policy output flags Change-Id: I27c46bd1d1b2b5f96b87af7d05b951fef18a1312
/frameworks/av/include/media/AudioTrack.h
|
4a4a0959bca78e03e3c3f486ba17829c28314d8c |
|
19-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
AudioTrack client fast policy Change-Id: I42ce691df3f586ac061b62237f35a263a0116f1f
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
ea7939a079b3600cab955760839b021326f8cfc3 |
|
14-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Whitespace Fix indentation, and add blank lines in key places for clarity Change-Id: I57a0a8142394f83203161aa9b8aa9276abf3ed7c
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
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>
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
38f5d71e72f3b76c5b519614d27f051d53cd2712 |
|
08-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Remove dead code AudioTrack::getLoop Change-Id: I868329c52f31bc20125f068500d8f892b4ec9796
/frameworks/av/include/media/AudioTrack.h
|
4f9b0c54011eb8fd2ccfb393c2dcd51cd07800e0 |
|
08-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Remove dead mutex in AudioTrack/AudioRecord thread"
|
a5224f319e2ba4b51ddb4287705ccf8d4b8ecc51 |
|
04-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
AudioTrack declare more methods const Change-Id: I4999e984460893961d0d8092cff17f3cf07d7214
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
335787fe43596f38ea2fa50b24c54d0823a3fb1d |
|
21-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Remove AudioFlinger dependencies on client Change-Id: Ibb591e41a3ca5d7015e2b66b98b8fef5f415fb37
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
613882293184e575a44bff681a3decaefe889e69 |
|
17-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Use size_t for frame size"
|
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
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
4cc55d53d542c4f4ed645738cebb65b9e7eb6c44 |
|
12-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Use audio_format_t consistently"
|
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
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
362c4e697d8e9c034e964ac7b40227e054491547 |
|
14-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Audio C++ comments Change-Id: I84906ebb9dfcfa5b96b287d18364b407f02a30c1
/frameworks/av/include/media/AudioTrack.h
|
c9260c15c1e7e2743039c964b8769379a3fff332 |
|
28-Nov-2011 |
Glenn Kasten <gkasten@google.com> |
Merge "Make AudioTrack a RefBase so wrappers not needed"
|
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
/frameworks/av/include/media/AudioTrack.h
|
b68a91a70bc8d0d18e7404e14443d4e4020b3635 |
|
15-Nov-2011 |
Glenn Kasten <gkasten@google.com> |
Make AudioTrack a RefBase so wrappers not needed Change-Id: I2305abe586ac41251af04a194bc818c110a1b293
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
d217a8c4632b3e3065f8c2a26b9ce4dc4c97171f |
|
02-Jun-2011 |
Glenn Kasten <gkasten@google.com> |
Revert "Use AudioTrack::event_type not int in callback" This reverts commit 2225e4b7049fa3fb9d39a068b8268b63c952d7c1
/frameworks/av/include/media/AudioTrack.h
|
013b5a67d6f8e12a1b06e74863daec1bee4d99c1 |
|
05-May-2011 |
Glenn Kasten <gkasten@google.com> |
Use AudioTrack::event_type not int in callback Change-Id: Ifefc708d46874e04fd0d01cb6e2d43b987ee796c
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
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>
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
33005a932c60a0780fe9b7307d5988df3d9f6c26 |
|
16-Jun-2010 |
Chia-chi Yeh <chiachi@android.com> |
media: add AudioTrack::getMinFrameCount(). Change-Id: If15162583d1d16d89f59be0793106afe77417f35
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
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.
/frameworks/av/include/media/AudioTrack.h
|
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()
/frameworks/av/include/media/AudioTrack.h
|
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.
/frameworks/av/include/media/AudioTrack.h
|
7562408b2261d38415453378b6188f74fda99d88 |
|
20-May-2009 |
Mathias Agopian <mathias@google.com> |
move libbinder's header files under includes/binder
/frameworks/av/include/media/AudioTrack.h
|
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
/frameworks/av/include/media/AudioTrack.h
|
2c22aeb65e801f663a754d043062f85e49f77739 |
|
25-Mar-2009 |
Jean-Michel Trivi <> |
Automated import from //branches/donutburger/...@140663,140663
/frameworks/av/include/media/AudioTrack.h
|
89fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5 |
|
04-Mar-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //depot/cupcake/@135843
/frameworks/av/include/media/AudioTrack.h
|
15f767b960b38059a74a42a33e16d8df2aec8bc1 |
|
04-Mar-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //depot/cupcake/@135843
/frameworks/av/include/media/AudioTrack.h
|
7a2146d5807030b2629f347736be5301b61e8811 |
|
13-Feb-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //branches/cupcake/...@131421
/frameworks/av/include/media/AudioTrack.h
|
5e07b5774c8b376776caa4f5b0a193767697e97e |
|
11-Feb-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //branches/cupcake/...@130745
/frameworks/av/include/media/AudioTrack.h
|
e5198b620a9a208ec59ea8457282404725f8ff6e |
|
20-Jan-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //branches/cupcake/...@127101
/frameworks/av/include/media/AudioTrack.h
|
7b5eb023f8d87cca6d830ae6c11c6aadbe02aca8 |
|
18-Dec-2008 |
The Android Open Source Project <initial-contribution@android.com> |
Code drop from //branches/cupcake/...@124589
/frameworks/av/include/media/AudioTrack.h
|
2729ea9262ca60d93047e984739887cfc89e82eb |
|
21-Oct-2008 |
The Android Open Source Project <initial-contribution@android.com> |
Initial Contribution
/frameworks/av/include/media/AudioTrack.h
|