Commit | Line | Data |
---|---|---|
558b86a5 LB |
1 | /* |
2 | * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> | |
3 | * | |
2912e87a | 4 | * This file is part of Libav. |
558b86a5 | 5 | * |
2912e87a | 6 | * Libav is free software; you can redistribute it and/or |
558b86a5 LB |
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 | * | |
2912e87a | 11 | * Libav is distributed in the hope that it will be useful, |
558b86a5 LB |
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 | |
2912e87a | 17 | * License along with Libav; if not, write to the Free Software |
558b86a5 LB |
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
19 | */ | |
20 | ||
98790382 SS |
21 | #ifndef AVUTIL_AVUTIL_H |
22 | #define AVUTIL_AVUTIL_H | |
558b86a5 LB |
23 | |
24 | /** | |
ba87f080 | 25 | * @file |
7ce68923 | 26 | * external API header |
558b86a5 LB |
27 | */ |
28 | ||
757cd8d8 LB |
29 | /** |
30 | * @mainpage | |
31 | * | |
32 | * @section libav_intro Introduction | |
33 | * | |
34 | * This document describe the usage of the different libraries | |
35 | * provided by Libav. | |
36 | * | |
e97e5a2e | 37 | * @li @ref libavc "libavcodec" encoding/decoding library |
757cd8d8 | 38 | * @li @subpage libavfilter graph based frame editing library |
e361b508 | 39 | * @li @ref libavf "libavformat" I/O and muxing/demuxing library |
757cd8d8 LB |
40 | * @li @ref lavu "libavutil" common utility library |
41 | * @li @subpage libpostproc post processing library | |
42 | * @li @subpage libswscale color conversion and scaling library | |
43 | * | |
44 | */ | |
45 | ||
46 | /** | |
47 | * @defgroup lavu Common utility functions | |
48 | * | |
49 | * @brief | |
50 | * libavutil contains the code shared across all the other Libav | |
51 | * libraries | |
52 | * | |
53 | * @note In order to use the functions provided by avutil you must include | |
54 | * the specific header. | |
55 | * | |
56 | * @{ | |
57 | * | |
58 | * @defgroup lavu_crypto Crypto and Hashing | |
59 | * | |
60 | * @{ | |
61 | * @} | |
62 | * | |
63 | * @defgroup lavu_math Maths | |
64 | * @{ | |
65 | * | |
66 | * @} | |
67 | * | |
68 | * @defgroup lavu_string String Manipulation | |
69 | * | |
70 | * @{ | |
71 | * | |
72 | * @} | |
73 | * | |
74 | * @defgroup lavu_mem Memory Management | |
75 | * | |
76 | * @{ | |
77 | * | |
78 | * @} | |
79 | * | |
80 | * @defgroup lavu_data Data Structures | |
81 | * @{ | |
82 | * | |
83 | * @} | |
84 | * | |
85 | * @defgroup lavu_audio Audio related | |
86 | * | |
87 | * @{ | |
88 | * | |
89 | * @} | |
90 | * | |
91 | * @defgroup lavu_error Error Codes | |
92 | * | |
93 | * @{ | |
94 | * | |
95 | * @} | |
96 | * | |
97 | * @defgroup lavu_misc Other | |
98 | * | |
99 | * @{ | |
100 | * | |
101 | * @defgroup lavu_internal Internal | |
102 | * | |
103 | * Not exported functions, for internal usage only | |
104 | * | |
105 | * @{ | |
106 | * | |
107 | * @} | |
108 | */ | |
109 | ||
110 | ||
111 | /** | |
112 | * @defgroup preproc_misc Preprocessor String Macros | |
113 | * | |
114 | * String manipulation macros | |
115 | * | |
116 | * @{ | |
117 | */ | |
558b86a5 | 118 | |
558b86a5 LB |
119 | #define AV_STRINGIFY(s) AV_TOSTRING(s) |
120 | #define AV_TOSTRING(s) #s | |
87fec35d MR |
121 | |
122 | #define AV_GLUE(a, b) a ## b | |
123 | #define AV_JOIN(a, b) AV_GLUE(a, b) | |
124 | ||
d408b77a | 125 | #define AV_PRAGMA(s) _Pragma(#s) |
558b86a5 | 126 | |
757cd8d8 LB |
127 | /** |
128 | * @} | |
129 | */ | |
130 | ||
131 | /** | |
132 | * @defgroup version_utils Library Version Macros | |
133 | * | |
134 | * Useful to check and match library version in order to maintain | |
135 | * backward compatibility. | |
136 | * | |
137 | * @{ | |
138 | */ | |
139 | ||
800c289a MR |
140 | #define AV_VERSION_INT(a, b, c) (a<<16 | b<<8 | c) |
141 | #define AV_VERSION_DOT(a, b, c) a ##.## b ##.## c | |
142 | #define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c) | |
e97ac1e6 | 143 | |
757cd8d8 LB |
144 | /** |
145 | * @} | |
146 | * | |
147 | * @defgroup lavu_ver Version and Build diagnostics | |
148 | * | |
149 | * Macros and function useful to check at compiletime and at runtime | |
150 | * which version of libavutil is in use. | |
151 | * | |
152 | * @{ | |
153 | */ | |
154 | ||
139f3ac4 | 155 | #define LIBAVUTIL_VERSION_MAJOR 51 |
bbb46f3e | 156 | #define LIBAVUTIL_VERSION_MINOR 18 |
96a59cf3 | 157 | #define LIBAVUTIL_VERSION_MICRO 0 |
e97ac1e6 | 158 | |
800c289a MR |
159 | #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ |
160 | LIBAVUTIL_VERSION_MINOR, \ | |
161 | LIBAVUTIL_VERSION_MICRO) | |
162 | #define LIBAVUTIL_VERSION AV_VERSION(LIBAVUTIL_VERSION_MAJOR, \ | |
163 | LIBAVUTIL_VERSION_MINOR, \ | |
164 | LIBAVUTIL_VERSION_MICRO) | |
558b86a5 LB |
165 | #define LIBAVUTIL_BUILD LIBAVUTIL_VERSION_INT |
166 | ||
167 | #define LIBAVUTIL_IDENT "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION) | |
168 | ||
7f0026dd | 169 | /** |
757cd8d8 LB |
170 | * @} |
171 | * | |
172 | * @defgroup depr_guards Deprecation guards | |
d2af7205 SS |
173 | * Those FF_API_* defines are not part of public API. |
174 | * They may change, break or disappear at any time. | |
757cd8d8 LB |
175 | * |
176 | * They are used mostly internally to mark code that will be removed | |
177 | * on the next major version. | |
178 | * | |
179 | * @{ | |
d2af7205 | 180 | */ |
a6703faa SS |
181 | #ifndef FF_API_GET_BITS_PER_SAMPLE_FMT |
182 | #define FF_API_GET_BITS_PER_SAMPLE_FMT (LIBAVUTIL_VERSION_MAJOR < 52) | |
183 | #endif | |
dc59ec5e AK |
184 | #ifndef FF_API_FIND_OPT |
185 | #define FF_API_FIND_OPT (LIBAVUTIL_VERSION_MAJOR < 52) | |
186 | #endif | |
f2011ed2 SS |
187 | #ifndef FF_API_AV_FIFO_PEEK |
188 | #define FF_API_AV_FIFO_PEEK (LIBAVUTIL_VERSION_MAJOR < 52) | |
189 | #endif | |
79eff913 AK |
190 | #ifndef FF_API_OLD_AVOPTIONS |
191 | #define FF_API_OLD_AVOPTIONS (LIBAVUTIL_VERSION_MAJOR < 52) | |
192 | #endif | |
d2af7205 SS |
193 | |
194 | /** | |
757cd8d8 LB |
195 | * @} |
196 | */ | |
197 | ||
198 | /** | |
199 | * @addtogroup lavu_ver | |
200 | * @{ | |
201 | */ | |
202 | ||
203 | /** | |
49bd8e4b | 204 | * Return the LIBAVUTIL_VERSION_INT constant. |
7f0026dd SS |
205 | */ |
206 | unsigned avutil_version(void); | |
558b86a5 | 207 | |
c1736936 | 208 | /** |
49bd8e4b | 209 | * Return the libavutil build-time configuration. |
c1736936 | 210 | */ |
41600690 | 211 | const char *avutil_configuration(void); |
c1736936 DB |
212 | |
213 | /** | |
49bd8e4b | 214 | * Return the libavutil license. |
c1736936 | 215 | */ |
41600690 | 216 | const char *avutil_license(void); |
c1736936 | 217 | |
757cd8d8 LB |
218 | /** |
219 | * @} | |
220 | */ | |
221 | ||
222 | /** | |
223 | * @addtogroup lavu_media Media Type | |
224 | * @brief Media Type | |
225 | */ | |
226 | ||
11491503 | 227 | enum AVMediaType { |
757cd8d8 | 228 | AVMEDIA_TYPE_UNKNOWN = -1, ///< Usually treated as AVMEDIA_TYPE_DATA |
11491503 SS |
229 | AVMEDIA_TYPE_VIDEO, |
230 | AVMEDIA_TYPE_AUDIO, | |
757cd8d8 | 231 | AVMEDIA_TYPE_DATA, ///< Opaque data information usually continuous |
11491503 | 232 | AVMEDIA_TYPE_SUBTITLE, |
757cd8d8 | 233 | AVMEDIA_TYPE_ATTACHMENT, ///< Opaque data information usually sparse |
11491503 SS |
234 | AVMEDIA_TYPE_NB |
235 | }; | |
236 | ||
757cd8d8 LB |
237 | /** |
238 | * @defgroup lavu_const Constants | |
239 | * @{ | |
240 | * | |
241 | * @defgroup lavu_enc Encoding specific | |
242 | * | |
243 | * @note those definition should move to avcodec | |
244 | * @{ | |
245 | */ | |
246 | ||
6ed04040 MN |
247 | #define FF_LAMBDA_SHIFT 7 |
248 | #define FF_LAMBDA_SCALE (1<<FF_LAMBDA_SHIFT) | |
249 | #define FF_QP2LAMBDA 118 ///< factor to convert from H.263 QP to lambda | |
250 | #define FF_LAMBDA_MAX (256*128-1) | |
251 | ||
252 | #define FF_QUALITY_SCALE FF_LAMBDA_SCALE //FIXME maybe remove | |
253 | ||
757cd8d8 LB |
254 | /** |
255 | * @} | |
256 | * @defgroup lavu_time Timestamp specific | |
257 | * | |
258 | * Libav internal timebase and timestamp definitions | |
259 | * | |
260 | * @{ | |
261 | */ | |
262 | ||
263 | /** | |
264 | * @brief Undefined timestamp value | |
265 | * | |
266 | * Usually reported by demuxer that work on containers that do not provide | |
267 | * either pts or dts. | |
268 | */ | |
269 | ||
737eb597 | 270 | #define AV_NOPTS_VALUE INT64_C(0x8000000000000000) |
757cd8d8 LB |
271 | |
272 | /** | |
273 | * Internal time base represented as integer | |
274 | */ | |
275 | ||
737eb597 | 276 | #define AV_TIME_BASE 1000000 |
757cd8d8 LB |
277 | |
278 | /** | |
279 | * Internal time base represented as fractional value | |
280 | */ | |
281 | ||
737eb597 RT |
282 | #define AV_TIME_BASE_Q (AVRational){1, AV_TIME_BASE} |
283 | ||
757cd8d8 LB |
284 | /** |
285 | * @} | |
286 | * @} | |
287 | * @defgroup lavu_picture Image related | |
288 | * | |
289 | * AVPicture types, pixel formats and basic image planes manipulation. | |
290 | * | |
291 | * @{ | |
292 | */ | |
293 | ||
bebe72f4 SS |
294 | enum AVPictureType { |
295 | AV_PICTURE_TYPE_I = 1, ///< Intra | |
296 | AV_PICTURE_TYPE_P, ///< Predicted | |
297 | AV_PICTURE_TYPE_B, ///< Bi-dir predicted | |
298 | AV_PICTURE_TYPE_S, ///< S(GMC)-VOP MPEG4 | |
299 | AV_PICTURE_TYPE_SI, ///< Switching Intra | |
300 | AV_PICTURE_TYPE_SP, ///< Switching Predicted | |
301 | AV_PICTURE_TYPE_BI, ///< BI type | |
302 | }; | |
303 | ||
304 | /** | |
305 | * Return a single letter to describe the given picture type | |
306 | * pict_type. | |
307 | * | |
308 | * @param[in] pict_type the picture type @return a single character | |
309 | * representing the picture type, '?' if pict_type is unknown | |
310 | */ | |
311 | char av_get_picture_type_char(enum AVPictureType pict_type); | |
312 | ||
757cd8d8 LB |
313 | /** |
314 | * @} | |
315 | */ | |
316 | ||
558b86a5 | 317 | #include "common.h" |
60c144f7 | 318 | #include "error.h" |
558b86a5 | 319 | |
757cd8d8 LB |
320 | /** |
321 | * @} | |
322 | * @} | |
323 | */ | |
324 | ||
98790382 | 325 | #endif /* AVUTIL_AVUTIL_H */ |