summaryrefslogtreecommitdiffstats
path: root/include/private
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2013-01-07 09:53:42 -0800
committerEric Laurent <elaurent@google.com>2013-07-25 14:08:09 -0700
commitbfb1b832079bbb9426f72f3863199a54aefd02da (patch)
tree5007d22456776dc77d124be84bcfe8bc4152bbb2 /include/private
parentfc5ea08326b510c6f82f71845d95a8758a6ab698 (diff)
downloadframeworks_av-bfb1b832079bbb9426f72f3863199a54aefd02da.tar.gz
frameworks_av-bfb1b832079bbb9426f72f3863199a54aefd02da.tar.bz2
frameworks_av-bfb1b832079bbb9426f72f3863199a54aefd02da.zip
AudioFlinger: offload playback, non-blocking write
- Added specialized playback thread class for offload playback, derived from directoutput thread. This thread type handles specific state transitions for offloaded tracks and offloading commands (pause/resume/drain/flush..) to audio HAL. As opposed to other threads, does not go to standby if the track is paused. - Added support for asynchronous write and drain operations at audio HAL. Use a thread to handle async callback events from HAL: this avoids locking playback thread mutex when executing the callback and cause deadlocks when calling audio HAL functions with the playback thread mutex locked. - Better accouting for track activity: call start/stop and release Output methods in audio policy manager when tracks are actually added and removed from the active tracks list. Added a command thread in audio policy service to handle stop/release commands asynchronously and avoid deadlocks with playback thread. - Track terminated status is not a state anymore. This condition is othogonal to state to permitted state transitions while terminated. Change-Id: Id157f4b3277620568d8eace7535d9186602564de
Diffstat (limited to 'include/private')
-rw-r--r--include/private/media/AudioTrackShared.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/include/private/media/AudioTrackShared.h b/include/private/media/AudioTrackShared.h
index 059268318c..6129c80e28 100644
--- a/include/private/media/AudioTrackShared.h
+++ b/include/private/media/AudioTrackShared.h
@@ -291,6 +291,11 @@ public:
virtual uint32_t getUnderrunFrames() const {
return mCblk->u.mStreaming.mUnderrunFrames;
}
+
+ bool clearStreamEndDone(); // and return previous value
+
+ bool getStreamEndDone() const;
+
};
class StaticAudioTrackClientProxy : public AudioTrackClientProxy {
@@ -405,6 +410,8 @@ public:
// should avoid doing a state queue poll from within framesReady().
// FIXME Change AudioFlinger to not call framesReady() from normal mixer thread.
virtual void framesReadyIsCalledByMultipleThreads() { }
+
+ bool setStreamEndDone(); // and return previous value
};
class StaticAudioTrackServerProxy : public AudioTrackServerProxy {