From: Glenn Kasten Date: Wed, 18 Dec 2013 00:14:04 +0000 (-0800) Subject: Fix bug in test-resample's AudioBufferProvider X-Git-Tag: android-x86-6.0-r1~2615^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=47f3f5a119194d4c06815453be9950ba112c8e3e;p=android-x86%2Fframeworks-av.git Fix bug in test-resample's AudioBufferProvider The contract for AudioBufferProvider::releaseBuffer() was missing. Bug: 12194314 Change-Id: I2fcf75e7b8eaf6db34f360206d79457a04a73565 --- diff --git a/include/media/AudioBufferProvider.h b/include/media/AudioBufferProvider.h index ef392f0e4a..7be449c5bd 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 0d00a0f33f..403bb6d34a 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);