diff options
author | Glenn Kasten <gkasten@google.com> | 2012-12-18 15:57:32 -0800 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2013-06-12 14:33:10 -0700 |
commit | 9f80dd223d83d9bb9077fb6baee056cee4eaf7e5 (patch) | |
tree | 79f19f80ebb7978e9bab16e1d9b835849c735592 /include/media/AudioBufferProvider.h | |
parent | 9fef8d453b15a91a2b748faac2bfaff713bcf1e1 (diff) | |
download | frameworks_av-9f80dd223d83d9bb9077fb6baee056cee4eaf7e5.zip frameworks_av-9f80dd223d83d9bb9077fb6baee056cee4eaf7e5.tar.gz frameworks_av-9f80dd223d83d9bb9077fb6baee056cee4eaf7e5.tar.bz2 |
New control block for AudioTrack and AudioRecord
Main differences between old and new control block:
- removes the mutex, which was a potential source of priority inversion
- circular indices into shared buffer, which is now always a power-of-2 size
Change-Id: I4e9b7fa99858b488ac98a441fa70e31dbba1b865
Diffstat (limited to 'include/media/AudioBufferProvider.h')
-rw-r--r-- | include/media/AudioBufferProvider.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/include/media/AudioBufferProvider.h b/include/media/AudioBufferProvider.h index 43e4de7..ef392f0 100644 --- a/include/media/AudioBufferProvider.h +++ b/include/media/AudioBufferProvider.h @@ -26,6 +26,8 @@ class AudioBufferProvider { public: + // FIXME merge with AudioTrackShared::Buffer, AudioTrack::Buffer, and AudioRecord::Buffer + // and rename getNextBuffer() to obtainBuffer() struct Buffer { Buffer() : raw(NULL), frameCount(0) { } union { @@ -44,6 +46,19 @@ public: // pts is the local time when the next sample yielded by getNextBuffer // will be rendered. // Pass kInvalidPTS if the PTS is unknown or not applicable. + // On entry: + // buffer != NULL + // buffer->raw unused + // buffer->frameCount maximum number of desired frames + // On successful return: + // status NO_ERROR + // buffer->raw non-NULL pointer to buffer->frameCount contiguous available frames + // buffer->frameCount number of contiguous available frames at buffer->raw, + // 0 < buffer->frameCount <= entry value + // On error return: + // status != NO_ERROR + // buffer->raw NULL + // buffer->frameCount 0 virtual status_t getNextBuffer(Buffer* buffer, int64_t pts = kInvalidPTS) = 0; virtual void releaseBuffer(Buffer* buffer) = 0; |