diff options
author | Glenn Kasten <gkasten@google.com> | 2013-12-05 16:35:58 -0800 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2014-02-18 12:52:35 -0800 |
commit | 6dd62fb91d82dedcfa3ab38c02eb0940b4ba932a (patch) | |
tree | 5c463a944686864894c2be528a52df9d275dd221 /services/audioflinger/RecordTracks.h | |
parent | f3b785ae6ea135115b54ac58cedc12b444483902 (diff) | |
download | frameworks_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.h | 29 |
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; }; |