tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

avutil.h (7048B)


      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 describe 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 @subpage libpostproc post processing library
     43 * @li @subpage libswscale  color conversion and scaling library
     44 *
     45 */
     46 
     47 /**
     48 * @defgroup lavu Common utility functions
     49 *
     50 * @brief
     51 * libavutil contains the code shared across all the other Libav
     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 * @defgroup preproc_misc Preprocessor String Macros
    114 *
    115 * String manipulation macros
    116 *
    117 * @{
    118 */
    119 
    120 #define AV_STRINGIFY(s)         AV_TOSTRING(s)
    121 #define AV_TOSTRING(s) #s
    122 
    123 #define AV_GLUE(a, b) a ## b
    124 #define AV_JOIN(a, b) AV_GLUE(a, b)
    125 
    126 #define AV_PRAGMA(s) _Pragma(#s)
    127 
    128 /**
    129 * @}
    130 */
    131 
    132 /**
    133 * @defgroup version_utils Library Version Macros
    134 *
    135 * Useful to check and match library version in order to maintain
    136 * backward compatibility.
    137 *
    138 * @{
    139 */
    140 
    141 #define AV_VERSION_INT(a, b, c) (a<<16 | b<<8 | c)
    142 #define AV_VERSION_DOT(a, b, c) a ##.## b ##.## c
    143 #define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c)
    144 
    145 /**
    146 * @}
    147 *
    148 * @defgroup lavu_ver Version and Build diagnostics
    149 *
    150 * Macros and function useful to check at compiletime and at runtime
    151 * which version of libavutil is in use.
    152 *
    153 * @{
    154 */
    155 
    156 #define LIBAVUTIL_VERSION_MAJOR 51
    157 #define LIBAVUTIL_VERSION_MINOR 22
    158 #define LIBAVUTIL_VERSION_MICRO  1
    159 
    160 #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
    161                                               LIBAVUTIL_VERSION_MINOR, \
    162                                               LIBAVUTIL_VERSION_MICRO)
    163 #define LIBAVUTIL_VERSION       AV_VERSION(LIBAVUTIL_VERSION_MAJOR,     \
    164                                           LIBAVUTIL_VERSION_MINOR,     \
    165                                           LIBAVUTIL_VERSION_MICRO)
    166 #define LIBAVUTIL_BUILD         LIBAVUTIL_VERSION_INT
    167 
    168 #define LIBAVUTIL_IDENT         "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION)
    169 
    170 /**
    171 * @}
    172 *
    173 * @defgroup depr_guards Deprecation guards
    174 * Those FF_API_* defines are not part of public API.
    175 * They may change, break or disappear at any time.
    176 *
    177 * They are used mostly internally to mark code that will be removed
    178 * on the next major version.
    179 *
    180 * @{
    181 */
    182 #ifndef FF_API_GET_BITS_PER_SAMPLE_FMT
    183 #define FF_API_GET_BITS_PER_SAMPLE_FMT (LIBAVUTIL_VERSION_MAJOR < 52)
    184 #endif
    185 #ifndef FF_API_FIND_OPT
    186 #define FF_API_FIND_OPT                 (LIBAVUTIL_VERSION_MAJOR < 52)
    187 #endif
    188 #ifndef FF_API_AV_FIFO_PEEK
    189 #define FF_API_AV_FIFO_PEEK             (LIBAVUTIL_VERSION_MAJOR < 52)
    190 #endif
    191 #ifndef FF_API_OLD_AVOPTIONS
    192 #define FF_API_OLD_AVOPTIONS            (LIBAVUTIL_VERSION_MAJOR < 52)
    193 #endif
    194 
    195 /**
    196 * @}
    197 */
    198 
    199 /**
    200 * @addtogroup lavu_ver
    201 * @{
    202 */
    203 
    204 /**
    205 * Return the LIBAVUTIL_VERSION_INT constant.
    206 */
    207 unsigned avutil_version(void);
    208 
    209 /**
    210 * Return the libavutil build-time configuration.
    211 */
    212 const char *avutil_configuration(void);
    213 
    214 /**
    215 * Return the libavutil license.
    216 */
    217 const char *avutil_license(void);
    218 
    219 /**
    220 * @}
    221 */
    222 
    223 /**
    224 * @addtogroup lavu_media Media Type
    225 * @brief Media Type
    226 */
    227 
    228 enum AVMediaType {
    229    AVMEDIA_TYPE_UNKNOWN = -1,  ///< Usually treated as AVMEDIA_TYPE_DATA
    230    AVMEDIA_TYPE_VIDEO,
    231    AVMEDIA_TYPE_AUDIO,
    232    AVMEDIA_TYPE_DATA,          ///< Opaque data information usually continuous
    233    AVMEDIA_TYPE_SUBTITLE,
    234    AVMEDIA_TYPE_ATTACHMENT,    ///< Opaque data information usually sparse
    235    AVMEDIA_TYPE_NB
    236 };
    237 
    238 /**
    239 * @defgroup lavu_const Constants
    240 * @{
    241 *
    242 * @defgroup lavu_enc Encoding specific
    243 *
    244 * @note those definition should move to avcodec
    245 * @{
    246 */
    247 
    248 #define FF_LAMBDA_SHIFT 7
    249 #define FF_LAMBDA_SCALE (1<<FF_LAMBDA_SHIFT)
    250 #define FF_QP2LAMBDA 118 ///< factor to convert from H.263 QP to lambda
    251 #define FF_LAMBDA_MAX (256*128-1)
    252 
    253 #define FF_QUALITY_SCALE FF_LAMBDA_SCALE //FIXME maybe remove
    254 
    255 /**
    256 * @}
    257 * @defgroup lavu_time Timestamp specific
    258 *
    259 * Libav internal timebase and timestamp definitions
    260 *
    261 * @{
    262 */
    263 
    264 /**
    265 * @brief Undefined timestamp value
    266 *
    267 * Usually reported by demuxer that work on containers that do not provide
    268 * either pts or dts.
    269 */
    270 
    271 #define AV_NOPTS_VALUE          INT64_C(0x8000000000000000)
    272 
    273 /**
    274 * Internal time base represented as integer
    275 */
    276 
    277 #define AV_TIME_BASE            1000000
    278 
    279 /**
    280 * Internal time base represented as fractional value
    281 */
    282 
    283 #define AV_TIME_BASE_Q          (AVRational){1, AV_TIME_BASE}
    284 
    285 /**
    286 * @}
    287 * @}
    288 * @defgroup lavu_picture Image related
    289 *
    290 * AVPicture types, pixel formats and basic image planes manipulation.
    291 *
    292 * @{
    293 */
    294 
    295 enum AVPictureType {
    296    AV_PICTURE_TYPE_I = 1, ///< Intra
    297    AV_PICTURE_TYPE_P,     ///< Predicted
    298    AV_PICTURE_TYPE_B,     ///< Bi-dir predicted
    299    AV_PICTURE_TYPE_S,     ///< S(GMC)-VOP MPEG4
    300    AV_PICTURE_TYPE_SI,    ///< Switching Intra
    301    AV_PICTURE_TYPE_SP,    ///< Switching Predicted
    302    AV_PICTURE_TYPE_BI,    ///< BI type
    303 };
    304 
    305 /**
    306 * Return a single letter to describe the given picture type
    307 * pict_type.
    308 *
    309 * @param[in] pict_type the picture type @return a single character
    310 * representing the picture type, '?' if pict_type is unknown
    311 */
    312 char av_get_picture_type_char(enum AVPictureType pict_type);
    313 
    314 /**
    315 * @}
    316 */
    317 
    318 #include "common.h"
    319 #include "error.h"
    320 
    321 /**
    322 * @}
    323 * @}
    324 */
    325 
    326 #endif /* AVUTIL_AVUTIL_H */