summaryrefslogtreecommitdiffstats
path: root/services/audioflinger/RecordTracks.h
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2013-12-05 16:35:58 -0800
committerGlenn Kasten <gkasten@google.com>2014-02-18 12:52:35 -0800
commit6dd62fb91d82dedcfa3ab38c02eb0940b4ba932a (patch)
tree5c463a944686864894c2be528a52df9d275dd221 /services/audioflinger/RecordTracks.h
parentf3b785ae6ea135115b54ac58cedc12b444483902 (diff)
downloadframeworks_av-6dd62fb91d82dedcfa3ab38c02eb0940b4ba932a.zip
frameworks_av-6dd62fb91d82dedcfa3ab38c02eb0940b4ba932a.tar.gz
frameworks_av-6dd62fb91d82dedcfa3ab38c02eb0940b4ba932a.tar.bz2
Multi-client recording
Supports multiple clients both at native sample rate and with resampling. Change-Id: Icea55b4fd30751761b7debaa3ce016c79e712d8d
Diffstat (limited to 'services/audioflinger/RecordTracks.h')
-rw-r--r--services/audioflinger/RecordTracks.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/services/audioflinger/RecordTracks.h b/services/audioflinger/RecordTracks.h
index fc3171f..b40ac2f 100644
--- a/services/audioflinger/RecordTracks.h
+++ b/services/audioflinger/RecordTracks.h
@@ -59,4 +59,33 @@ private:
// releaseBuffer() not overridden
bool mOverflow; // overflow on most recent attempt to fill client buffer
+
+ // updated by RecordThread::readInputParameters()
+ AudioResampler *mResampler;
+
+ // interleaved stereo pairs of fixed-point signed Q19.12
+ int32_t *mRsmpOutBuffer;
+ // current allocated frame count for the above, which may be larger than needed
+ size_t mRsmpOutFrameCount;
+
+ size_t mRsmpInUnrel; // unreleased frames remaining from
+ // most recent getNextBuffer
+ // for debug only
+
+ // rolling counter that is never cleared
+ int32_t mRsmpInFront; // next available frame
+
+ AudioBufferProvider::Buffer mSink; // references client's buffer sink in shared memory
+
+ // sync event triggering actual audio capture. Frames read before this event will
+ // be dropped and therefore not read by the application.
+ sp<SyncEvent> mSyncStartEvent;
+
+ // number of captured frames to drop after the start sync event has been received.
+ // when < 0, maximum frames to drop before starting capture even if sync event is
+ // not received
+ ssize_t mFramesToDrop;
+
+ // used by resampler to find source frames
+ ResamplerBufferProvider *mResamplerBufferProvider;
};