summaryrefslogtreecommitdiff
path: root/services/audioflinger/SourceAudioBufferProvider.cpp
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2012-04-25 17:52:27 -0700
committerGlenn Kasten <gkasten@google.com>2012-04-30 13:00:31 -0700
commit288ed2103d96f3aabd7e6bea3c080ab6db164049 (patch)
treedec8e7b3a993e86baa8916ba70dcd6b3c053d062 /services/audioflinger/SourceAudioBufferProvider.cpp
parent0c0abd4ad26971b5fba94734137fe0bb1a590ab6 (diff)
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
Diffstat (limited to 'services/audioflinger/SourceAudioBufferProvider.cpp')
-rw-r--r--services/audioflinger/SourceAudioBufferProvider.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/services/audioflinger/SourceAudioBufferProvider.cpp b/services/audioflinger/SourceAudioBufferProvider.cpp
index e9e8c161..e9d6d2c7 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