Implement av_fifo_realloc2().

Originally committed as revision 14846 to svn://svn.ffmpeg.org/ffmpeg/trunk
pull/126/head
Stefano Sabatini 16 years ago
parent e13894e80e
commit 8257b835cf
  1. 2
      libavutil/avutil.h
  2. 8
      libavutil/fifo.c
  3. 9
      libavutil/fifo.h

@ -35,7 +35,7 @@
#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c) #define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c)
#define LIBAVUTIL_VERSION_MAJOR 49 #define LIBAVUTIL_VERSION_MAJOR 49
#define LIBAVUTIL_VERSION_MINOR 9 #define LIBAVUTIL_VERSION_MINOR 10
#define LIBAVUTIL_VERSION_MICRO 0 #define LIBAVUTIL_VERSION_MICRO 0
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \

@ -55,18 +55,24 @@ int av_fifo_read(AVFifoBuffer *f, uint8_t *buf, int buf_size)
* Resizes a FIFO. * Resizes a FIFO.
*/ */
void av_fifo_realloc(AVFifoBuffer *f, unsigned int new_size) { void av_fifo_realloc(AVFifoBuffer *f, unsigned int new_size) {
av_fifo_realloc2(f, new_size);
}
int av_fifo_realloc2(AVFifoBuffer *f, unsigned int new_size) {
unsigned int old_size= f->end - f->buffer; unsigned int old_size= f->end - f->buffer;
if(old_size <= new_size){ if(old_size <= new_size){
int len= av_fifo_size(f); int len= av_fifo_size(f);
AVFifoBuffer f2; AVFifoBuffer f2;
av_fifo_init(&f2, new_size); if (av_fifo_init(&f2, new_size) < 0)
return -1;
av_fifo_read(f, f2.buffer, len); av_fifo_read(f, f2.buffer, len);
f2.wptr += len; f2.wptr += len;
av_free(f->buffer); av_free(f->buffer);
*f= f2; *f= f2;
} }
return 0;
} }
void av_fifo_write(AVFifoBuffer *f, const uint8_t *buf, int size) void av_fifo_write(AVFifoBuffer *f, const uint8_t *buf, int size)

@ -97,9 +97,18 @@ int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void
* Resizes an AVFifoBuffer. * Resizes an AVFifoBuffer.
* @param *f AVFifoBuffer to resize * @param *f AVFifoBuffer to resize
* @param size new AVFifoBuffer size in bytes * @param size new AVFifoBuffer size in bytes
* @see av_fifo_realloc2()
*/ */
void av_fifo_realloc(AVFifoBuffer *f, unsigned int size); void av_fifo_realloc(AVFifoBuffer *f, unsigned int size);
/**
* Resizes an AVFifoBuffer.
* @param *f AVFifoBuffer to resize
* @param size new AVFifoBuffer size in bytes
* @return <0 for failure >=0 otherwise
*/
int av_fifo_realloc2(AVFifoBuffer *f, unsigned int size);
/** /**
* Reads and discards the specified amount of data from an AVFifoBuffer. * Reads and discards the specified amount of data from an AVFifoBuffer.
* @param *f AVFifoBuffer to read from * @param *f AVFifoBuffer to read from

Loading…
Cancel
Save