29 void (*free)(
void *opaque,
uint8_t *data),
30 void *opaque,
int flags)
88 memset(ret->
data, 0, size);
169 }
else if (buf->
size == size)
234 if (!ppool || !*ppool)
int av_buffer_make_writable(AVBufferRef **pbuf)
Create a writable reference from a given buffer reference, avoiding data copy if possible.
#define avpriv_atomic_int_add_and_fetch
void av_buffer_unref(AVBufferRef **buf)
Free a given reference and automatically free the buffer if there are no more references to it...
#define ff_mutex_unlock(mutex)
#define BUFFER_FLAG_READONLY
The buffer is always treated as read-only.
struct BufferPoolEntry * next
void av_freep(void *ptr)
Free a memory block which has been allocated with av_malloc(z)() or av_realloc() and set the pointer ...
volatile int refcount
number of existing AVBufferRef instances referring to this buffer
uint8_t * data
data described by this buffer
AVBufferRef * av_buffer_create(uint8_t *data, int size, void(*free)(void *opaque, uint8_t *data), void *opaque, int flags)
Create an AVBuffer from an existing array.
#define avpriv_atomic_int_set
#define AV_BUFFER_FLAG_READONLY
Always treat the buffer as read-only, even when it has only one reference.
void av_buffer_default_free(void *opaque, uint8_t *data)
Default free callback, which calls av_free() on the buffer data.
void av_free(void *ptr)
Free a memory block which has been allocated with av_malloc(z)() or av_realloc(). ...
int av_buffer_realloc(AVBufferRef **pbuf, int size)
Reallocate a given buffer.
static AVBufferRef * pool_alloc_buffer(AVBufferPool *pool)
#define ff_mutex_destroy(mutex)
uint8_t * data
The data buffer.
void * av_realloc(void *ptr, size_t size) 1(2)
Allocate or reallocate a block of memory.
void * av_malloc(size_t size) av_malloc_attrib 1(1)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...
int av_buffer_is_writable(const AVBufferRef *buf)
#define ff_mutex_lock(mutex)
AVBufferRef * av_buffer_pool_get(AVBufferPool *pool)
Allocate a new AVBuffer, reusing an old buffer from the pool when available.
static void pool_release_buffer(void *opaque, uint8_t *data)
int flags
A combination of BUFFER_FLAG_*.
#define ff_mutex_init(mutex, attr)
void(* free)(void *opaque, uint8_t *data)
a callback for freeing the data
AVBufferRef * av_buffer_alloc(int size)
Allocate an AVBuffer of the given size using av_malloc().
static void buffer_pool_free(AVBufferPool *pool)
memory handling functions
AVBufferRef * av_buffer_allocz(int size)
Same as av_buffer_alloc(), except the returned buffer will be initialized to zero.
void av_buffer_pool_uninit(AVBufferPool **ppool)
Mark the pool as being available for freeing.
A reference counted buffer type.
int size
Size of data in bytes.
void * opaque
an opaque pointer, to be used by the freeing callback
A reference to a data buffer.
AVBufferPool * av_buffer_pool_init(int size, AVBufferRef *(*alloc)(int size))
Allocate and initialize a buffer pool.
AVBufferRef * av_buffer_ref(AVBufferRef *buf)
Create a new reference to an AVBuffer.
int size
size of data in bytes
AVBufferRef *(* alloc)(int size)
void(* free)(void *opaque, uint8_t *data)
common internal and external API header
#define BUFFER_FLAG_REALLOCATABLE
The buffer was av_realloc()ed, so it is reallocatable.
void * av_mallocz(size_t size) av_malloc_attrib 1(1)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...