提交 7336e39f 编写于 作者: L Lukasz Marek

lavu/fifo: add av_fifo_alloc_array function

Allows to alloc fifo buffer by passing
number of elements and size of element.
Signed-off-by: NLukasz Marek <lukasz.m.luki2@gmail.com>
上级 d43c3030
......@@ -15,6 +15,9 @@ libavutil: 2012-10-22
API changes, most recent first:
2014-05-xx - xxxxxxx - lavu 52.86.100 - fifo.h
Add av_fifo_alloc_array() function.
2014-05-xx - xxxxxxx - lavu 53.15.0 - frame.h, display.h
Add AV_FRAME_DATA_DISPLAYMATRIX for exporting frame-level
spatial rendering on video frames for proper display.
......
......@@ -24,19 +24,34 @@
#include "common.h"
#include "fifo.h"
AVFifoBuffer *av_fifo_alloc(unsigned int size)
static AVFifoBuffer *fifo_alloc_common(void *buffer, size_t size)
{
AVFifoBuffer *f = av_mallocz(sizeof(AVFifoBuffer));
if (!f)
AVFifoBuffer *f;
if (!buffer)
return NULL;
f = av_mallocz(sizeof(AVFifoBuffer));
if (!f) {
av_free(buffer);
return NULL;
f->buffer = av_malloc(size);
}
f->buffer = buffer;
f->end = f->buffer + size;
av_fifo_reset(f);
if (!f->buffer)
av_freep(&f);
return f;
}
AVFifoBuffer *av_fifo_alloc(unsigned int size)
{
void *buffer = av_malloc(size);
return fifo_alloc_common(buffer, size);
}
AVFifoBuffer *av_fifo_alloc_array(size_t nmemb, size_t size)
{
void *buffer = av_malloc_array(nmemb, size);
return fifo_alloc_common(buffer, nmemb * size);
}
void av_fifo_free(AVFifoBuffer *f)
{
if (f) {
......
......@@ -41,6 +41,14 @@ typedef struct AVFifoBuffer {
*/
AVFifoBuffer *av_fifo_alloc(unsigned int size);
/**
* Initialize an AVFifoBuffer.
* @param nmemb number of elements
* @param size size of the single element
* @return AVFifoBuffer or NULL in case of memory allocation failure
*/
AVFifoBuffer *av_fifo_alloc_array(size_t nmemb, size_t size);
/**
* Free an AVFifoBuffer.
* @param f AVFifoBuffer to free
......
......@@ -56,7 +56,7 @@
*/
#define LIBAVUTIL_VERSION_MAJOR 52
#define LIBAVUTIL_VERSION_MINOR 85
#define LIBAVUTIL_VERSION_MINOR 86
#define LIBAVUTIL_VERSION_MICRO 100
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册