FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavutil
avutil.h
Go to the documentation of this file.
1
/*
2
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
3
*
4
* This file is part of FFmpeg.
5
*
6
* FFmpeg is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
10
*
11
* FFmpeg is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with FFmpeg; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
#ifndef AVUTIL_AVUTIL_H
22
#define AVUTIL_AVUTIL_H
23
24
/**
25
* @file
26
* external API header
27
*/
28
29
/**
30
* @mainpage
31
*
32
* @section ffmpeg_intro Introduction
33
*
34
* This document describes the usage of the different libraries
35
* provided by FFmpeg.
36
*
37
* @li @ref libavc "libavcodec" encoding/decoding library
38
* @li @ref lavfi "libavfilter" graph-based frame editing library
39
* @li @ref libavf "libavformat" I/O and muxing/demuxing library
40
* @li @ref lavd "libavdevice" special devices muxing/demuxing library
41
* @li @ref lavu "libavutil" common utility library
42
* @li @ref lswr "libswresample" audio resampling, format conversion and mixing
43
* @li @ref lpp "libpostproc" post processing library
44
* @li @ref libsws "libswscale" color conversion and scaling library
45
*
46
* @section ffmpeg_versioning Versioning and compatibility
47
*
48
* Each of the FFmpeg libraries contains a version.h header, which defines a
49
* major, minor and micro version number with the
50
* <em>LIBRARYNAME_VERSION_{MAJOR,MINOR,MICRO}</em> macros. The major version
51
* number is incremented with backward incompatible changes - e.g. removing
52
* parts of the public API, reordering public struct members, etc. The minor
53
* version number is incremented for backward compatible API changes or major
54
* new features - e.g. adding a new public function or a new decoder. The micro
55
* version number is incremented for smaller changes that a calling program
56
* might still want to check for - e.g. changing behavior in a previously
57
* unspecified situation.
58
*
59
* FFmpeg guarantees backward API and ABI compatibility for each library as long
60
* as its major version number is unchanged. This means that no public symbols
61
* will be removed or renamed. Types and names of the public struct members and
62
* values of public macros and enums will remain the same (unless they were
63
* explicitly declared as not part of the public API). Documented behavior will
64
* not change.
65
*
66
* In other words, any correct program that works with a given FFmpeg snapshot
67
* should work just as well without any changes with any later snapshot with the
68
* same major versions. This applies to both rebuilding the program against new
69
* FFmpeg versions or to replacing the dynamic FFmpeg libraries that a program
70
* links against.
71
*
72
* However, new public symbols may be added and new members may be appended to
73
* public structs whose size is not part of public ABI (most public structs in
74
* FFmpeg). New macros and enum values may be added. Behavior in undocumented
75
* situations may change slightly (and be documented). All those are accompanied
76
* by an entry in doc/APIchanges and incrementing either the minor or micro
77
* version number.
78
*/
79
80
/**
81
* @defgroup lavu Common utility functions
82
*
83
* @brief
84
* libavutil contains the code shared across all the other FFmpeg
85
* libraries
86
*
87
* @note In order to use the functions provided by avutil you must include
88
* the specific header.
89
*
90
* @{
91
*
92
* @defgroup lavu_crypto Crypto and Hashing
93
*
94
* @{
95
* @}
96
*
97
* @defgroup lavu_math Maths
98
* @{
99
*
100
* @}
101
*
102
* @defgroup lavu_string String Manipulation
103
*
104
* @{
105
*
106
* @}
107
*
108
* @defgroup lavu_mem Memory Management
109
*
110
* @{
111
*
112
* @}
113
*
114
* @defgroup lavu_data Data Structures
115
* @{
116
*
117
* @}
118
*
119
* @defgroup lavu_audio Audio related
120
*
121
* @{
122
*
123
* @}
124
*
125
* @defgroup lavu_error Error Codes
126
*
127
* @{
128
*
129
* @}
130
*
131
* @defgroup lavu_log Logging Facility
132
*
133
* @{
134
*
135
* @}
136
*
137
* @defgroup lavu_misc Other
138
*
139
* @{
140
*
141
* @defgroup lavu_internal Internal
142
*
143
* Not exported functions, for internal usage only
144
*
145
* @{
146
*
147
* @}
148
*
149
* @defgroup preproc_misc Preprocessor String Macros
150
*
151
* @{
152
*
153
* @}
154
*
155
* @defgroup version_utils Library Version Macros
156
*
157
* @{
158
*
159
* @}
160
*/
161
162
163
/**
164
* @addtogroup lavu_ver
165
* @{
166
*/
167
168
/**
169
* Return the LIBAVUTIL_VERSION_INT constant.
170
*/
171
unsigned
avutil_version
(
void
);
172
173
/**
174
* Return the libavutil build-time configuration.
175
*/
176
const
char
*
avutil_configuration
(
void
);
177
178
/**
179
* Return the libavutil license.
180
*/
181
const
char
*
avutil_license
(
void
);
182
183
/**
184
* @}
185
*/
186
187
/**
188
* @addtogroup lavu_media Media Type
189
* @brief Media Type
190
*/
191
192
enum
AVMediaType
{
193
AVMEDIA_TYPE_UNKNOWN
= -1,
///< Usually treated as AVMEDIA_TYPE_DATA
194
AVMEDIA_TYPE_VIDEO
,
195
AVMEDIA_TYPE_AUDIO
,
196
AVMEDIA_TYPE_DATA
,
///< Opaque data information usually continuous
197
AVMEDIA_TYPE_SUBTITLE
,
198
AVMEDIA_TYPE_ATTACHMENT
,
///< Opaque data information usually sparse
199
AVMEDIA_TYPE_NB
200
};
201
202
/**
203
* Return a string describing the media_type enum, NULL if media_type
204
* is unknown.
205
*/
206
const
char
*
av_get_media_type_string
(
enum
AVMediaType
media_type);
207
208
/**
209
* @defgroup lavu_const Constants
210
* @{
211
*
212
* @defgroup lavu_enc Encoding specific
213
*
214
* @note those definition should move to avcodec
215
* @{
216
*/
217
218
#define FF_LAMBDA_SHIFT 7
219
#define FF_LAMBDA_SCALE (1<<FF_LAMBDA_SHIFT)
220
#define FF_QP2LAMBDA 118
///< factor to convert from H.263 QP to lambda
221
#define FF_LAMBDA_MAX (256*128-1)
222
223
#define FF_QUALITY_SCALE FF_LAMBDA_SCALE //FIXME maybe remove
224
225
/**
226
* @}
227
* @defgroup lavu_time Timestamp specific
228
*
229
* FFmpeg internal timebase and timestamp definitions
230
*
231
* @{
232
*/
233
234
/**
235
* @brief Undefined timestamp value
236
*
237
* Usually reported by demuxer that work on containers that do not provide
238
* either pts or dts.
239
*/
240
241
#define AV_NOPTS_VALUE ((int64_t)UINT64_C(0x8000000000000000))
242
243
/**
244
* Internal time base represented as integer
245
*/
246
247
#define AV_TIME_BASE 1000000
248
249
/**
250
* Internal time base represented as fractional value
251
*/
252
253
#define AV_TIME_BASE_Q (AVRational){1, AV_TIME_BASE}
254
255
/**
256
* @}
257
* @}
258
* @defgroup lavu_picture Image related
259
*
260
* AVPicture types, pixel formats and basic image planes manipulation.
261
*
262
* @{
263
*/
264
265
enum
AVPictureType
{
266
AV_PICTURE_TYPE_NONE
= 0,
///< Undefined
267
AV_PICTURE_TYPE_I
,
///< Intra
268
AV_PICTURE_TYPE_P
,
///< Predicted
269
AV_PICTURE_TYPE_B
,
///< Bi-dir predicted
270
AV_PICTURE_TYPE_S
,
///< S(GMC)-VOP MPEG4
271
AV_PICTURE_TYPE_SI
,
///< Switching Intra
272
AV_PICTURE_TYPE_SP
,
///< Switching Predicted
273
AV_PICTURE_TYPE_BI
,
///< BI type
274
};
275
276
/**
277
* Return a single letter to describe the given picture type
278
* pict_type.
279
*
280
* @param[in] pict_type the picture type @return a single character
281
* representing the picture type, '?' if pict_type is unknown
282
*/
283
char
av_get_picture_type_char
(
enum
AVPictureType
pict_type);
284
285
/**
286
* @}
287
*/
288
289
#include "
common.h
"
290
#include "
error.h
"
291
#include "
rational.h
"
292
#include "
version.h
"
293
#include "
macros.h
"
294
#include "
mathematics.h
"
295
#include "
log.h
"
296
#include "
pixfmt.h
"
297
298
/**
299
* Return x default pointer in case p is NULL.
300
*/
301
static
inline
void
*
av_x_if_null
(
const
void
*p,
const
void
*x)
302
{
303
return
(
void
*)(intptr_t)(p ? p : x);
304
}
305
306
/**
307
* Compute the length of an integer list.
308
*
309
* @param elsize size in bytes of each list element (only 1, 2, 4 or 8)
310
* @param term list terminator (usually 0 or -1)
311
* @param list pointer to the list
312
* @return length of the list, in elements, not counting the terminator
313
*/
314
unsigned
av_int_list_length_for_size
(
unsigned
elsize,
315
const
void
*list, uint64_t term)
av_pure
;
316
317
/**
318
* Compute the length of an integer list.
319
*
320
* @param term list terminator (usually 0 or -1)
321
* @param list pointer to the list
322
* @return length of the list, in elements, not counting the terminator
323
*/
324
#define av_int_list_length(list, term) \
325
av_int_list_length_for_size(sizeof(*(list)), list, term)
326
327
/**
328
* Open a file using a UTF-8 filename.
329
* The API of this function matches POSIX fopen(), errors are returned through
330
* errno.
331
*/
332
FILE *
av_fopen_utf8
(
const
char
*path,
const
char
*
mode
);
333
334
/**
335
* Return the fractional representation of the internal time base.
336
*/
337
AVRational
av_get_time_base_q
(
void
);
338
339
/**
340
* @}
341
* @}
342
*/
343
344
#endif
/* AVUTIL_AVUTIL_H */
Generated on Fri Dec 5 2014 04:42:15 for FFmpeg by
1.8.2