From 288ed2103d96f3aabd7e6bea3c080ab6db164049 Mon Sep 17 00:00:00 2001 From: Glenn Kasten Date: Wed, 25 Apr 2012 17:52:27 -0700 Subject: Fix race condition for non-started fast tracks This required re-implementing how fast tracks are considered active. Now, they use the same logic as normal tracks, except underrun is ignored. Other changes: - add framesReady() to AudioBufferProvider interface - rebased - add track underrun counter state to fast mixer dump state - move dumpsys header to Track::appendDumpHeader() so it closer to where tracks are dumped - display track state in dumpsys as a character code - measure and display warmup time and cycles in dumpsys - copy in the presentation complete code - add ExtendedAudioBufferProvider for framesReady() which returns size_t - simplify underrun tracking - deferred reset track after stop() - add comments Change-Id: I7db8821bc565230ec76da1f9380fe3fb09735e5b --- services/audioflinger/SourceAudioBufferProvider.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'services/audioflinger/SourceAudioBufferProvider.cpp') diff --git a/services/audioflinger/SourceAudioBufferProvider.cpp b/services/audioflinger/SourceAudioBufferProvider.cpp index e9e8c16..e9d6d2c 100644 --- a/services/audioflinger/SourceAudioBufferProvider.cpp +++ b/services/audioflinger/SourceAudioBufferProvider.cpp @@ -95,4 +95,10 @@ void SourceAudioBufferProvider::releaseBuffer(Buffer *buffer) mGetCount = 0; } +size_t SourceAudioBufferProvider::framesReady() const +{ + ssize_t avail = mSource->availableToRead(); + return avail < 0 ? 0 : (size_t) avail; +} + } // namespace android -- cgit v1.1