]> git.sesse.net Git - ffmpeg/blobdiff - libavutil/fifo.c
sws/pixfmt/pixdesc: add support for yuva444p
[ffmpeg] / libavutil / fifo.c
index 3ebd5f9b202f15f330eb5b461fbcadd95292ccc5..d1d9ba80033945ac0d7d76e548b2b709305f1039 100644 (file)
@@ -83,22 +83,27 @@ int av_fifo_realloc2(AVFifoBuffer *f, unsigned int new_size)
 int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void*, void*, int))
 {
     int total = size;
+    uint32_t wndx= f->wndx;
+    uint8_t *wptr= f->wptr;
+
     do {
-        int len = FFMIN(f->end - f->wptr, size);
+        int len = FFMIN(f->end - wptr, size);
         if (func) {
-            if (func(src, f->wptr, len) <= 0)
+            if (func(src, wptr, len) <= 0)
                 break;
         } else {
-            memcpy(f->wptr, src, len);
+            memcpy(wptr, src, len);
             src = (uint8_t*)src + len;
         }
 // Write memory barrier needed for SMP here in theory
-        f->wptr += len;
-        if (f->wptr >= f->end)
-            f->wptr = f->buffer;
-        f->wndx += len;
+        wptr += len;
+        if (wptr >= f->end)
+            wptr = f->buffer;
+        wndx += len;
         size -= len;
     } while (size > 0);
+    f->wndx= wndx;
+    f->wptr= wptr;
     return total - size;
 }