From 0a71e78ce4947ccf553442dcc59578c1a20d169b Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sat, 7 Mar 2009 21:02:08 +0000 Subject: Try to fix the 1 byte cannot be used issue. Originally committed as revision 17865 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavutil/fifo.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'libavutil/fifo.c') diff --git a/libavutil/fifo.c b/libavutil/fifo.c index 86236f740e..4bc8be07ff 100644 --- a/libavutil/fifo.c +++ b/libavutil/fifo.c @@ -24,10 +24,10 @@ int av_fifo_init(AVFifoBuffer *f, unsigned int size) { - size= FFMAX(size, size+1); f->wptr = f->rptr = f->buffer = av_malloc(size); f->end = f->buffer + size; + f->rndx = f->wndx = 0; if (!f->buffer) return -1; return 0; @@ -40,10 +40,7 @@ void av_fifo_free(AVFifoBuffer *f) int av_fifo_size(AVFifoBuffer *f) { - int size = f->wptr - f->rptr; - if (size < 0) - size += f->end - f->buffer; - return size; + return (uint32_t)(f->wndx - f->rndx); } int av_fifo_read(AVFifoBuffer *f, uint8_t *buf, int buf_size) @@ -60,7 +57,7 @@ void av_fifo_realloc(AVFifoBuffer *f, unsigned int 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){ + if(old_size < new_size){ int len= av_fifo_size(f); AVFifoBuffer f2; @@ -68,6 +65,7 @@ int av_fifo_realloc2(AVFifoBuffer *f, unsigned int new_size) { return -1; av_fifo_read(f, f2.buffer, len); f2.wptr += len; + f2.wndx += len; av_free(f->buffer); *f= f2; } @@ -96,6 +94,7 @@ int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void f->wptr += len; if (f->wptr >= f->end) f->wptr = f->buffer; + f->wndx += len; size -= len; } while (size > 0); return total - size; @@ -123,4 +122,5 @@ void av_fifo_drain(AVFifoBuffer *f, int size) f->rptr += size; if (f->rptr >= f->end) f->rptr -= f->end - f->buffer; + f->rndx += size; } -- cgit v1.2.3