aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefano Sabatini <stefano.sabatini-lala@poste.it>2008-08-19 18:43:34 +0000
committerStefano Sabatini <stefano.sabatini-lala@poste.it>2008-08-19 18:43:34 +0000
commit8257b835cf4d422ca3f0426ac2e151f5dff69ecb (patch)
tree4e7f62292f381f3516b996757f233795a08de3c9
parente13894e80e25ecfda73fce3fbf1e206642c695a9 (diff)
downloadffmpeg-8257b835cf4d422ca3f0426ac2e151f5dff69ecb.tar.gz
Implement av_fifo_realloc2().
Originally committed as revision 14846 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--libavutil/avutil.h2
-rw-r--r--libavutil/fifo.c8
-rw-r--r--libavutil/fifo.h9
3 files changed, 17 insertions, 2 deletions
diff --git a/libavutil/avutil.h b/libavutil/avutil.h
index 3203ca2875..cefc710de8 100644
--- a/libavutil/avutil.h
+++ b/libavutil/avutil.h
@@ -35,7 +35,7 @@
#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c)
#define LIBAVUTIL_VERSION_MAJOR 49
-#define LIBAVUTIL_VERSION_MINOR 9
+#define LIBAVUTIL_VERSION_MINOR 10
#define LIBAVUTIL_VERSION_MICRO 0
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
diff --git a/libavutil/fifo.c b/libavutil/fifo.c
index eda3558436..19715ebce4 100644
--- a/libavutil/fifo.c
+++ b/libavutil/fifo.c
@@ -55,18 +55,24 @@ int av_fifo_read(AVFifoBuffer *f, uint8_t *buf, int buf_size)
* Resizes a FIFO.
*/
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;
if(old_size <= new_size){
int len= av_fifo_size(f);
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);
f2.wptr += len;
av_free(f->buffer);
*f= f2;
}
+ return 0;
}
void av_fifo_write(AVFifoBuffer *f, const uint8_t *buf, int size)
diff --git a/libavutil/fifo.h b/libavutil/fifo.h
index 6533be921d..2384f7021f 100644
--- a/libavutil/fifo.h
+++ b/libavutil/fifo.h
@@ -97,10 +97,19 @@ int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void
* Resizes an AVFifoBuffer.
* @param *f AVFifoBuffer to resize
* @param size new AVFifoBuffer size in bytes
+ * @see av_fifo_realloc2()
*/
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.
* @param *f AVFifoBuffer to read from
* @param size amount of data to read in bytes