diff options
author | Glenn Kasten <gkasten@google.com> | 2015-03-20 11:30:28 -0700 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2015-04-13 18:02:09 -0700 |
commit | 551b5355d34aa42890811fc3606d3b63429296cd (patch) | |
tree | a55a6f457f11025f653241a58d475fe6a8269be5 /include | |
parent | 7d669b3551c20109f5544455ca1555499693e1e1 (diff) | |
download | frameworks_av-551b5355d34aa42890811fc3606d3b63429296cd.zip frameworks_av-551b5355d34aa42890811fc3606d3b63429296cd.tar.gz frameworks_av-551b5355d34aa42890811fc3606d3b63429296cd.tar.bz2 |
AudioRecord::obtainBuffer() can return nonContig like AudioTrack
And fix error handling in both AudioRecord and AudioTrack.
Change-Id: I4853d736cc6d2c05de5b18b0eac62716edfa62ec
Diffstat (limited to 'include')
-rw-r--r-- | include/media/AudioRecord.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/include/media/AudioRecord.h b/include/media/AudioRecord.h index 7be2c3e..dbe2788 100644 --- a/include/media/AudioRecord.h +++ b/include/media/AudioRecord.h @@ -335,6 +335,13 @@ public: * After draining these frames of data, the caller should release them with releaseBuffer(). * If the track buffer is not empty, obtainBuffer() returns as many contiguous * full frames as are available immediately. + * + * If nonContig is non-NULL, it is an output parameter that will be set to the number of + * additional non-contiguous frames that are predicted to be available immediately, + * if the client were to release the first frames and then call obtainBuffer() again. + * This value is only a prediction, and needs to be confirmed. + * It will be set to zero for an error return. + * * If the track buffer is empty and track is stopped, obtainBuffer() returns WOULD_BLOCK * regardless of the value of waitCount. * If the track buffer is empty and track is not stopped, obtainBuffer() blocks with a @@ -364,11 +371,15 @@ public: * raw pointer to the buffer */ - status_t obtainBuffer(Buffer* audioBuffer, int32_t waitCount); + status_t obtainBuffer(Buffer* audioBuffer, int32_t waitCount, + size_t *nonContig = NULL); private: /* If nonContig is non-NULL, it is an output parameter that will be set to the number of - * additional non-contiguous frames that are available immediately. + * additional non-contiguous frames that are predicted to be available immediately, + * if the client were to release the first frames and then call obtainBuffer() again. + * This value is only a prediction, and needs to be confirmed. + * It will be set to zero for an error return. * FIXME We could pass an array of Buffers instead of only one Buffer to obtainBuffer(), * in case the requested amount of frames is in two or more non-contiguous regions. * FIXME requested and elapsed are both relative times. Consider changing to absolute time. |