summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2015-03-20 11:30:28 -0700
committerGlenn Kasten <gkasten@google.com>2015-04-13 18:02:09 -0700
commit551b5355d34aa42890811fc3606d3b63429296cd (patch)
treea55a6f457f11025f653241a58d475fe6a8269be5 /include
parent7d669b3551c20109f5544455ca1555499693e1e1 (diff)
downloadframeworks_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.h15
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.