Libav
fifo.c
Go to the documentation of this file.
1 /*
2  * This file is part of Libav.
3  *
4  * Libav is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * Libav is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with Libav; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18 
19 #include <stdio.h>
20 
21 #include "libavutil/fifo.h"
22 
23 int main(void)
24 {
25  /* create a FIFO buffer */
26  AVFifoBuffer *fifo = av_fifo_alloc(13 * sizeof(int));
27  int i, j, n;
28 
29  /* fill data */
30  for (i = 0; av_fifo_space(fifo) >= sizeof(int); i++)
31  av_fifo_generic_write(fifo, &i, sizeof(int), NULL);
32 
33  /* peek at FIFO */
34  n = av_fifo_size(fifo) / sizeof(int);
35  for (i = -n + 1; i < n; i++) {
36  int *v = (int *)av_fifo_peek2(fifo, i * sizeof(int));
37  printf("%d: %d\n", i, *v);
38  }
39  printf("\n");
40 
41  /* read data */
42  for (i = 0; av_fifo_size(fifo) >= sizeof(int); i++) {
43  av_fifo_generic_read(fifo, &j, sizeof(int), NULL);
44  printf("%d ", j);
45  }
46  printf("\n");
47 
48  av_fifo_free(fifo);
49 
50  return 0;
51 }
int main(void)
Definition: fifo.c:23
int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int(*func)(void *, void *, int))
Feed data from a user-supplied callback to an AVFifoBuffer.
Definition: fifo.c:84
void av_fifo_free(AVFifoBuffer *f)
Free an AVFifoBuffer.
Definition: fifo.c:38
static uint8_t * av_fifo_peek2(const AVFifoBuffer *f, int offs)
Return a pointer to the data stored in a FIFO buffer at a certain offset.
Definition: fifo.h:121
int av_fifo_generic_read(AVFifoBuffer *f, void *dest, int buf_size, void(*func)(void *, void *, int))
Feed data from an AVFifoBuffer to a user-supplied callback.
Definition: fifo.c:107
NULL
Definition: eval.c:55
int av_fifo_space(AVFifoBuffer *f)
Return the amount of space in bytes in the AVFifoBuffer, that is the amount of data you can write int...
Definition: fifo.c:57
a very simple circular buffer FIFO implementation
int av_fifo_size(AVFifoBuffer *f)
Return the amount of data in bytes in the AVFifoBuffer, that is the amount of data you can read from ...
Definition: fifo.c:52
AVFifoBuffer * av_fifo_alloc(unsigned int size)
Initialize an AVFifoBuffer.
Definition: fifo.c:25