tor-browser

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

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 */