tor-browser

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

avutil.h (6960B)


      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 @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 lavr "libavresample" audio resampling, format conversion and mixing
     43 * @li @ref libsws "libswscale"  color conversion and scaling library
     44 *
     45 * @section libav_versioning Versioning and compatibility
     46 *
     47 * Each of the Libav libraries contains a version.h header, which defines a
     48 * major, minor and micro version number with the
     49 * <em>LIBRARYNAME_VERSION_{MAJOR,MINOR,MICRO}</em> macros. The major version
     50 * number is incremented with backward incompatible changes - e.g. removing
     51 * parts of the public API, reordering public struct members, etc. The minor
     52 * version number is incremented for backward compatible API changes or major
     53 * new features - e.g. adding a new public function or a new decoder. The micro
     54 * version number is incremented for smaller changes that a calling program
     55 * might still want to check for - e.g. changing behavior in a previously
     56 * unspecified situation.
     57 *
     58 * Libav guarantees backward API and ABI compatibility for each library as long
     59 * as its major version number is unchanged. This means that no public symbols
     60 * will be removed or renamed. Types and names of the public struct members and
     61 * values of public macros and enums will remain the same (unless they were
     62 * explicitly declared as not part of the public API). Documented behavior will
     63 * not change.
     64 *
     65 * In other words, any correct program that works with a given Libav snapshot
     66 * should work just as well without any changes with any later snapshot with the
     67 * same major versions. This applies to both rebuilding the program against new
     68 * Libav versions or to replacing the dynamic Libav libraries that a program
     69 * links against.
     70 *
     71 * However, new public symbols may be added and new members may be appended to
     72 * public structs whose size is not part of public ABI (most public structs in
     73 * Libav). New macros and enum values may be added. Behavior in undocumented
     74 * situations may change slightly (and be documented). All those are accompanied
     75 * by an entry in doc/APIchanges and incrementing either the minor or micro
     76 * version number.
     77 */
     78 
     79 /**
     80 * @defgroup lavu Common utility functions
     81 *
     82 * @brief
     83 * libavutil contains the code shared across all the other Libav
     84 * libraries
     85 *
     86 * @note In order to use the functions provided by avutil you must include
     87 * the specific header.
     88 *
     89 * @{
     90 *
     91 * @defgroup lavu_crypto Crypto and Hashing
     92 *
     93 * @{
     94 * @}
     95 *
     96 * @defgroup lavu_math Maths
     97 * @{
     98 *
     99 * @}
    100 *
    101 * @defgroup lavu_string String Manipulation
    102 *
    103 * @{
    104 *
    105 * @}
    106 *
    107 * @defgroup lavu_mem Memory Management
    108 *
    109 * @{
    110 *
    111 * @}
    112 *
    113 * @defgroup lavu_data Data Structures
    114 * @{
    115 *
    116 * @}
    117 *
    118 * @defgroup lavu_audio Audio related
    119 *
    120 * @{
    121 *
    122 * @}
    123 *
    124 * @defgroup lavu_error Error Codes
    125 *
    126 * @{
    127 *
    128 * @}
    129 *
    130 * @defgroup lavu_log Logging Facility
    131 *
    132 * @{
    133 *
    134 * @}
    135 *
    136 * @defgroup lavu_misc Other
    137 *
    138 * @{
    139 *
    140 * @defgroup lavu_internal Internal
    141 *
    142 * Not exported functions, for internal usage only
    143 *
    144 * @{
    145 *
    146 * @}
    147 *
    148 * @defgroup preproc_misc Preprocessor String Macros
    149 *
    150 * @{
    151 *
    152 * @}
    153 */
    154 
    155 
    156 /**
    157 * @addtogroup lavu_ver
    158 * @{
    159 */
    160 
    161 /**
    162 * Return the LIBAVUTIL_VERSION_INT constant.
    163 */
    164 unsigned avutil_version(void);
    165 
    166 /**
    167 * Return the libavutil build-time configuration.
    168 */
    169 const char *avutil_configuration(void);
    170 
    171 /**
    172 * Return the libavutil license.
    173 */
    174 const char *avutil_license(void);
    175 
    176 /**
    177 * @}
    178 */
    179 
    180 /**
    181 * @addtogroup lavu_media Media Type
    182 * @brief Media Type
    183 */
    184 
    185 enum AVMediaType {
    186    AVMEDIA_TYPE_UNKNOWN = -1,  ///< Usually treated as AVMEDIA_TYPE_DATA
    187    AVMEDIA_TYPE_VIDEO,
    188    AVMEDIA_TYPE_AUDIO,
    189    AVMEDIA_TYPE_DATA,          ///< Opaque data information usually continuous
    190    AVMEDIA_TYPE_SUBTITLE,
    191    AVMEDIA_TYPE_ATTACHMENT,    ///< Opaque data information usually sparse
    192    AVMEDIA_TYPE_NB
    193 };
    194 
    195 /**
    196 * @defgroup lavu_const Constants
    197 * @{
    198 *
    199 * @defgroup lavu_enc Encoding specific
    200 *
    201 * @note those definition should move to avcodec
    202 * @{
    203 */
    204 
    205 #define FF_LAMBDA_SHIFT 7
    206 #define FF_LAMBDA_SCALE (1<<FF_LAMBDA_SHIFT)
    207 #define FF_QP2LAMBDA 118 ///< factor to convert from H.263 QP to lambda
    208 #define FF_LAMBDA_MAX (256*128-1)
    209 
    210 #define FF_QUALITY_SCALE FF_LAMBDA_SCALE //FIXME maybe remove
    211 
    212 /**
    213 * @}
    214 * @defgroup lavu_time Timestamp specific
    215 *
    216 * Libav internal timebase and timestamp definitions
    217 *
    218 * @{
    219 */
    220 
    221 /**
    222 * @brief Undefined timestamp value
    223 *
    224 * Usually reported by demuxer that work on containers that do not provide
    225 * either pts or dts.
    226 */
    227 
    228 #define AV_NOPTS_VALUE          INT64_C(0x8000000000000000)
    229 
    230 /**
    231 * Internal time base represented as integer
    232 */
    233 
    234 #define AV_TIME_BASE            1000000
    235 
    236 /**
    237 * Internal time base represented as fractional value
    238 */
    239 
    240 #define AV_TIME_BASE_Q          (AVRational){1, AV_TIME_BASE}
    241 
    242 /**
    243 * @}
    244 * @}
    245 * @defgroup lavu_picture Image related
    246 *
    247 * AVPicture types, pixel formats and basic image planes manipulation.
    248 *
    249 * @{
    250 */
    251 
    252 enum AVPictureType {
    253    AV_PICTURE_TYPE_I = 1, ///< Intra
    254    AV_PICTURE_TYPE_P,     ///< Predicted
    255    AV_PICTURE_TYPE_B,     ///< Bi-dir predicted
    256    AV_PICTURE_TYPE_S,     ///< S(GMC)-VOP MPEG4
    257    AV_PICTURE_TYPE_SI,    ///< Switching Intra
    258    AV_PICTURE_TYPE_SP,    ///< Switching Predicted
    259    AV_PICTURE_TYPE_BI,    ///< BI type
    260 };
    261 
    262 /**
    263 * Return a single letter to describe the given picture type
    264 * pict_type.
    265 *
    266 * @param[in] pict_type the picture type @return a single character
    267 * representing the picture type, '?' if pict_type is unknown
    268 */
    269 char av_get_picture_type_char(enum AVPictureType pict_type);
    270 
    271 /**
    272 * @}
    273 */
    274 
    275 #include "error.h"
    276 #include "version.h"
    277 #include "macros.h"
    278 
    279 /**
    280 * @}
    281 * @}
    282 */
    283 
    284 #endif /* AVUTIL_AVUTIL_H */