summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2013-12-17 16:14:04 -0800
committerGlenn Kasten <gkasten@google.com>2013-12-17 16:16:24 -0800
commit47f3f5a119194d4c06815453be9950ba112c8e3e (patch)
tree60f1d74de1ab21c097002b76fbedf30a4fce2608
parentbd72d22097f78f5bd668b223bc8c94e351311e31 (diff)
downloadframeworks_av-47f3f5a119194d4c06815453be9950ba112c8e3e.zip
frameworks_av-47f3f5a119194d4c06815453be9950ba112c8e3e.tar.gz
frameworks_av-47f3f5a119194d4c06815453be9950ba112c8e3e.tar.bz2
Fix bug in test-resample's AudioBufferProvider
The contract for AudioBufferProvider::releaseBuffer() was missing. Bug: 12194314 Change-Id: I2fcf75e7b8eaf6db34f360206d79457a04a73565
-rw-r--r--include/media/AudioBufferProvider.h11
-rw-r--r--services/audioflinger/test-resample.cpp2
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);