| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |\ |
|
| | |
| | |
| | |
| | |
| | | |
Bug: 10888816
Change-Id: I84897dd7d30b370640b54e928f230604b873cb68
|
|\ \ \
| |/ /
| | |
| | |
| | | |
* commit '56ce726019f700a95ce5b45beebceadae4836e30':
IOMX: Add prepareForAdaptivePlayback method
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
prepareForAdaptivePlayback is the fallback mechanism to support
seamless resolution change for devices that do not support dynamic
output buffers. It is up to the codecs to handle this appropriately,
but codecs that do not handle dynamic output buffers would
request enough buffers up to the requested size in this method
to avoid port reconfiguration on resolution changes.
Change-Id: I58d4aa8ef1359ea3472735bbe9140c3132039b3d
Signed-off-by: Lajos Molnar <lajos@google.com>
Bug: 10192531
Related-to-bug: 7093648
|
|\ \ \
| |/ /
| | |
| | |
| | |
| | |
| | | |
into klp-dev
* commit '1adf20ce868b80a24f7387daa6549364d5509c6a':
fix volume and effect enable delay on offloaded tracks
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Volume: add a method to wake up the mediaserver playback
thread when a volume command is received on an offloaded track.
Effects: call effect chain process on offloaded playback threads
asynchronously from writes to allow effect state updates while
waiting for async write callback.
Bug: 10796540.
Change-Id: Id2747ae88783575d1d7ffd6fc86fbd054ab2c739
|
|\ \ \
| |/ /
| | |
| | |
| | |
| | |
| | | |
klp-dev
* commit '1c7f35d1f25eb7160314fdef536463fc34deb1ea':
soundpool: allocate shared memory heap by client
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Current SoundPool implementation allocates the shared memory heap
containing decoded PCM samples in mediaserver process.
When mediaserver process crashes, the shared memory heaps allocated by
AudioCache cannot be mapped anymore in the new instance of mediaserver.
This causes a silent failure to end playback of new sounds because
AudioFlinger believes the new AudioTracks are opened in streaming mode
and not static mode: it sees a NULL shared memory pointer when the track
is created.
The fix consists in allocating the memory heap in the client process. Thus
the heap is not lost when mediaserver restarts. The global memory usage is
the same as this is shared memory.
Also added a way to detect that a shared memory is passed when the track is
created but cannot be mapped on mediaserver side.
Also fix a crash in SoundPool when ALOGV is enabled.
Bug: 10894793.
Change-Id: Ice6c66ec3b2a409d75dc903a508b6c6fbfb2e8a7
|
|\ \
| |/
| |
| |
| |
| |
| | |
klp-dev
* commit '402dfba6dcd68f5fd8d8921f9751f3e47eb1449d':
Add support for level measurements in Visualizer
|
| |\ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
New commands to set a measurement mode and perform peak + RMS
measurements.
Bug 8413913
Change-Id: Ib25254065c79d365ebb34f9dc9caa0490e2d300d
|
|\ \ \
| |/ /
| | |
| | |
| | | |
* commit '1d2536f460d4678770f423f50cbf6a61a13d4d11':
AudioTrack: fix music resume
|
| |/
| |
| |
| |
| |
| |
| |
| | |
Fix regression introduced by commit 5a6cd22 in AudioTrack resume:
the callback thread was not signaled if paused internaly.
Bug: 10895013.
Change-Id: Ic356b115132d6fccbcee2d9bb855e92671dc20c5
|
|\ \
| |/
| |
| |
| |
| |
| | |
klp-dev
* commit '4b701cc041d635e5ec56e382043a4c5d01aedd80':
Revert "Workaround slow AudioTrack destruction"
|
| |\ |
|
| | |
| | |
| | |
| | |
| | |
| | | |
This reverts commit 8bbbd7da02fac3de40139af19f7cf7a7cc3cc824.
Change-Id: I269a6c445cbce33451b6a9e74223e36e6abbdbe0
|
|\ \ \
| |/ /
| | |
| | |
| | |
| | |
| | | |
klp-dev
* commit '3b3cfcfa272c8e3e16c89765b8817f5a8de0c505':
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
|
|\ \
| |/
| |
| |
| | |
* commit 'feb6d27bf61cd266cf753215e9cae16b9bc9dbbd':
Workaround slow AudioTrack destruction
|
| |
| |
| |
| |
| | |
Bug: 10809586
Change-Id: I5f30d4deb1233e8ade8967568e40684ef680c395
|
|\ \
| |/
| |
| |
| | |
* commit '9a98b6de791aeb130192df10744f5b35f8b6ef1a':
Partial fix for SoundPool not terminating
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
SoundPool was waiting for EVENT_UNDERRUN only to indicate end of clip. In
J, AudioTrack delivered both EVENT_UNDERRUN followed by EVENT_BUFFER_END.
However, as of K, AudioTrack is only delivering EVENT_BUFFER_END (this
lack of EVENT_UNDERRUN is another bug which still needs to be fixed).
The workaround is to also respond to EVENT_BUFFER_END in SoundPool.
Bug: 10787103
Change-Id: Id68a23bddd6dd9df6c49c55138197260d71ca468
|
|\ \
| |/
| |
| |
| |
| |
| | |
klp-dev
* commit '18f861404efc054da0a2ea6c582e293940f63bc8':
Fix underruns when fast track denied due to SRC
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
OpenSL ES requests a fast track. If sample rate conversion is needed,
the request is denied by server, and a larger client buffer is used
to handle the higher latency of a normal track. However the client
notification period was calculated based on buffer being divided into
2 sub-buffers. That resulted in the notification period being too long.
The server pulls chunks that are smaller than half the total buffer.
So now the client uses 3 sub-buffers when there is SRC.
Also removed the 'defer wake' optimization because it was incorrect.
This optimization attempted to reduce the number of wakeups of client,
when server releaseBuffer knows that another releaseBuffer will be
following. But there is no way for the first releaseBuffer to predict
how soon the second releaseBuffer will occur. In some cases it was
a long time, and the client underran. So now the client is woken up
immediately if the total number of available frames to client is >=
the minimum number the client wants to see (the notification period).
Also fix bug where minimum frame count was not being used in the
calculation of notification period.
Bug: 10342804
Change-Id: I3c246f4e7bc3684a344f2cf08268dc082e338e2a
|
|\ \
| |/
|/|
| |
| |
| |
| | |
storage. So it can not guarantee works well when multithread environment. AudioFlinger has multithread. so strtok_r is more safe."
* commit 'fc270954192ef7e15ac2c88daadd8890d22096e3':
strtok stores its values in thread local storage. So it can not guarantee works well when multithread environment. AudioFlinger has multithread. so strtok_r is more safe.
|
| |\
| | |
| | |
| | |
| | |
| | |
| | | |
can not guarantee works well when multithread environment. AudioFlinger has multithread. so strtok_r is more safe."
* commit 'e56f3c96fa6e7550b67e8b049f999aaa2ada1192':
strtok stores its values in thread local storage. So it can not guarantee works well when multithread environment. AudioFlinger has multithread. so strtok_r is more safe.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
So it can not guarantee works well when multithread environment.
AudioFlinger has multithread.
so strtok_r is more safe.
Change-Id: I6d77ef9cc49a4478dd856dcdca14e4920ce955c6
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The change I7370d6e59a7ef26dfb284a8b058d5ab2e0a42ccf caused a regression
in SoundPool looping when using SoundPool's streaming implementation.
This reverts a portion of that change.
Bug: https://code.google.com/p/android/issues/detail?id=58113
Bug: 10171337
Change-Id: I8af0dc8683a7c7f225c80f0eb4d39770667b52e5
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is done by configuring SoundPool for shared memory and fast track.
Previously SoundPool used a streaming track, and looping in streaming
mode relied on the ability to loop the most recently enqueued data.
That 'feature' was lost in the new implementation of streaming, so we're
now switching from streaming mode to shared memory mode. Shared memory
mode had always been desired, but was blocked by bug 2801375 which is fixed now.
Bug: 10171337
Change-Id: I2a938e3ffafa2a74d5210b4198b50db20ad5da0e
|
|\ \
| | |
| | |
| | | |
unsupported" into klp-dev
|
| | |
| | |
| | |
| | |
| | | |
Bug: 10609422
Change-Id: I005f1d04a4191b1503b5f3e895a98b8d6560c402
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Check that get_presentation_position is non-NULL before calling.
AudioTrack::getTimestamp not implemented for fast tracks.
Fix typo in Track::getTimestamp().
Fix bugs in AudioTrack::getTimestamp after stop:
- getTimestamp while stopped is not allowed.
- stop, start, getTimestamp now returns the correct value.
Change-Id: Ie8d9dc1f28d8927634e04175a68b147ffc2ea8eb
|
|/ /
| |
| |
| |
| |
| | |
as typedef AudioTimestampSingleStateQueue and use it in MonoPipe.
Change-Id: Idaebb362bd9d0a81a7ed83792ab9369dc37c0e74
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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
|
|\ \ \
| |/ / |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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)
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When the amount of frames that can be written to the buffer
is less than requested, AudioTrack::processAudioBuffer() estimates
the time needed to free the missing amount of frames and asks the
callback thread to sleep.
This behavior is not possible for compressed audio and should not
be enabled for offloaded tracks.
Change-Id: I5b657283cfba06254c9ac0ea9b447467cce7eb61
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When restarting an AudioTrack from stopped state, it is necessary
to force refresh of mRemainingFrames by processAudioBuffer() as
the last write before stop() could be partial. No doing so will lead
into unnecessary sleep before filling the non contiguous part
of the buffer returned by obtainBuffer() when processAudioBuffer()
is executed for the first time after start().
Change-Id: Id703f8dc092a6f07c905eee194054b4a978f979d
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | | |
Bug: 9371882
Change-Id: I9e4b8c2154b03ce8ff3e14c465a5224bb6e8db9a
|
|\ \ \ |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Bug: 10326117
Change-Id: I2c0bdf8adc67b11f8dc633423bee66897548f181
|
|\ \ \ \
| |_|/ /
|/| | | |
|
| |/ /
| | |
| | |
| | |
| | | |
bug: 10244066
Change-Id: I317f05b146db962c271893f6208890a5a6c396f1
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| | |
Add a specific method to AudioSystem for AudioService to poll
for AudioFlinger service restart instead of relying on current
callback mechanism which is flaky.
Bug: 9693068.
Change-Id: Ie88bc9d25033503bc5cd2fa9d8c754d0f8045b8f
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The audio input handle is ultimately owned by the audio recorder
object but it could be dropped on the floor if an error occurred
before that object was fully initialized.
Rearranged some of the argument validation and merged getInput_l
with openRecord_l to simplify the code and prevent such a leak
from occurring.
Bug: 10265163
Change-Id: I124dce344b1d11c2dd66ca5e2c9aec0c52c230e2
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The notification period (frequency of client wakeups) was broken in
streaming callback mode. Fast tracks were OK, but non-fast tracks with
normal latency weren't getting woken up at all.
Bug: 10222943
Change-Id: Ife9a2f57fa73c6eb921f1c5ba62de0bfcc20557b
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is used to set the handle in the metadata buffer that is
valid in the mediaserver process, as well as to keep a reference
for the graphic buffers in BufferMeta.
Change-Id: I46bb68d8bed894f357eeeb25368360d11b276634
Signed-off-by: Lajos Molnar <lajos@google.com>
|