123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- #ifndef AVUTIL_FIFO_H
- #define AVUTIL_FIFO_H
- #include <stdint.h>
- #include "avutil.h"
- #include "attributes.h"
- typedef struct AVFifoBuffer {
- uint8_t *buffer;
- uint8_t *rptr, *wptr, *end;
- uint32_t rndx, wndx;
- } AVFifoBuffer;
- AVFifoBuffer *av_fifo_alloc(unsigned int size);
- AVFifoBuffer *av_fifo_alloc_array(size_t nmemb, size_t size);
- void av_fifo_free(AVFifoBuffer *f);
- void av_fifo_freep(AVFifoBuffer **f);
- void av_fifo_reset(AVFifoBuffer *f);
- int av_fifo_size(const AVFifoBuffer *f);
- int av_fifo_space(const AVFifoBuffer *f);
- int av_fifo_generic_peek_at(AVFifoBuffer *f, void *dest, int offset, int buf_size, void (*func)(void*, void*, int));
- int av_fifo_generic_peek(AVFifoBuffer *f, void *dest, int buf_size, void (*func)(void*, void*, int));
- int av_fifo_generic_read(AVFifoBuffer *f, void *dest, int buf_size, void (*func)(void*, void*, int));
- int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void*, void*, int));
- int av_fifo_realloc2(AVFifoBuffer *f, unsigned int size);
- int av_fifo_grow(AVFifoBuffer *f, unsigned int additional_space);
- void av_fifo_drain(AVFifoBuffer *f, int size);
- static inline uint8_t *av_fifo_peek2(const AVFifoBuffer *f, int offs)
- {
- uint8_t *ptr = f->rptr + offs;
- if (ptr >= f->end)
- ptr = f->buffer + (ptr - f->end);
- else if (ptr < f->buffer)
- ptr = f->end - (f->buffer - ptr);
- return ptr;
- }
- #endif
|