| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
Add binder calls to register and unregister dynamic mixes
to AudioPolicyManager.
Bug: 16009464.
Change-Id: I4ef38166d0cfc88c984970969380d0cd6eb083ac
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add support for custom mixes in AudioPolicyManager.
Two methods are added to register or unregister a list of custom mixes
with their attributes and format.
getOutputForAttr() and getInputForAttr() first look for a match in
registered mixes before defaulting to normal output/input selection
Remote submix device connection disconnection now takes address into
account to identify the correspnoding custom mix.
Bug: 16009464.
Change-Id: I3f1c2a485a0fb71b1f984ed0adc9b68aa971e408
|
|
|
|
|
|
|
|
| |
Some flags are only set in configure, and get lost when output
format changes.
Bug: 17383204
Change-Id: I2011bce70920c4ee46fccc378da3b428f3395c11
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Added AudioRecord constructor with audio attributes.
Replaced AudioPolicymanager::getInput() by getInputForAttr().
No new functionality for now.
Also:
- Fixed warnings in AudioPolicyManager
- Allocate audio session ID before calling getOutputForAttr() in
AudioTrack.
Bug: 16006090.
Change-Id: I15df21e4411db688e3096dd801cf579d76d81711
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Update getOutputForAttr() prototype and group all logic
dealing with audio attributes to stream type conversion in
audio policy manager.
getOutputForAttr():
- specifies the audio session (for future use)
- returns a status code
- receives either stream type (for legacy) or audio attributes
- returns an updated streamtype
Remove logic dealing with legacy stream types to attributes conversion
from AudioTrack.
Use correct type for audio sessions in other APIs (startOutput() ...).
releaseOutput() specifies the audio session (for future use).
Bug: 18067208.
Change-Id: I1bfbe9626c04c7955d77f8a70aecfad2cb204817
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
StaticAudioTrackServerProxy::framesReady() previously returned
only the contiguous frames, update to return the total
available frames. This resolves short-count looping in
SoundPool for FastTracks.
Also (1) Removes the racy condition of reading two variables
and (2) Fixes buffer->mNonContig to return the correct value
and (3) Restores behavior that loop count of 1 goes back to
loopStart once during playback.
Bug: 11830751
Bug: 12070295
Bug: 17456842
Change-Id: I64906e6036bb00a1d7375b03efe6deb69d6478ca
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Do not hold gLockAPS when calling
AudioPolicyService::registerClient() in get_audio_policy_service().
registerClient() will need to acquire the AudioPolicyService mutex and
if at the same time a method called from AudioPolicyService
(with mutex held) calls back into AudioSystem and get_audio_policy_service()
a cross deadlock occurs.
Same preventive fix for get_audio_flinger().
Use a separate mutex for notification client list in AudioPolicyService.
This prevents deadlocking if registerClient() is called as a consequence of
AudioFlinger calling back into AudioPolicyManager while executing a method
with AudioPolicyService locked
Bug: 18403952.
Bug: 18450065.
Change-Id: Ia832e41aede8bc6c843fc615508fbdd74e0863b5
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fix cross deadlock with AudioFlinger by adding
a dedicated mutex to protect access to cached output list
and parameters.
Bug: 18410728.
Change-Id: Ia31283b1972d8865a46e84e63695173c187eb781
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
It is safer to query the output sampling rate once the output
have been acquired by calling getOutputForAttr().
Bug: 16009464.
Change-Id: Ib561facd19fba5359a6b837d75f1a1cd2dc51b29
|
|\ \ \
| |_|/
|/| | |
|
| |/
| |
| |
| |
| | |
Bug: 18285408
Change-Id: I56346f4652b2c5f7ef5fa3003fd8676051339384
|
|\ \
| |/
|/| |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Async mode reduces the number of messages posted between
MediaCodec and MediaCodecSource. This reduces thread
wakeups and helps reduce CPU utilization.
Bug: 18246026
Change-Id: I4b0837f309fdd12e323c1dfa72525f5a31971a03
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
1. Fix race condition in handling of binder death notifications.
AudioSystem has a mixture of APIs for both ordinary app clients,
and the AudioFlinger and AudioPolicy services within mediaserver.
Due to this mix of uses, it is possible for there to be "surprising"
sequences of calls on the call stack.
Previously, we used a single mutex for all global variables, but
this caused a deadlock. To avoid the deadlock, we unlocked the mutex
during the critical sequence of calls. But this was a a
crucial place where it should have stayed locked;
see Change-Id I315c1c5066f62b05e1c13b04fae1272b5fbce977
Now we use separate mutexes for the AudioFlinger, AudioPolicy, and audio port
related global variables. This allows us to correctly hold each mutex
throughout the atomic region, even when AudioFlinger calls AudioPolicy
via AudioSystem, or vice-versa.
2. AudioSystem::clearAudioConfigCache now clears the IAudioFlinger reference.
3. Make AudioSystem::get_audio_policy_service more like get_audio_flinger.
Bug: 18242291
Change-Id: I9761443d8337df5bf66d4ca2316a9fd0bd11be94
|
|\ \ \ |
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Passes the BufferItem for the queued buffer to the onFrameAvailable
callback so the consumer can track the BufferQueue's contents.
Bug: 18111837
Change-Id: If9d07229c9b586c668e5f99074e9b63b0468feb0
|
| |/
|/|
| |
| |
| | |
Bug: 18067208.
Change-Id: I9bbf9088485f5162c765ca504d9b784b956234c6
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I56cd557ce3525fe625db8c312d2557d3c8b51101
related-to-bug: 16034599
|
|\ \ \
| |/ / |
|
| |/
| |
| |
| |
| |
| |
| | |
b/18053197
b/18076411
Change-Id: I923dc893d48c70bf17980007b32f0ac5dfd22896
|
|/
|
|
|
| |
Bug: 18226810.
Change-Id: Ib8e2bfe835a8681aac50bf23161db14e50c9a124
|
|
|
|
|
| |
Bug:18120688
Change-Id: Ia66dcfc3fd2d67d1ceba9808d21e0120cc8691d6
|
|\
| |
| |
| | |
into lmp-dev
|
| |
| |
| |
| |
| | |
Bug: 18033275
Change-Id: If86cd26566d7b75941976f37829bbec619800778
|
|/
|
|
|
|
|
|
|
|
|
|
| |
If MediaCodec sees a fatal error and transitions to
UNINITIALIZED state, The codec may still be alive (with an
exception of 'mediaserver-died' error).
Handle Shutdown of the codec during release().
Bug: 17784012
Bug: 18033275
Change-Id: I891e036499d9b440a57f77fb735a5ba4da9a6e43
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This structure is passed between 64 and 32 bit processes via shared
memory, so ensure it's the same size, and that the members we care
about are in the same place.
Bug: 17569156
Change-Id: Id776bc825af1fbf43a6dd3407cca064f6d932902
|
|\ \
| | |
| | |
| | | |
into lmp-dev
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Do not allocate native window buffers for tunneled video playback codecs.
Bug: 17112525
Change-Id: I262d8030a9df6188938fde5d62ebce8faf7dba1f
|
| |/
|/|
| |
| |
| | |
Bug: 17514968
Change-Id: If232f92d163deb2440b927315c69e0c4d51ca290
|
| |
| |
| |
| |
| | |
Bug: 17676461
Change-Id: If01ccd09935945d330de0842be95c3544951b6b9
|
| |
| |
| |
| |
| |
| |
| | |
add unit test for math templates
Bug: 17676461
Change-Id: Ie964c5fcfcca1ec53b4538f8e577392e8fbb4319
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | | |
Bug: 17470065
Change-Id: Ib67aa1c50e3b6c24c4b12b0f31a996cc6874abd1
|
| | |
| | |
| | |
| | |
| | | |
Bug: 17672488
Change-Id: I96776c9679fdcfbe9a442c86447c59802b1465ac
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| | |
Make sure that accessibility prompts are heard when
a ringtone is active by forcing stream type
to AUDIO_STREAM_RING when phone state is AUDIO_MODE_RINGTONE.
Bug: 17558149.
Change-Id: Ia3bead8052fca5cbf282c267f7b9b06014fef628
|
|\ \
| | |
| | |
| | | |
into lmp-dev
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The name pointer argument in MediaCodec::init() was being
implicitly deallocated.
Bug: 17499622
Change-Id: If9409f95674e52d1478f969f77693c4d27ff1ff2
|
|\ \ \
| | | |
| | | |
| | | | |
into lmp-dev
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Bug: 17454455
Change-Id: Ia423bcc2e1fa39137f114eac44912ed15357bb99
|
|\ \ \ \
| |_|/ /
|/| | | |
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Currently, users of audio sessions, AudioTrack and AudioRecord,
are acquiring and releasing audio sessions according to their
life-cycle. AudioEffect instances were not counting as users
of an audio session. This caused an effect used on a session
to be purged by AudioFlinger::purgeStaleEffects_l() whenever
the last user of that session went away.
This CL makes AudioEffect acquire and release a session when
created and destroyed.
Bug 15432115
Change-Id: I922532150009988d43872f9b5928044a830ae0b3
|
|\ \ \ |
|
| |/ /
| | |
| | |
| | |
| | | |
Bug: 14659809
Bug: 16985287
Change-Id: I59ec72fbd40a9b8d28fe548ddad082c03000c045
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| | |
getTimestamp for offloaded tracks now returns WOULD_BLOCK for
situations where the timestamp is unavailable due to the
previous track still flushing or the timestamp is stale.
It is fixed for normal playback conditions.
Bug: 14659809
Bug: 17428188
Change-Id: Ic9ec07ccabc604236979769db5c4ea2dec252660
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Replace epoch concept by observing and accumulating server delta
positions. The advantage of using server deltas instead of absolute
values is that they (1) are not sensitive to 32-bit wraparound,
(2) are not sensitive to server behavior for stop(), and
(3) prepare for future 64-bit client positions without requiring 64-bit
positions on server.
Add comments to AudioTrack::getTimestamp() and friends
that the timestamp output parameter is undefined on error.
Don't allow getTimestamp to return a negative frame position after stop().
Accumulate the client released frames, which may be useful for a future API.
Bug: 11815245
Change-Id: I652940fa2db2f34a78c012a3ead0d9204fa29c6e
|