| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Use the transfer mode to distinguish use cases, as the presence of
a callback handler is not sufficient. For example, the track could be
configured for synchronous transfer with write() or read(), and also
have a callback handler for position updates. But that does not mean
the track can operate in fast track mode.
Change-Id: I2a7f1f0ca98e68efe180b524496985109d8ce291
|
| |
| |
| |
| |
| |
| | |
It's size_t consistently
Change-Id: I29638ef59ac773218025f2403a3508a307b487e0
|
|/
|
|
|
|
| |
It's uint32_t consistently
Change-Id: If8298c7e9aeea2b951fe47b675adbdf48d104846
|
|
|
|
|
|
|
| |
IAudioFlinger::createTrack and IAudioFlinger::openRecord
both guarantee that (status == OK) == (sp<> != 0).
Change-Id: I91cb4f7e843019efb65cace7ba146f7da7aa5b59
|
|
|
|
| |
Change-Id: I4dc977f22f51cd618dc83d800b4b8756929a4612
|
|
|
|
| |
Change-Id: I7dd14eabd78c9130a157da2063a1d65ec4f9c65a
|
|
|
|
|
|
|
| |
This also fixes a bug where, for a re-created IAudioRecord,
mRefreshRemaining was not being reset correctly.
Change-Id: I9f721a4edf92aab859cf3f247ab7f65562d14fb0
|
|\ |
|
| |
| |
| |
| | |
Change-Id: I0c2483210903c922f06f097ada373a37b9a90a02
|
|\ \
| |/ |
|
| |
| |
| |
| | |
Change-Id: I5320a6b2d7f7077cb12d7da4f2ca30a940100bf2
|
|\ \
| |/ |
|
| |
| |
| |
| | |
Change-Id: I12369dfbb9e75389f2cab015a706decdaf310a0d
|
|\ \
| |/ |
|
| |
| |
| |
| |
| |
| | |
But still restricted to 16-bit PCM currently
Change-Id: I5df0e5033da9144ca73e44addf14a63d31406034
|
|\ \
| |/
|/| |
|
| |
| |
| |
| | |
Change-Id: I8721ecedfb429c4e233453d1e768ddf69ecabbe4
|
|/
|
|
| |
Change-Id: Ife23b88474c1d62c0cf682c1a310d951f2c0f54a
|
|
|
|
|
|
| |
Supports multiple clients both at native sample rate and with resampling.
Change-Id: Icea55b4fd30751761b7debaa3ce016c79e712d8d
|
|
|
|
|
|
| |
so they can be properly freed.
Change-Id: I6f389035bc29e74e7c367c1c6d0252b180f666b3
|
|
|
|
| |
Change-Id: I1c611d1037685d52ccc84efe0fccd6413ec938e9
|
|
|
|
| |
Change-Id: I62d6534a9581e84ae20c2422f7ad9aeda9b7c4df
|
|
|
|
| |
Change-Id: I665ba3358dd9502f0adec70d486e7bf8a2e1b0fe
|
|
|
|
|
|
|
|
|
|
|
| |
AudioTrack::obtainBuffer() passes a pointer to a timeout
variable that has gone out of scope when calling
ClientProxy::obtainBuffer().
Same fix for AudioRecord.
Bug: 11968591.
Change-Id: I22af8f94fa2f8cc54ab5c25c89167c805e754317
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The AudioRecord input handle code was refactored earlier
to fix a potential handle leak, and to simplify the code:
> Change-Id: I124dce344b1d11c2dd66ca5e2c9aec0c52c230e2
This changelist refactors AudioTrack similarly,
and adds further cleanup of both AudioTrack and AudioRecord.
We attempt to implement the rules for referencing counting I/O handles,
but there is still the possibility of a handle leak if the client process
dies after allocating the handle reference but before releasing it.
That issue is being tracked separately.
Details:
- AudioSystem::getOutput() is now called within createTrack_l
- restoreTrack_l was missing offload info
now it has the info available,
but is not yet being called for offloaded tracks
- AudioTrack::getOutput() is now const
- Remove getOutput_l()
Change-Id: I44a0a623d24fc5847bcac0939c276400568adbca
|
|\ |
|
| |
| |
| |
| |
| |
| | |
in IAudioFlinger::createTrack and IAudioFlinger::openRecord
Change-Id: I09c644c80e92c8e744b1b99055988a2588b2a83d
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This makes it the same as for IAudioTrack.
Previously we had a mix of int, int32_t and uint32_t,
which could cause comparisons to fail.
Change-Id: Ic72ef650ee81f65db11e42ed16d818fdf3e310f4
|
|\ \ \ |
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Apply the same change to AudioRecord, that was already done for AudioTrack in this CL:
> Change-Id: I0fc48117946364cb255afd653195498891f622bd
If the proxy->obtainBuffer at the end of the "do" loop fails with status
DEAD_OBJECT, and the restoreRecord_l during the next trip of the "do"
loop also fails, then the value of the buffer fields will be based on
the previous proxy->obtainBuffer that returned DEAD_OBJECT. This will
have cleared the buffer, but it's tricky. So instead explicitly clear
the buffer after restoreRecord_l, before breaking out of the loop.
Change-Id: Ifc97f2ab7b8195d6b149502bb5d765d2983b07be
|
|\ \ \ |
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Apply the same fix to AudioRecord as this CL did for AudioTrack:
> Change-Id: Id703f8dc092a6f07c905eee194054b4a978f979d
Details:
When restarting an AudioRecord from stopped state, it is necessary
to force refresh of mRemainingFrames by processAudioBuffer() as
the last read 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: I0ff04648e990e97bad5ea3db5be0c4151250d5e1
|
|\ \ \ |
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Fixed bug that if the binder call failed (for example if the
IAudioFlinger binder is dead), then getInputFramesLost was returning
garbage. Now it correctly returns zero, which is the error value for
this method.
The type declarations for getInputFramesLost were inconsistent:
a mixture of unsigned int, size_t, and uint32_t. Now it returns uint32_t
everywhere, which is what the underlying HAL API returns.
Added a FIXME about the side effect behavior. This will need review
for multi-client.
Change-Id: Ifa2e117a87dbd0c1f2c892a31d1c3dd919bf1a0a
|
|\ \ \
| |/ /
|/| | |
|
| | |
| | |
| | |
| | | |
Change-Id: I00a1025e2891a1c96218b3c2187eaddda6614ebc
|
|\ \ \
| |/ /
|/| | |
|
| |/
| |
| |
| |
| |
| |
| | |
Also fix a couple of places where we were using AUDIO_SESSION_OUTPUT_MIX,
which happens to also be equal to 0, but has a different meaning.
Change-Id: I90e39be3b89f5021a96d9e3b8d10929013ca977f
|
| |
| |
| |
| |
| | |
Bug: 11148722
Change-Id: Ia1e14133d73ac301fe06a047e70a573911822630
|
|/
|
|
| |
Change-Id: Ia99e23a0b46db3f3e6aa46f9018e63c14f4af369
|
|
|
|
|
| |
Bug: 10888816
Change-Id: I84897dd7d30b370640b54e928f230604b873cb68
|
|
|
|
|
|
|
|
| |
Fix regression introduced by commit 5a6cd22 in AudioTrack resume:
the callback thread was not signaled if paused internaly.
Bug: 10895013.
Change-Id: Ic356b115132d6fccbcee2d9bb855e92671dc20c5
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|\ |
|
| |
| |
| |
| | |
Change-Id: I76ec536d1504eb9a558178b62bf225aace4b40d1
|
|\ \
| |/ |
|