yading@11: /* yading@11: * copyright (c) 2006 Michael Niedermayer yading@11: * yading@11: * This file is part of FFmpeg. yading@11: * yading@11: * FFmpeg is free software; you can redistribute it and/or yading@11: * modify it under the terms of the GNU Lesser General Public yading@11: * License as published by the Free Software Foundation; either yading@11: * version 2.1 of the License, or (at your option) any later version. yading@11: * yading@11: * FFmpeg is distributed in the hope that it will be useful, yading@11: * but WITHOUT ANY WARRANTY; without even the implied warranty of yading@11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU yading@11: * Lesser General Public License for more details. yading@11: * yading@11: * You should have received a copy of the GNU Lesser General Public yading@11: * License along with FFmpeg; if not, write to the Free Software yading@11: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA yading@11: */ yading@11: yading@11: #ifndef AVUTIL_AVUTIL_H yading@11: #define AVUTIL_AVUTIL_H yading@11: yading@11: /** yading@11: * @file yading@11: * external API header yading@11: */ yading@11: yading@11: /** yading@11: * @mainpage yading@11: * yading@11: * @section ffmpeg_intro Introduction yading@11: * yading@11: * This document describes the usage of the different libraries yading@11: * provided by FFmpeg. yading@11: * yading@11: * @li @ref libavc "libavcodec" encoding/decoding library yading@11: * @li @ref lavfi "libavfilter" graph based frame editing library yading@11: * @li @ref libavf "libavformat" I/O and muxing/demuxing library yading@11: * @li @ref lavd "libavdevice" special devices muxing/demuxing library yading@11: * @li @ref lavu "libavutil" common utility library yading@11: * @li @ref lswr "libswresample" audio resampling, format conversion and mixing yading@11: * @li @ref lpp "libpostproc" post processing library yading@11: * @li @ref lsws "libswscale" color conversion and scaling library yading@11: */ yading@11: yading@11: /** yading@11: * @defgroup lavu Common utility functions yading@11: * yading@11: * @brief yading@11: * libavutil contains the code shared across all the other FFmpeg yading@11: * libraries yading@11: * yading@11: * @note In order to use the functions provided by avutil you must include yading@11: * the specific header. yading@11: * yading@11: * @{ yading@11: * yading@11: * @defgroup lavu_crypto Crypto and Hashing yading@11: * yading@11: * @{ yading@11: * @} yading@11: * yading@11: * @defgroup lavu_math Maths yading@11: * @{ yading@11: * yading@11: * @} yading@11: * yading@11: * @defgroup lavu_string String Manipulation yading@11: * yading@11: * @{ yading@11: * yading@11: * @} yading@11: * yading@11: * @defgroup lavu_mem Memory Management yading@11: * yading@11: * @{ yading@11: * yading@11: * @} yading@11: * yading@11: * @defgroup lavu_data Data Structures yading@11: * @{ yading@11: * yading@11: * @} yading@11: * yading@11: * @defgroup lavu_audio Audio related yading@11: * yading@11: * @{ yading@11: * yading@11: * @} yading@11: * yading@11: * @defgroup lavu_error Error Codes yading@11: * yading@11: * @{ yading@11: * yading@11: * @} yading@11: * yading@11: * @defgroup lavu_misc Other yading@11: * yading@11: * @{ yading@11: * yading@11: * @defgroup lavu_internal Internal yading@11: * yading@11: * Not exported functions, for internal usage only yading@11: * yading@11: * @{ yading@11: * yading@11: * @} yading@11: */ yading@11: yading@11: yading@11: /** yading@11: * @addtogroup lavu_ver yading@11: * @{ yading@11: */ yading@11: yading@11: /** yading@11: * Return the LIBAVUTIL_VERSION_INT constant. yading@11: */ yading@11: unsigned avutil_version(void); yading@11: yading@11: /** yading@11: * Return the libavutil build-time configuration. yading@11: */ yading@11: const char *avutil_configuration(void); yading@11: yading@11: /** yading@11: * Return the libavutil license. yading@11: */ yading@11: const char *avutil_license(void); yading@11: yading@11: /** yading@11: * @} yading@11: */ yading@11: yading@11: /** yading@11: * @addtogroup lavu_media Media Type yading@11: * @brief Media Type yading@11: */ yading@11: yading@11: enum AVMediaType { yading@11: AVMEDIA_TYPE_UNKNOWN = -1, ///< Usually treated as AVMEDIA_TYPE_DATA yading@11: AVMEDIA_TYPE_VIDEO, yading@11: AVMEDIA_TYPE_AUDIO, yading@11: AVMEDIA_TYPE_DATA, ///< Opaque data information usually continuous yading@11: AVMEDIA_TYPE_SUBTITLE, yading@11: AVMEDIA_TYPE_ATTACHMENT, ///< Opaque data information usually sparse yading@11: AVMEDIA_TYPE_NB yading@11: }; yading@11: yading@11: /** yading@11: * Return a string describing the media_type enum, NULL if media_type yading@11: * is unknown. yading@11: */ yading@11: const char *av_get_media_type_string(enum AVMediaType media_type); yading@11: yading@11: /** yading@11: * @defgroup lavu_const Constants yading@11: * @{ yading@11: * yading@11: * @defgroup lavu_enc Encoding specific yading@11: * yading@11: * @note those definition should move to avcodec yading@11: * @{ yading@11: */ yading@11: yading@11: #define FF_LAMBDA_SHIFT 7 yading@11: #define FF_LAMBDA_SCALE (1<