Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
libavutil
fifo.h
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
24
#ifndef AVUTIL_FIFO_H
25
#define AVUTIL_FIFO_H
26
27
#include <stdint.h>
28
#include "
avutil.h
"
29
#include "
attributes.h
"
30
31
typedef
struct
AVFifoBuffer
{
32
uint8_t
*
buffer
;
33
uint8_t
*
rptr
, *
wptr
, *
end
;
34
uint32_t
rndx
,
wndx
;
35
}
AVFifoBuffer
;
36
42
AVFifoBuffer
*
av_fifo_alloc
(
unsigned
int
size
);
43
48
void
av_fifo_free
(
AVFifoBuffer
*f);
49
54
void
av_fifo_reset
(
AVFifoBuffer
*f);
55
62
int
av_fifo_size
(
AVFifoBuffer
*f);
63
70
int
av_fifo_space
(
AVFifoBuffer
*f);
71
79
int
av_fifo_generic_read
(
AVFifoBuffer
*f,
void
*dest,
int
buf_size,
void
(*func)(
void
*,
void
*,
int
));
80
94
int
av_fifo_generic_write
(
AVFifoBuffer
*f,
void
*src,
int
size
,
int
(*func)(
void
*,
void
*,
int
));
95
102
int
av_fifo_realloc2
(
AVFifoBuffer
*f,
unsigned
int
size);
103
109
void
av_fifo_drain
(
AVFifoBuffer
*f,
int
size);
110
121
static
inline
uint8_t
*
av_fifo_peek2
(
const
AVFifoBuffer
*f,
int
offs)
122
{
123
uint8_t
*ptr = f->
rptr
+ offs;
124
if
(ptr >= f->
end
)
125
ptr = f->
buffer
+ (ptr - f->
end
);
126
else
if
(ptr < f->
buffer
)
127
ptr = f->
end
- (f->
buffer
- ptr);
128
return
ptr;
129
}
130
131
#endif
/* AVUTIL_FIFO_H */