summaryrefslogtreecommitdiffstats
path: root/media/libnbaio
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2014-05-09 13:37:29 -0700
committerGlenn Kasten <gkasten@google.com>2014-05-09 16:34:46 -0700
commitc26d923712a59e669d18191d93fbe3696789d592 (patch)
tree735e84b0df3d43ff26b192e89beb756ac952b4bc /media/libnbaio
parent110135b9610fee8bfa5bac2d9ef4fc4c24991c36 (diff)
downloadframeworks_av-c26d923712a59e669d18191d93fbe3696789d592.zip
frameworks_av-c26d923712a59e669d18191d93fbe3696789d592.tar.gz
frameworks_av-c26d923712a59e669d18191d93fbe3696789d592.tar.bz2
Allow placement of Pipe buffer to be specified
Change-Id: I2f6b68089ecfe85cd975d29ad0d0afd13c487002
Diffstat (limited to 'media/libnbaio')
-rw-r--r--media/libnbaio/Pipe.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/media/libnbaio/Pipe.cpp b/media/libnbaio/Pipe.cpp
index 28a034c..6e0ec8c 100644
--- a/media/libnbaio/Pipe.cpp
+++ b/media/libnbaio/Pipe.cpp
@@ -25,19 +25,22 @@
namespace android {
-Pipe::Pipe(size_t maxFrames, const NBAIO_Format& format) :
+Pipe::Pipe(size_t maxFrames, const NBAIO_Format& format, void *buffer) :
NBAIO_Sink(format),
mMaxFrames(roundup(maxFrames)),
- mBuffer(malloc(mMaxFrames * Format_frameSize(format))),
+ mBuffer(buffer == NULL ? malloc(mMaxFrames * Format_frameSize(format)) : buffer),
mRear(0),
- mReaders(0)
+ mReaders(0),
+ mFreeBufferInDestructor(buffer == NULL)
{
}
Pipe::~Pipe()
{
ALOG_ASSERT(android_atomic_acquire_load(&mReaders) == 0);
- free(mBuffer);
+ if (mFreeBufferInDestructor) {
+ free(mBuffer);
+ }
}
ssize_t Pipe::write(const void *buffer, size_t count)