The problem can occur if a sample is started at the same time as the last AudioTrack callback
for a playing sample is called. At this time, allocateChannel() can be called concurrently with moveToFront()
which can cause an entry in mChannels being used by moveToFront() to be erased temporarily by allocateChannel().
The fix consists in making sure that the SoundPool mutex is held whenever play(), stop() or done() are called.
In addition, other potential weaknesses have been removed by making sure that the channel mutex is held while
starting, stopping and processing the AudioTrack call back.
To that purpose, a mechanism similar to the channel restart method is implemented to avoid stopping channels
from the AudioTrack call back but do it from the restart thread instead.
The sound effects SounPool management in AudioService has also been improved to make sure that the samples have
been loaded when a playback request is received and also to immediately release the SoundPool when the effects are
unloaded without waiting for the GC to occur.
The SoundPool.java class was modified to allow the use of a looper attached to the thread in which the sample
loaded listener is running and not to the thread in which the SoundPool is created.
The maximum number of samples that can be loaded in a SoundPool lifetime as been increased from 255 to 65535.
Change-Id: I368a3bdfda4239f807f857c3e97b70f6b31b0af3
Changed late frame drop policy, now we are dropping only 1 in 8,
late (> 40ms) frames. Dropping every late frame result in lot of noticible
pauses, usually with peaky bitrate activity these pauses become more prominant.
Dropping few frames is still required to allow overall playback chain,
to regain the performance.
Experimentally decided to drop Max one late frame in 8.
Change-Id: If20848d619a76aaf8179b1e5c3155610e3bc85fd
support for two common ways of specifying album artist in ogg files.
b/3311831
(cherry-picked from GB because of weird automerger failure)
Change-Id: Ibf12a3d6bc8bbc2ac5ea815de6b33414b8f53f0f
This will be replaced by a new PTP host API in an upcoming commit.
Change-Id: Ib914194e332b5c090cb8e34ed35bd691bc9f85d1
Signed-off-by: Mike Lockwood <lockwood@android.com>
Due to a bug (fixed by 59163bf2f15e28712be6598144ae0fdb94dac52b),
libstagefright_yuv.so was actually not prelinked.
Change-Id: Idbc9b968708d0fc31a087d2e4f24398072d915e2
commit eaeaa2672d4e0a82891493b2bde8bdd0c0e79a1b
Author: Andreas Huber <andih@google.com>
Date: Thu Dec 23 10:26:48 2010 -0800
Remove lowest bandwidth stream if using the legacy player.
Change-Id: I2f885e26344996de9152f8fda9fd6bdef89bf953
commit 7d652972615b2750fd8f1c21b9fab0e136df2b82
Author: Andreas Huber <andih@google.com>
Date: Thu Dec 23 10:14:36 2010 -0800
Don't clear the packet source's format for legacy discontinuities.
Change-Id: I9bd5a21b9bd28043ad38bd0658ccc8eda3c1079a
commit 2b18a45aac17cbfe1aa089d0f6510957d438dd64
Author: Andreas Huber <andih@google.com>
Date: Thu Dec 23 10:13:55 2010 -0800
Use NuPlayer for HTTP live streaming based on runtime property.
adb shell setprop media.httplive.enable-nuplayer true
Change-Id: I22738df3403985dc8e6992b1ab5da5747309f773
commit 50d899fb7b9ea52c3994b0a58e993998d926aeed
Author: Andreas Huber <andih@google.com>
Date: Wed Dec 22 16:25:22 2010 -0800
Make ACodec a lot less verbose.
Change-Id: I94c7e499b61032321ffaf999f5ad2c913cde6a48
commit b19e1740cb4d02990a56844654b5d019987c6405
Author: Andreas Huber <andih@google.com>
Date: Wed Dec 22 16:22:22 2010 -0800
Wait until we have fresh codec-specific-data before instantiating the decoders
after a discontinuity involving a format change.
Change-Id: I7bcf9b5ae3319f08bf8978a117e8ee5220902e37
commit 06428c006906c9099e430aface3b439ff1d36ecc
Author: Andreas Huber <andih@google.com>
Date: Wed Dec 22 15:20:38 2010 -0800
Disable random seeks in the streaming tool for now.
Change-Id: Ie86fde422dcfc4b2c7a01be51a193fda9c88cd71
commit e19db68f3bea8a61c191f60f6940f30e3a0d5f1b
Author: Andreas Huber <andih@google.com>
Date: Wed Dec 22 15:20:27 2010 -0800
Tweak HTTP live parameters.
Change-Id: If4b71e12485facc523a8a43d8213d0feb190daab
commit 1e9942791538c2256b579d96c6c04264b0d8b087
Author: Andreas Huber <andih@google.com>
Date: Wed Dec 22 14:48:23 2010 -0800
Enable http live streaming through NuPlayer for http URLs containing the string m3u8
Change-Id: I1691fe12ae8f1507fe3673313959cd50bc324624
commit 4c33f96a6e499ee0efe0e70b687094430cb7c1c0
Author: Andreas Huber <andih@google.com>
Date: Wed Dec 22 14:40:27 2010 -0800
Support for HTTP live streaming in NuPlayer.
Change-Id: Iacba1c3ebaeb8d3b972185deaf4cff18c8009c54
commit ddf705ce553708bc5b13d89a878484cf839bd674
Author: Andreas Huber <andih@google.com>
Date: Wed Dec 22 13:42:47 2010 -0800
StreamingSource now a subclass of abstract NuPlayer::Source
Change-Id: Ia6c7c639628910b9d1f37decc55da48b07a70de3
commit 9e04a8406b1882a8e3fdeb7b4d52db5ae70b970a
Author: Andreas Huber <andih@google.com>
Date: Wed Dec 22 13:33:52 2010 -0800
Refactor media data sourcing to NuPlayer::Source.
Change-Id: I1db9fb08c4e527bf7b19c29978cf342c2b0a0bc9
Change-Id: I9610a097481dda58f22142eacda3ac2dba0b63f9
commit 63be8ceb8b2354fb997a277c0092abae015ecf10
Author: Andreas Huber <andih@google.com>
Date: Fri Dec 17 13:45:34 2010 -0800
Enable handling of discontinuities that involve potential format changes.
Change-Id: I21848a113db8764abb54bdcf302b0923253eaf4d
commit d18a7f80ec09af382026809263dcbbfa9e7a9ec8
Author: Andreas Huber <andih@google.com>
Date: Fri Dec 17 13:45:01 2010 -0800
Signal whether or not a format change occured as part of the discontinuity.
Change-Id: I06e64f542f4369549c9cebbb892dc612346ae43d
commit c400adbd5fdbd65cfef7aed9ec65bcaace4bb69b
Author: Andreas Huber <andih@google.com>
Date: Fri Dec 17 13:44:46 2010 -0800
A little more instrumentation of ACodec
Change-Id: I07f4aeccbbd15cdd9f80f48c3f92ee984ef6d92b
commit 1d802ee01f47b3cdc5b89502cec7fbb595e197a3
Author: Andreas Huber <andih@google.com>
Date: Fri Dec 17 13:43:58 2010 -0800
Only sync audio/video queues if both types of media are actually present.
Change-Id: Ic88edf9bb1ebd4034c08747cce9877a4e28e0d35
commit e402da39d9a4d8b75653a78f728e20a3ef0fb497
Author: Andreas Huber <andih@google.com>
Date: Fri Dec 17 13:42:24 2010 -0800
Disable the random seek for now.
Change-Id: Iddd597b546e2f229e88214f9bdd6452bb188105e
Change-Id: I27c4d9ba916080be94ce6117dbb095e9022ed62b
During OMX codec initialization it is possible that buffer allocation
fails. This changes Stagefright to set an error state and abort
initialization rather than crashing with an assert failure when that
happens.
Change-Id: I2fc2fadfe75657cdbf649cc8cafd2e4c251a5f8b
Bug: 3282700