Loading include/media/AudioTrack.h +13 −3 Original line number Diff line number Diff line Loading @@ -495,6 +495,13 @@ public: * After filling these slots with data, the caller should release them with releaseBuffer(). * If the track buffer is not full, obtainBuffer() returns as many contiguous * [empty slots for] 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 full and track is stopped, obtainBuffer() returns WOULD_BLOCK * regardless of the value of waitCount. * If the track buffer is full and track is not stopped, obtainBuffer() blocks with a Loading Loading @@ -526,14 +533,17 @@ public: * size actual number of bytes available * raw pointer to the buffer */ /* FIXME Deprecated public API for TRANSFER_OBTAIN mode */ status_t obtainBuffer(Buffer* audioBuffer, int32_t waitCount) status_t obtainBuffer(Buffer* audioBuffer, int32_t waitCount, size_t *nonContig = NULL) __attribute__((__deprecated__)); 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. Loading media/libmedia/AudioTrack.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -1236,7 +1236,7 @@ release: return status; } status_t AudioTrack::obtainBuffer(Buffer* audioBuffer, int32_t waitCount) status_t AudioTrack::obtainBuffer(Buffer* audioBuffer, int32_t waitCount, size_t *nonContig) { if (audioBuffer == NULL) { return BAD_VALUE; Loading @@ -1263,7 +1263,7 @@ status_t AudioTrack::obtainBuffer(Buffer* audioBuffer, int32_t waitCount) ALOGE("%s invalid waitCount %d", __func__, waitCount); requested = NULL; } return obtainBuffer(audioBuffer, requested); return obtainBuffer(audioBuffer, requested, NULL /*elapsed*/, nonContig); } status_t AudioTrack::obtainBuffer(Buffer* audioBuffer, const struct timespec *requested, Loading Loading
include/media/AudioTrack.h +13 −3 Original line number Diff line number Diff line Loading @@ -495,6 +495,13 @@ public: * After filling these slots with data, the caller should release them with releaseBuffer(). * If the track buffer is not full, obtainBuffer() returns as many contiguous * [empty slots for] 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 full and track is stopped, obtainBuffer() returns WOULD_BLOCK * regardless of the value of waitCount. * If the track buffer is full and track is not stopped, obtainBuffer() blocks with a Loading Loading @@ -526,14 +533,17 @@ public: * size actual number of bytes available * raw pointer to the buffer */ /* FIXME Deprecated public API for TRANSFER_OBTAIN mode */ status_t obtainBuffer(Buffer* audioBuffer, int32_t waitCount) status_t obtainBuffer(Buffer* audioBuffer, int32_t waitCount, size_t *nonContig = NULL) __attribute__((__deprecated__)); 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. Loading
media/libmedia/AudioTrack.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -1236,7 +1236,7 @@ release: return status; } status_t AudioTrack::obtainBuffer(Buffer* audioBuffer, int32_t waitCount) status_t AudioTrack::obtainBuffer(Buffer* audioBuffer, int32_t waitCount, size_t *nonContig) { if (audioBuffer == NULL) { return BAD_VALUE; Loading @@ -1263,7 +1263,7 @@ status_t AudioTrack::obtainBuffer(Buffer* audioBuffer, int32_t waitCount) ALOGE("%s invalid waitCount %d", __func__, waitCount); requested = NULL; } return obtainBuffer(audioBuffer, requested); return obtainBuffer(audioBuffer, requested, NULL /*elapsed*/, nonContig); } status_t AudioTrack::obtainBuffer(Buffer* audioBuffer, const struct timespec *requested, Loading