Lines Matching defs:buf

29 static AVBufferRef *buffer_create(AVBuffer *buf, uint8_t *data, size_t size,
35 buf->data = data;
36 buf->size = size;
37 buf->free = free ? free : av_buffer_default_free;
38 buf->opaque = opaque;
40 atomic_init(&buf->refcount, 1);
42 buf->flags = flags;
48 ref->buffer = buf;
60 AVBuffer *buf = av_mallocz(sizeof(*buf));
61 if (!buf)
64 ret = buffer_create(buf, data, size, free, opaque, flags);
66 av_free(buf);
103 AVBufferRef *av_buffer_ref(const AVBufferRef *buf)
110 *ret = *buf;
112 atomic_fetch_add_explicit(&buf->buffer->refcount, 1, memory_order_relaxed);
139 void av_buffer_unref(AVBufferRef **buf)
141 if (!buf || !*buf)
144 buffer_replace(buf, NULL);
147 int av_buffer_is_writable(const AVBufferRef *buf)
149 if (buf->buffer->flags & AV_BUFFER_FLAG_READONLY)
152 return atomic_load(&buf->buffer->refcount) == 1;
155 void *av_buffer_get_opaque(const AVBufferRef *buf)
157 return buf->buffer->opaque;
160 int av_buffer_get_ref_count(const AVBufferRef *buf)
162 return atomic_load(&buf->buffer->refcount);
167 AVBufferRef *newbuf, *buf = *pbuf;
169 if (av_buffer_is_writable(buf))
172 newbuf = av_buffer_alloc(buf->size);
176 memcpy(newbuf->data, buf->data, buf->size);
185 AVBufferRef *buf = *pbuf;
189 if (!buf) {
196 buf = av_buffer_create(data, size, av_buffer_default_free, NULL, 0);
197 if (!buf) {
202 buf->buffer->flags_internal |= BUFFER_FLAG_REALLOCATABLE;
203 *pbuf = buf;
206 } else if (buf->size == size)
209 if (!(buf->buffer->flags_internal & BUFFER_FLAG_REALLOCATABLE) ||
210 !av_buffer_is_writable(buf) || buf->data != buf->buffer->data) {
218 memcpy(new->data, buf->data, FFMIN(size, buf->size));
224 tmp = av_realloc(buf->buffer->data, size);
228 buf->buffer->data = buf->data = tmp;
229 buf->buffer->size = buf->size = size;
299 BufferPoolEntry *buf = pool->pool;
300 pool->pool = buf->next;
302 buf->free(buf->opaque, buf->data);
303 av_freep(&buf);
341 BufferPoolEntry *buf = opaque;
342 AVBufferPool *pool = buf->pool;
345 memset(buf->data, FF_MEMORY_POISON, pool->size);
348 buf->next = pool->pool;
349 pool->pool = buf;
360 BufferPoolEntry *buf;
370 buf = av_mallocz(sizeof(*buf));
371 if (!buf) {
376 buf->data = ret->buffer->data;
377 buf->opaque = ret->buffer->opaque;
378 buf->free = ret->buffer->free;
379 buf->pool = pool;
381 ret->buffer->opaque = buf;
390 BufferPoolEntry *buf;
393 buf = pool->pool;
394 if (buf) {
395 memset(&buf->buffer, 0, sizeof(buf->buffer));
396 ret = buffer_create(&buf->buffer, buf->data, pool->size,
397 pool_release_buffer, buf, 0);
399 pool->pool = buf->next;
400 buf->next = NULL;
401 buf->buffer.flags_internal |= BUFFER_FLAG_NO_FREE;
416 BufferPoolEntry *buf = ref->buffer->opaque;
417 av_assert0(buf);
418 return buf->opaque;