Browse Source

fifo: add av_fifo_grow()

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n0.11
Michael Niedermayer 13 years ago
parent
commit
f8196759b4
3 changed files with 25 additions and 1 deletions
  1. +1
    -1
      libavutil/avutil.h
  2. +13
    -0
      libavutil/fifo.c
  3. +11
    -0
      libavutil/fifo.h

+ 1
- 1
libavutil/avutil.h View File

@@ -153,7 +153,7 @@
*/

#define LIBAVUTIL_VERSION_MAJOR 51
#define LIBAVUTIL_VERSION_MINOR 51
#define LIBAVUTIL_VERSION_MINOR 52
#define LIBAVUTIL_VERSION_MICRO 100

#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \


+ 13
- 0
libavutil/fifo.c View File

@@ -79,6 +79,19 @@ int av_fifo_realloc2(AVFifoBuffer *f, unsigned int new_size)
return 0;
}

int av_fifo_grow(AVFifoBuffer *f, unsigned int size)
{
unsigned int old_size = f->end - f->buffer;
if(size + (unsigned)av_fifo_size(f) < size)
return AVERROR(EINVAL);

size += av_fifo_size(f);

if (old_size < size)
return av_fifo_realloc2(f, FFMAX(size, 2*size));
return 0;
}

// src must NOT be const as it can be a context for func that may need updating (like a pointer or byte counter)
int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void*, void*, int))
{


+ 11
- 0
libavutil/fifo.h View File

@@ -102,6 +102,17 @@ int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void
*/
int av_fifo_realloc2(AVFifoBuffer *f, unsigned int size);

/**
* Enlarge an AVFifoBuffer.
* In case of reallocation failure, the old FIFO is kept unchanged.
* The new fifo size may be larger than the requested size.
*
* @param f AVFifoBuffer to resize
* @param additional_space the amount of space in bytes to allocate in addition to av_fifo_size()
* @return <0 for failure, >=0 otherwise
*/
int av_fifo_grow(AVFifoBuffer *f, unsigned int additional_space);

/**
* Read and discard the specified amount of data from an AVFifoBuffer.
* @param f AVFifoBuffer to read from


Loading…
Cancel
Save