]> git.sesse.net Git - ffmpeg/blobdiff - libavutil/fifo.c
Merge remote-tracking branch 'qatar/master'
[ffmpeg] / libavutil / fifo.c
index d1d9ba80033945ac0d7d76e548b2b709305f1039..47328c458542ff049545e9c41efb48426fc7f467 100644 (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))
 {