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 lsws "libswscale" color conversion and scaling library
45  */
46 
47 /**
48  * @defgroup lavu Common utility functions
49  *
50  * @brief
51  * libavutil contains the code shared across all the other FFmpeg
52  * libraries
53  *
54  * @note In order to use the functions provided by avutil you must include
55  * the specific header.
56  *
57  * @{
58  *
59  * @defgroup lavu_crypto Crypto and Hashing
60  *
61  * @{
62  * @}
63  *
64  * @defgroup lavu_math Maths
65  * @{
66  *
67  * @}
68  *
69  * @defgroup lavu_string String Manipulation
70  *
71  * @{
72  *
73  * @}
74  *
75  * @defgroup lavu_mem Memory Management
76  *
77  * @{
78  *
79  * @}
80  *
81  * @defgroup lavu_data Data Structures
82  * @{
83  *
84  * @}
85  *
86  * @defgroup lavu_audio Audio related
87  *
88  * @{
89  *
90  * @}
91  *
92  * @defgroup lavu_error Error Codes
93  *
94  * @{
95  *
96  * @}
97  *
98  * @defgroup lavu_misc Other
99  *
100  * @{
101  *
102  * @defgroup lavu_internal Internal
103  *
104  * Not exported functions, for internal usage only
105  *
106  * @{
107  *
108  * @}
109  */
110 
111 
112 /**
113  * @addtogroup lavu_ver
114  * @{
115  */
116 
117 /**
118  * Return the LIBAVUTIL_VERSION_INT constant.
119  */
120 unsigned avutil_version(void);
121 
122 /**
123  * Return the libavutil build-time configuration.
124  */
125 const char *avutil_configuration(void);
126 
127 /**
128  * Return the libavutil license.
129  */
130 const char *avutil_license(void);
131 
132 /**
133  * @}
134  */
135 
136 /**
137  * @addtogroup lavu_media Media Type
138  * @brief Media Type
139  */
140 
142  AVMEDIA_TYPE_UNKNOWN = -1, ///< Usually treated as AVMEDIA_TYPE_DATA
145  AVMEDIA_TYPE_DATA, ///< Opaque data information usually continuous
147  AVMEDIA_TYPE_ATTACHMENT, ///< Opaque data information usually sparse
149 };
150 
151 /**
152  * Return a string describing the media_type enum, NULL if media_type
153  * is unknown.
154  */
155 const char *av_get_media_type_string(enum AVMediaType media_type);
156 
157 /**
158  * @defgroup lavu_const Constants
159  * @{
160  *
161  * @defgroup lavu_enc Encoding specific
162  *
163  * @note those definition should move to avcodec
164  * @{
165  */
166 
167 #define FF_LAMBDA_SHIFT 7
168 #define FF_LAMBDA_SCALE (1<<FF_LAMBDA_SHIFT)
169 #define FF_QP2LAMBDA 118 ///< factor to convert from H.263 QP to lambda
170 #define FF_LAMBDA_MAX (256*128-1)
171 
172 #define FF_QUALITY_SCALE FF_LAMBDA_SCALE //FIXME maybe remove
173 
174 /**
175  * @}
176  * @defgroup lavu_time Timestamp specific
177  *
178  * FFmpeg internal timebase and timestamp definitions
179  *
180  * @{
181  */
182 
183 /**
184  * @brief Undefined timestamp value
185  *
186  * Usually reported by demuxer that work on containers that do not provide
187  * either pts or dts.
188  */
189 
190 #define AV_NOPTS_VALUE ((int64_t)UINT64_C(0x8000000000000000))
191 
192 /**
193  * Internal time base represented as integer
194  */
195 
196 #define AV_TIME_BASE 1000000
197 
198 /**
199  * Internal time base represented as fractional value
200  */
201 
202 #define AV_TIME_BASE_Q (AVRational){1, AV_TIME_BASE}
203 
204 /**
205  * @}
206  * @}
207  * @defgroup lavu_picture Image related
208  *
209  * AVPicture types, pixel formats and basic image planes manipulation.
210  *
211  * @{
212  */
213 
215  AV_PICTURE_TYPE_NONE = 0, ///< Undefined
216  AV_PICTURE_TYPE_I, ///< Intra
217  AV_PICTURE_TYPE_P, ///< Predicted
218  AV_PICTURE_TYPE_B, ///< Bi-dir predicted
219  AV_PICTURE_TYPE_S, ///< S(GMC)-VOP MPEG4
220  AV_PICTURE_TYPE_SI, ///< Switching Intra
221  AV_PICTURE_TYPE_SP, ///< Switching Predicted
222  AV_PICTURE_TYPE_BI, ///< BI type
223 };
224 
225 /**
226  * Return a single letter to describe the given picture type
227  * pict_type.
228  *
229  * @param[in] pict_type the picture type @return a single character
230  * representing the picture type, '?' if pict_type is unknown
231  */
232 char av_get_picture_type_char(enum AVPictureType pict_type);
233 
234 /**
235  * @}
236  */
237 
238 #include "common.h"
239 #include "error.h"
240 #include "version.h"
241 #include "mathematics.h"
242 #include "rational.h"
243 #include "intfloat_readwrite.h"
244 #include "log.h"
245 #include "pixfmt.h"
246 
247 /**
248  * Return x default pointer in case p is NULL.
249  */
250 static inline void *av_x_if_null(const void *p, const void *x)
251 {
252  return (void *)(intptr_t)(p ? p : x);
253 }
254 
255 /**
256  * Compute the length of an integer list.
257  *
258  * @param elsize size in bytes of each list element (only 1, 2, 4 or 8)
259  * @param term list terminator (usually 0 or -1)
260  * @param list pointer to the list
261  * @return length of the list, in elements, not counting the terminator
262  */
263 unsigned av_int_list_length_for_size(unsigned elsize,
264  const void *list, uint64_t term) av_pure;
265 
266 /**
267  * Compute the length of an integer list.
268  *
269  * @param term list terminator (usually 0 or -1)
270  * @param list pointer to the list
271  * @return length of the list, in elements, not counting the terminator
272  */
273 #define av_int_list_length(list, term) \
274  av_int_list_length_for_size(sizeof(*(list)), list, term)
275 
276 /**
277  * @}
278  * @}
279  */
280 
281 #endif /* AVUTIL_AVUTIL_H */
BI type.
Definition: avutil.h:222
S(GMC)-VOP MPEG4.
Definition: avutil.h:219
const char * avutil_configuration(void)
Return the libavutil build-time configuration.
#define av_pure
Definition: attributes.h:62
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFilterBuffer structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining list
Undefined.
Definition: avutil.h:215
Switching Intra.
Definition: avutil.h:220
Opaque data information usually continuous.
Definition: avutil.h:145
char av_get_picture_type_char(enum AVPictureType pict_type)
Return a single letter to describe the given picture type pict_type.
static void * av_x_if_null(const void *p, const void *x)
Return x default pointer in case p is NULL.
Definition: avutil.h:250
Discrete Time axis x
unsigned avutil_version(void)
Return the LIBAVUTIL_VERSION_INT constant.
error code definitions
unsigned av_int_list_length_for_size(unsigned elsize, const void *list, uint64_t term) av_pure
Compute the length of an integer list.
Libavutil version macros.
Usually treated as AVMEDIA_TYPE_DATA.
Definition: avutil.h:142
Opaque data information usually sparse.
Definition: avutil.h:147
const char * avutil_license(void)
Return the libavutil license.
Switching Predicted.
Definition: avutil.h:221
AVMediaType
Definition: avutil.h:141
AVPictureType
Definition: avutil.h:214
const char * av_get_media_type_string(enum AVMediaType media_type)
Return a string describing the media_type enum, NULL if media_type is unknown.
common internal and external API header
rational numbers
Bi-dir predicted.
Definition: avutil.h:218
pixel format definitions
Predicted.
Definition: avutil.h:217