Implement av_fifo_realloc2().
Originally committed as revision 14846 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
e13894e80e
commit
8257b835cf
@ -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…
x
Reference in New Issue
Block a user