X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavutil%2Ffifo.h;h=999d0bf89b9660b5b0a2817dca5809e48b092815;hb=a5444fee06e9d14637396b4237d0204187a076e0;hp=3dd27bd1fffbf5597e591d026052eedf4974c044;hpb=95c76e11805abf8e14ffbec64b9c23d32ea563ef;p=ffmpeg diff --git a/libavutil/fifo.h b/libavutil/fifo.h index 3dd27bd1fff..999d0bf89b9 100644 --- a/libavutil/fifo.h +++ b/libavutil/fifo.h @@ -17,36 +17,42 @@ */ /** - * @file fifo.h - * A very simple circular buffer FIFO implementation. + * @file + * a very simple circular buffer FIFO implementation */ -#ifndef FFMPEG_FIFO_H -#define FFMPEG_FIFO_H +#ifndef AVUTIL_FIFO_H +#define AVUTIL_FIFO_H #include typedef struct AVFifoBuffer { uint8_t *buffer; uint8_t *rptr, *wptr, *end; + uint32_t rndx, wndx; } AVFifoBuffer; /** - * Initializes an AVFifoBuffer. - * @param *f AVFifoBuffer to initialize + * Initialize an AVFifoBuffer. * @param size of FIFO - * @return <0 for failure >=0 otherwise + * @return AVFifoBuffer or NULL in case of memory allocation failure */ -int av_fifo_init(AVFifoBuffer *f, int size); +AVFifoBuffer *av_fifo_alloc(unsigned int size); /** - * Frees an AVFifoBuffer. + * Free an AVFifoBuffer. * @param *f AVFifoBuffer to free */ void av_fifo_free(AVFifoBuffer *f); /** - * Returns the amount of data in bytes in the AVFifoBuffer, that is the + * Reset the AVFifoBuffer to the state right after av_fifo_alloc, in particular it is emptied. + * @param *f AVFifoBuffer to reset + */ +void av_fifo_reset(AVFifoBuffer *f); + +/** + * Return the amount of data in bytes in the AVFifoBuffer, that is the * amount of data you can read from it. * @param *f AVFifoBuffer to read from * @return size @@ -54,53 +60,47 @@ void av_fifo_free(AVFifoBuffer *f); int av_fifo_size(AVFifoBuffer *f); /** - * Reads data from an AVFifoBuffer. - * @param *f AVFifoBuffer to read from - * @param *buf data destination - * @param buf_size number of bytes to read + * Return the amount of space in bytes in the AVFifoBuffer, that is the + * amount of data you can write into it. + * @param *f AVFifoBuffer to write into + * @return size */ -int av_fifo_read(AVFifoBuffer *f, uint8_t *buf, int buf_size); +int av_fifo_space(AVFifoBuffer *f); /** - * Feeds data from an AVFifoBuffer to a user supplied callback. + * Feed data from an AVFifoBuffer to a user-supplied callback. * @param *f AVFifoBuffer to read from * @param buf_size number of bytes to read * @param *func generic read function * @param *dest data destination */ -int av_fifo_generic_read(AVFifoBuffer *f, int buf_size, void (*func)(void*, void*, int), void* dest); - -/** - * Writes data into an AVFifoBuffer. - * @param *f AVFifoBuffer to write to - * @param *buf data source - * @param size data size - */ -attribute_deprecated void av_fifo_write(AVFifoBuffer *f, const uint8_t *buf, int size); +int av_fifo_generic_read(AVFifoBuffer *f, void *dest, int buf_size, void (*func)(void*, void*, int)); /** - * Feeds data from a user supplied callback to an AVFifoBuffer. + * Feed data from a user-supplied callback to an AVFifoBuffer. * @param *f AVFifoBuffer to write to - * @param *src data source + * @param *src data source; non-const since it may be used as a + * modifiable context by the function defined in func * @param size number of bytes to write - * @param *func generic write function. First parameter is src, - * second is dest_buf, third is dest_buf_size. + * @param *func generic write function; the first parameter is src, + * the second is dest_buf, the third is dest_buf_size. * func must return the number of bytes written to dest_buf, or <= 0 to * indicate no more data available to write. * If func is NULL, src is interpreted as a simple byte array for source data. - * @return the number of bytes written to the fifo. + * @return the number of bytes written to the FIFO */ int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void*, void*, int)); /** - * Resizes an AVFifoBuffer. + * Resize an AVFifoBuffer. * @param *f AVFifoBuffer to resize * @param size new AVFifoBuffer size in bytes + * @return <0 for failure, >=0 otherwise */ -void av_fifo_realloc(AVFifoBuffer *f, unsigned int size); +int av_fifo_realloc2(AVFifoBuffer *f, unsigned int size); /** - * Reads and discards the specified amount of data from an AVFifoBuffer. + * Read and discard the specified amount of data from an AVFifoBuffer. * @param *f AVFifoBuffer to read from * @param size amount of data to read in bytes */ @@ -113,4 +113,4 @@ static inline uint8_t av_fifo_peek(AVFifoBuffer *f, int offs) ptr -= f->end - f->buffer; return *ptr; } -#endif /* FFMPEG_FIFO_H */ +#endif /* AVUTIL_FIFO_H */