diff --git a/libavutil/fifo.c b/libavutil/fifo.c index 4bc8be07ff13f5c951e509191f215e6bc2c1abdd..8436b3b6a44726eaf8f357d62e1f12ac7371cd55 100644 --- a/libavutil/fifo.c +++ b/libavutil/fifo.c @@ -91,6 +91,7 @@ int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void memcpy(f->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; @@ -103,6 +104,7 @@ int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void int av_fifo_generic_read(AVFifoBuffer *f, int buf_size, void (*func)(void*, void*, int), void* dest) { +// Read memory barrier needed for SMP here in theory do { int len = FFMIN(f->end - f->rptr, buf_size); if(func) func(dest, f->rptr, len); @@ -110,6 +112,7 @@ int av_fifo_generic_read(AVFifoBuffer *f, int buf_size, void (*func)(void*, void memcpy(dest, f->rptr, len); dest = (uint8_t*)dest + len; } +// memory barrier needed for SMP here in theory av_fifo_drain(f, len); buf_size -= len; } while (buf_size > 0);