avutil.h (5504B)
1 /* 2 * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> 3 * 4 * This file is part of Libav. 5 * 6 * Libav 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 * Libav 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 Libav; 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 libav_intro Introduction 33 * 34 * This document describes the usage of the different libraries 35 * provided by Libav. 36 * 37 * @li @ref libavc "libavcodec" encoding/decoding library 38 * @li @subpage 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 lavr "libavresample" audio resampling, format conversion and mixing 43 * @li @subpage libswscale color conversion and scaling library 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 */ 118 119 #define AV_STRINGIFY(s) AV_TOSTRING(s) 120 #define AV_TOSTRING(s) #s 121 122 #define AV_GLUE(a, b) a ## b 123 #define AV_JOIN(a, b) AV_GLUE(a, b) 124 125 #define AV_PRAGMA(s) _Pragma(#s) 126 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 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) 143 144 /** 145 * @} 146 */ 147 148 /** 149 * @addtogroup lavu_ver 150 * @{ 151 */ 152 153 /** 154 * Return the LIBAVUTIL_VERSION_INT constant. 155 */ 156 unsigned avutil_version(void); 157 158 /** 159 * Return the libavutil build-time configuration. 160 */ 161 const char *avutil_configuration(void); 162 163 /** 164 * Return the libavutil license. 165 */ 166 const char *avutil_license(void); 167 168 /** 169 * @} 170 */ 171 172 /** 173 * @addtogroup lavu_media Media Type 174 * @brief Media Type 175 */ 176 177 enum AVMediaType { 178 AVMEDIA_TYPE_UNKNOWN = -1, ///< Usually treated as AVMEDIA_TYPE_DATA 179 AVMEDIA_TYPE_VIDEO, 180 AVMEDIA_TYPE_AUDIO, 181 AVMEDIA_TYPE_DATA, ///< Opaque data information usually continuous 182 AVMEDIA_TYPE_SUBTITLE, 183 AVMEDIA_TYPE_ATTACHMENT, ///< Opaque data information usually sparse 184 AVMEDIA_TYPE_NB 185 }; 186 187 /** 188 * @defgroup lavu_const Constants 189 * @{ 190 * 191 * @defgroup lavu_enc Encoding specific 192 * 193 * @note those definition should move to avcodec 194 * @{ 195 */ 196 197 #define FF_LAMBDA_SHIFT 7 198 #define FF_LAMBDA_SCALE (1<<FF_LAMBDA_SHIFT) 199 #define FF_QP2LAMBDA 118 ///< factor to convert from H.263 QP to lambda 200 #define FF_LAMBDA_MAX (256*128-1) 201 202 #define FF_QUALITY_SCALE FF_LAMBDA_SCALE //FIXME maybe remove 203 204 /** 205 * @} 206 * @defgroup lavu_time Timestamp specific 207 * 208 * Libav internal timebase and timestamp definitions 209 * 210 * @{ 211 */ 212 213 /** 214 * @brief Undefined timestamp value 215 * 216 * Usually reported by demuxer that work on containers that do not provide 217 * either pts or dts. 218 */ 219 220 #define AV_NOPTS_VALUE INT64_C(0x8000000000000000) 221 222 /** 223 * Internal time base represented as integer 224 */ 225 226 #define AV_TIME_BASE 1000000 227 228 /** 229 * Internal time base represented as fractional value 230 */ 231 232 #define AV_TIME_BASE_Q (AVRational){1, AV_TIME_BASE} 233 234 /** 235 * @} 236 * @} 237 * @defgroup lavu_picture Image related 238 * 239 * AVPicture types, pixel formats and basic image planes manipulation. 240 * 241 * @{ 242 */ 243 244 enum AVPictureType { 245 AV_PICTURE_TYPE_I = 1, ///< Intra 246 AV_PICTURE_TYPE_P, ///< Predicted 247 AV_PICTURE_TYPE_B, ///< Bi-dir predicted 248 AV_PICTURE_TYPE_S, ///< S(GMC)-VOP MPEG4 249 AV_PICTURE_TYPE_SI, ///< Switching Intra 250 AV_PICTURE_TYPE_SP, ///< Switching Predicted 251 AV_PICTURE_TYPE_BI, ///< BI type 252 }; 253 254 /** 255 * Return a single letter to describe the given picture type 256 * pict_type. 257 * 258 * @param[in] pict_type the picture type @return a single character 259 * representing the picture type, '?' if pict_type is unknown 260 */ 261 char av_get_picture_type_char(enum AVPictureType pict_type); 262 263 /** 264 * @} 265 */ 266 267 #include "error.h" 268 #include "version.h" 269 270 /** 271 * @} 272 * @} 273 */ 274 275 #endif /* AVUTIL_AVUTIL_H */