22 #include <com/avpkit/ferry/Logger.h>
23 #include <com/avpkit/ferry/JNIMemoryManager.h>
25 #include <com/avpkit/ferry/Buffer.h>
27 VS_LOG_SETUP(VS_CPP_PACKAGE);
29 namespace com {
namespace avpkit {
namespace ferry
31 uint8_t Buffer :: mTypeSize[] = {
45 Buffer :: Buffer() : mBuffer(0), mBufferSize(0)
49 mInternallyAllocated =
false;
50 mType = IBUFFER_UINT8;
57 VS_ASSERT(mBufferSize,
"had buffer but no size");
58 if (mInternallyAllocated)
59 JNIMemoryManager::free(mBuffer);
61 mFreeFunc(mBuffer, mClosure);
71 Buffer :: getBytes(int32_t offset, int32_t length)
76 length = mBufferSize - offset;
78 if ((length > 0) && (length + offset <= mBufferSize))
79 retval = ((
unsigned char*) mBuffer)+offset;
85 Buffer :: getBufferSize()
98 void *buffer = JNIMemoryManager::malloc(allocator, bufferSize);
102 retval = Buffer::make();
104 JNIMemoryManager::free(buffer);
107 retval->mBuffer = buffer;
108 retval->mBufferSize = bufferSize;
109 retval->mInternallyAllocated =
true;
115 FreeFunc freeFunc,
void *closure)
119 if (bufToWrap && bufferSize>0)
121 retval = Buffer::make();
124 retval->mFreeFunc = freeFunc;
125 retval->mClosure = closure;
126 retval->mBufferSize = bufferSize;
127 retval->mBuffer = bufToWrap;
128 retval->mInternallyAllocated =
false;
141 Buffer :: setType(Type type)
148 Type type, int32_t numElements,
bool zero)
150 if (numElements <= 0)
152 if (type < 0 || type >= IBUFFER_NB)
155 int32_t bytesRequested = numElements*mTypeSize[(int32_t)type];
156 Buffer *retval = Buffer::make(requestor, bytesRequested);
159 retval->mType = type;
161 memset(retval->getBytes(0, bytesRequested), 0, bytesRequested);
167 Buffer :: getTypeSize(Type type)
169 if (type < 0 || type >= IBUFFER_NB)
171 return mTypeSize[(int32_t)type];
177 if (mType < 0 || mType >= IBUFFER_NB)
179 return getBufferSize()/mTypeSize[(int32_t)mType];
Parent of all Ferry objects – it mains reference counts in native code.
void * getJavaAllocator()
This method is public but not part of the standard API.
WARNING: Do not use logging in this class, and do not set any static file variables to values other t...