diff options
-rw-r--r-- | include/media/stagefright/foundation/ABuffer.h | 3 | ||||
-rw-r--r-- | media/libstagefright/foundation/ABuffer.cpp | 8 |
2 files changed, 11 insertions, 0 deletions
diff --git a/include/media/stagefright/foundation/ABuffer.h b/include/media/stagefright/foundation/ABuffer.h index 28f0aed..602f7ab 100644 --- a/include/media/stagefright/foundation/ABuffer.h +++ b/include/media/stagefright/foundation/ABuffer.h @@ -42,6 +42,9 @@ struct ABuffer : public RefBase { void setRange(size_t offset, size_t size); + // create buffer from dup of some memory block + static sp<ABuffer> CreateAsCopy(const void *data, size_t capacity); + void setInt32Data(int32_t data) { mInt32Data = data; } int32_t int32Data() const { return mInt32Data; } diff --git a/media/libstagefright/foundation/ABuffer.cpp b/media/libstagefright/foundation/ABuffer.cpp index 6173db4..c93c7e8 100644 --- a/media/libstagefright/foundation/ABuffer.cpp +++ b/media/libstagefright/foundation/ABuffer.cpp @@ -40,6 +40,14 @@ ABuffer::ABuffer(void *data, size_t capacity) mOwnsData(false) { } +// static +sp<ABuffer> ABuffer::CreateAsCopy(const void *data, size_t capacity) +{ + sp<ABuffer> res = new ABuffer(capacity); + memcpy(res->data(), data, capacity); + return res; +} + ABuffer::~ABuffer() { if (mOwnsData) { if (mData != NULL) { |