From 47f3f5a119194d4c06815453be9950ba112c8e3e Mon Sep 17 00:00:00 2001 From: Glenn Kasten Date: Tue, 17 Dec 2013 16:14:04 -0800 Subject: Fix bug in test-resample's AudioBufferProvider The contract for AudioBufferProvider::releaseBuffer() was missing. Bug: 12194314 Change-Id: I2fcf75e7b8eaf6db34f360206d79457a04a73565 --- include/media/AudioBufferProvider.h | 11 +++++++++++ services/audioflinger/test-resample.cpp | 2 ++ 2 files changed, 13 insertions(+) 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); -- cgit v1.1