From c26d923712a59e669d18191d93fbe3696789d592 Mon Sep 17 00:00:00 2001 From: Glenn Kasten Date: Fri, 9 May 2014 13:37:29 -0700 Subject: Allow placement of Pipe buffer to be specified Change-Id: I2f6b68089ecfe85cd975d29ad0d0afd13c487002 --- media/libnbaio/Pipe.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'media/libnbaio') 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) -- cgit v1.1