diff options
-rw-r--r-- | include/media/AudioBufferProvider.h | 11 | ||||
-rw-r--r-- | services/audioflinger/test-resample.cpp | 2 |
2 files changed, 13 insertions, 0 deletions
diff --git a/include/media/AudioBufferProvider.h b/include/media/AudioBufferProvider.h index ef392f0..7be449c 100644 --- a/include/media/AudioBufferProvider.h +++ b/include/media/AudioBufferProvider.h @@ -61,6 +61,17 @@ public: // buffer->frameCount 0 virtual status_t getNextBuffer(Buffer* buffer, int64_t pts = kInvalidPTS) = 0; + // Release (a portion of) the buffer previously obtained by getNextBuffer(). + // It is permissible to call releaseBuffer() multiple times per getNextBuffer(). + // On entry: + // buffer->frameCount number of frames to release, must be <= number of frames + // obtained but not yet released + // buffer->raw unused + // On return: + // buffer->frameCount 0; implementation MUST set to zero + // buffer->raw undefined; implementation is PERMITTED to set to any value, + // so if caller needs to continue using this buffer it must + // keep track of the pointer itself virtual void releaseBuffer(Buffer* buffer) = 0; }; diff --git a/services/audioflinger/test-resample.cpp b/services/audioflinger/test-resample.cpp index 0d00a0f..403bb6d 100644 --- a/services/audioflinger/test-resample.cpp +++ b/services/audioflinger/test-resample.cpp @@ -202,6 +202,8 @@ int main(int argc, char* argv[]) { mNextFrame += buffer->frameCount; mUnrel -= buffer->frameCount; } + buffer->frameCount = 0; + buffer->i16 = NULL; } } provider(input_vaddr, input_size, channels); |