From 6466c9e6e6278c740aed77f695f679be9f5db478 Mon Sep 17 00:00:00 2001 From: Glenn Kasten Date: Fri, 23 Aug 2013 10:54:07 -0700 Subject: Add ExtendedAudioBufferProvider::framesReleased and onTimestamp and implement them in SourceAudioBufferProvider using the associated NBAIO_Source, and in Track using the associated AudioTrackServerProxy. Change-Id: I60dc4adba63fc1dc452ff16caf347e4a7c8242c2 --- services/audioflinger/PlaybackTracks.h | 2 ++ services/audioflinger/Tracks.cpp | 9 +++++++++ 2 files changed, 11 insertions(+) (limited to 'services/audioflinger') diff --git a/services/audioflinger/PlaybackTracks.h b/services/audioflinger/PlaybackTracks.h index d34833f..0308b99 100644 --- a/services/audioflinger/PlaybackTracks.h +++ b/services/audioflinger/PlaybackTracks.h @@ -81,7 +81,9 @@ protected: int64_t pts = kInvalidPTS); // releaseBuffer() not overridden + // ExtendedAudioBufferProvider interface virtual size_t framesReady() const; + virtual size_t framesReleased() const; bool isPausing() const { return mState == PAUSING; } bool isPaused() const { return mState == PAUSED; } diff --git a/services/audioflinger/Tracks.cpp b/services/audioflinger/Tracks.cpp index 9622709..db67be6 100644 --- a/services/audioflinger/Tracks.cpp +++ b/services/audioflinger/Tracks.cpp @@ -498,6 +498,10 @@ status_t AudioFlinger::PlaybackThread::Track::getNextBuffer( return status; } +// releaseBuffer() is not overridden + +// ExtendedAudioBufferProvider interface + // Note that framesReady() takes a mutex on the control block using tryLock(). // This could result in priority inversion if framesReady() is called by the normal mixer, // as the normal mixer thread runs at lower @@ -510,6 +514,11 @@ size_t AudioFlinger::PlaybackThread::Track::framesReady() const { return mAudioTrackServerProxy->framesReady(); } +size_t AudioFlinger::PlaybackThread::Track::framesReleased() const +{ + return mAudioTrackServerProxy->framesReleased(); +} + // Don't call for fast tracks; the framesReady() could result in priority inversion bool AudioFlinger::PlaybackThread::Track::isReady() const { if (mFillingUpStatus != FS_FILLING || isStopped() || isPausing()) { -- cgit v1.1