diff options
author | Wei Jia <wjia@google.com> | 2014-09-18 17:36:20 -0700 |
---|---|---|
committer | Wei Jia <wjia@google.com> | 2014-09-19 19:20:58 -0700 |
commit | 96e92b58b7e9647b4c7c2f54b62a1b357ab06b66 (patch) | |
tree | 35b83c45383cf9753b2f48eea71e66d5331165dc /media/libstagefright/foundation | |
parent | 086c1e3f41a92aa0025a1da1db5dabbfdffaf129 (diff) | |
download | frameworks_av-96e92b58b7e9647b4c7c2f54b62a1b357ab06b66.zip frameworks_av-96e92b58b7e9647b4c7c2f54b62a1b357ab06b66.tar.gz frameworks_av-96e92b58b7e9647b4c7c2f54b62a1b357ab06b66.tar.bz2 |
MediaBuffer: ABuffer will release MediaBuffer when it's destructed.
Bug: 17454455
Change-Id: Ia423bcc2e1fa39137f114eac44912ed15357bb99
Diffstat (limited to 'media/libstagefright/foundation')
-rw-r--r-- | media/libstagefright/foundation/ABuffer.cpp | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/media/libstagefright/foundation/ABuffer.cpp b/media/libstagefright/foundation/ABuffer.cpp index c93c7e8..b214870 100644 --- a/media/libstagefright/foundation/ABuffer.cpp +++ b/media/libstagefright/foundation/ABuffer.cpp @@ -19,11 +19,13 @@ #include "ADebug.h" #include "ALooper.h" #include "AMessage.h" +#include "MediaBufferBase.h" namespace android { ABuffer::ABuffer(size_t capacity) - : mData(malloc(capacity)), + : mMediaBufferBase(NULL), + mData(malloc(capacity)), mCapacity(capacity), mRangeOffset(0), mRangeLength(capacity), @@ -32,7 +34,8 @@ ABuffer::ABuffer(size_t capacity) } ABuffer::ABuffer(void *data, size_t capacity) - : mData(data), + : mMediaBufferBase(NULL), + mData(data), mCapacity(capacity), mRangeOffset(0), mRangeLength(capacity), @@ -59,6 +62,8 @@ ABuffer::~ABuffer() { if (mFarewell != NULL) { mFarewell->post(); } + + setMediaBufferBase(NULL); } void ABuffer::setRange(size_t offset, size_t size) { @@ -80,5 +85,19 @@ sp<AMessage> ABuffer::meta() { return mMeta; } +MediaBufferBase *ABuffer::getMediaBufferBase() { + if (mMediaBufferBase != NULL) { + mMediaBufferBase->add_ref(); + } + return mMediaBufferBase; +} + +void ABuffer::setMediaBufferBase(MediaBufferBase *mediaBuffer) { + if (mMediaBufferBase != NULL) { + mMediaBufferBase->release(); + } + mMediaBufferBase = mediaBuffer; +} + } // namespace android |