diff options
author | Glenn Kasten <gkasten@google.com> | 2012-04-25 17:52:27 -0700 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2012-04-30 13:00:31 -0700 |
commit | 288ed2103d96f3aabd7e6bea3c080ab6db164049 (patch) | |
tree | dec8e7b3a993e86baa8916ba70dcd6b3c053d062 /services/audioflinger/SourceAudioBufferProvider.cpp | |
parent | 0c0abd4ad26971b5fba94734137fe0bb1a590ab6 (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.cpp | 6 |
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 |