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
30
typedef
struct
AVFifoBuffer
{
31
uint8_t *
buffer
;
32
uint8_t *
rptr
, *
wptr
, *
end
;
33
uint32_t
rndx
,
wndx
;
34
}
AVFifoBuffer
;
35
41
AVFifoBuffer
*
av_fifo_alloc
(
unsigned
int
size
);
42
47
void
av_fifo_free
(
AVFifoBuffer
*
f
);
48
53
void
av_fifo_reset
(
AVFifoBuffer
*
f
);
54
61
int
av_fifo_size
(
AVFifoBuffer
*
f
);
62
69
int
av_fifo_space
(
AVFifoBuffer
*
f
);
70
78
int
av_fifo_generic_read
(
AVFifoBuffer
*
f
,
void
*dest,
int
buf_size,
void
(*func)(
void
*,
void
*,
int
));
79
93
int
av_fifo_generic_write
(
AVFifoBuffer
*f,
void
*src,
int
size
,
int
(*func)(
void
*,
void
*,
int
));
94
101
int
av_fifo_realloc2
(
AVFifoBuffer
*f,
unsigned
int
size);
102
108
void
av_fifo_drain
(
AVFifoBuffer
*f,
int
size);
109
120
static
inline
uint8_t *
av_fifo_peek2
(
const
AVFifoBuffer
*f,
int
offs)
121
{
122
uint8_t *ptr = f->
rptr
+ offs;
123
if
(ptr >= f->
end
)
124
ptr = f->
buffer
+ (ptr - f->
end
);
125
else
if
(ptr < f->
buffer
)
126
ptr = f->
end
- (f->
buffer
- ptr);
127
return
ptr;
128
}
129
130
#if FF_API_AV_FIFO_PEEK
131
134
attribute_deprecated
135
static
inline
uint8_t
av_fifo_peek
(
AVFifoBuffer
*f,
int
offs)
136
{
137
return
*
av_fifo_peek2
(f, offs);
138
}
139
#endif
140
141
#endif
/* AVUTIL_FIFO_H */