/src/vlc/contrib/contrib-build/bpg/libavutil/avutil.h
Line | Count | Source |
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 | 0 | #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 | 0 | { |
303 | 0 | return (void *)(intptr_t)(p ? p : x); |
304 | 0 | } Unexecuted instantiation: hevc_cabac.c:av_x_if_null Unexecuted instantiation: hevc_filter.c:av_x_if_null Unexecuted instantiation: hevc.c:av_x_if_null Unexecuted instantiation: hevcpred.c:av_x_if_null Unexecuted instantiation: hevc_refs.c:av_x_if_null Unexecuted instantiation: hevcdsp.c:av_x_if_null Unexecuted instantiation: hevc_mvs.c:av_x_if_null Unexecuted instantiation: hevc_ps.c:av_x_if_null Unexecuted instantiation: hevc_sei.c:av_x_if_null Unexecuted instantiation: utils.c:av_x_if_null Unexecuted instantiation: cabac.c:av_x_if_null Unexecuted instantiation: golomb.c:av_x_if_null Unexecuted instantiation: videodsp.c:av_x_if_null Unexecuted instantiation: mem.c:av_x_if_null Unexecuted instantiation: buffer.c:av_x_if_null Unexecuted instantiation: frame.c:av_x_if_null Unexecuted instantiation: pixdesc.c:av_x_if_null Unexecuted instantiation: md5.c:av_x_if_null Unexecuted instantiation: libbpg.c:av_x_if_null |
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 */ |