4203 lines · 138.6 KB · C
RawDownload
/* * copyright (c) 2001 Fabrice Bellard * * This file is part of Libav. * * Libav is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * Libav is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with Libav; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef AVCODEC_AVCODEC_H#define AVCODEC_AVCODEC_H /** * @file * @ingroup libavc * Libavcodec external API header */ #include <errno.h>#include "libavutil/samplefmt.h"#include "libavutil/avutil.h"#include "libavutil/buffer.h"#include "libavutil/cpu.h"#include "libavutil/dict.h"#include "libavutil/frame.h"#include "libavutil/log.h"#include "libavutil/pixfmt.h"#include "libavutil/rational.h" #include "libavcodec/version.h"/** * @defgroup libavc Encoding/Decoding Library * @{ * * @defgroup lavc_decoding Decoding * @{ * @} * * @defgroup lavc_encoding Encoding * @{ * @} * * @defgroup lavc_codec Codecs * @{ * @defgroup lavc_codec_native Native Codecs * @{ * @} * @defgroup lavc_codec_wrappers External library wrappers * @{ * @} * @defgroup lavc_codec_hwaccel Hardware Accelerators bridge * @{ * @} * @} * @defgroup lavc_internal Internal * @{ * @} * @} * */ /** * @defgroup lavc_core Core functions/structures. * @ingroup libavc * * Basic definitions, functions for querying libavcodec capabilities, * allocating core structures, etc. * @{ */  /** * Identify the syntax and semantics of the bitstream. * The principle is roughly: * Two decoders with the same ID can decode the same streams. * Two encoders with the same ID can encode compatible streams. * There may be slight deviations from the principle due to implementation * details. * * If you add a codec ID to this list, add it so that * 1. no value of a existing codec ID changes (that would break ABI), * 2. it is as close as possible to similar codecs. * * After adding new codec IDs, do not forget to add an entry to the codec * descriptor list and bump libavcodec minor version. */enum AVCodecID {    AV_CODEC_ID_NONE,     /* video codecs */    AV_CODEC_ID_MPEG1VIDEO,    AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding    AV_CODEC_ID_MPEG2VIDEO_XVMC,    AV_CODEC_ID_H261,    AV_CODEC_ID_H263,    AV_CODEC_ID_RV10,    AV_CODEC_ID_RV20,    AV_CODEC_ID_MJPEG,    AV_CODEC_ID_MJPEGB,    AV_CODEC_ID_LJPEG,    AV_CODEC_ID_SP5X,    AV_CODEC_ID_JPEGLS,    AV_CODEC_ID_MPEG4,    AV_CODEC_ID_RAWVIDEO,    AV_CODEC_ID_MSMPEG4V1,    AV_CODEC_ID_MSMPEG4V2,    AV_CODEC_ID_MSMPEG4V3,    AV_CODEC_ID_WMV1,    AV_CODEC_ID_WMV2,    AV_CODEC_ID_H263P,    AV_CODEC_ID_H263I,    AV_CODEC_ID_FLV1,    AV_CODEC_ID_SVQ1,    AV_CODEC_ID_SVQ3,    AV_CODEC_ID_DVVIDEO,    AV_CODEC_ID_HUFFYUV,    AV_CODEC_ID_CYUV,    AV_CODEC_ID_H264,    AV_CODEC_ID_INDEO3,    AV_CODEC_ID_VP3,    AV_CODEC_ID_THEORA,    AV_CODEC_ID_ASV1,    AV_CODEC_ID_ASV2,    AV_CODEC_ID_FFV1,    AV_CODEC_ID_4XM,    AV_CODEC_ID_VCR1,    AV_CODEC_ID_CLJR,    AV_CODEC_ID_MDEC,    AV_CODEC_ID_ROQ,    AV_CODEC_ID_INTERPLAY_VIDEO,    AV_CODEC_ID_XAN_WC3,    AV_CODEC_ID_XAN_WC4,    AV_CODEC_ID_RPZA,    AV_CODEC_ID_CINEPAK,    AV_CODEC_ID_WS_VQA,    AV_CODEC_ID_MSRLE,    AV_CODEC_ID_MSVIDEO1,    AV_CODEC_ID_IDCIN,    AV_CODEC_ID_8BPS,    AV_CODEC_ID_SMC,    AV_CODEC_ID_FLIC,    AV_CODEC_ID_TRUEMOTION1,    AV_CODEC_ID_VMDVIDEO,    AV_CODEC_ID_MSZH,    AV_CODEC_ID_ZLIB,    AV_CODEC_ID_QTRLE,    AV_CODEC_ID_TSCC,    AV_CODEC_ID_ULTI,    AV_CODEC_ID_QDRAW,    AV_CODEC_ID_VIXL,    AV_CODEC_ID_QPEG,    AV_CODEC_ID_PNG,    AV_CODEC_ID_PPM,    AV_CODEC_ID_PBM,    AV_CODEC_ID_PGM,    AV_CODEC_ID_PGMYUV,    AV_CODEC_ID_PAM,    AV_CODEC_ID_FFVHUFF,    AV_CODEC_ID_RV30,    AV_CODEC_ID_RV40,    AV_CODEC_ID_VC1,    AV_CODEC_ID_WMV3,    AV_CODEC_ID_LOCO,    AV_CODEC_ID_WNV1,    AV_CODEC_ID_AASC,    AV_CODEC_ID_INDEO2,    AV_CODEC_ID_FRAPS,    AV_CODEC_ID_TRUEMOTION2,    AV_CODEC_ID_BMP,    AV_CODEC_ID_CSCD,    AV_CODEC_ID_MMVIDEO,    AV_CODEC_ID_ZMBV,    AV_CODEC_ID_AVS,    AV_CODEC_ID_SMACKVIDEO,    AV_CODEC_ID_NUV,    AV_CODEC_ID_KMVC,    AV_CODEC_ID_FLASHSV,    AV_CODEC_ID_CAVS,    AV_CODEC_ID_JPEG2000,    AV_CODEC_ID_VMNC,    AV_CODEC_ID_VP5,    AV_CODEC_ID_VP6,    AV_CODEC_ID_VP6F,    AV_CODEC_ID_TARGA,    AV_CODEC_ID_DSICINVIDEO,    AV_CODEC_ID_TIERTEXSEQVIDEO,    AV_CODEC_ID_TIFF,    AV_CODEC_ID_GIF,    AV_CODEC_ID_DXA,    AV_CODEC_ID_DNXHD,    AV_CODEC_ID_THP,    AV_CODEC_ID_SGI,    AV_CODEC_ID_C93,    AV_CODEC_ID_BETHSOFTVID,    AV_CODEC_ID_PTX,    AV_CODEC_ID_TXD,    AV_CODEC_ID_VP6A,    AV_CODEC_ID_AMV,    AV_CODEC_ID_VB,    AV_CODEC_ID_PCX,    AV_CODEC_ID_SUNRAST,    AV_CODEC_ID_INDEO4,    AV_CODEC_ID_INDEO5,    AV_CODEC_ID_MIMIC,    AV_CODEC_ID_RL2,    AV_CODEC_ID_ESCAPE124,    AV_CODEC_ID_DIRAC,    AV_CODEC_ID_BFI,    AV_CODEC_ID_CMV,    AV_CODEC_ID_MOTIONPIXELS,    AV_CODEC_ID_TGV,    AV_CODEC_ID_TGQ,    AV_CODEC_ID_TQI,    AV_CODEC_ID_AURA,    AV_CODEC_ID_AURA2,    AV_CODEC_ID_V210X,    AV_CODEC_ID_TMV,    AV_CODEC_ID_V210,    AV_CODEC_ID_DPX,    AV_CODEC_ID_MAD,    AV_CODEC_ID_FRWU,    AV_CODEC_ID_FLASHSV2,    AV_CODEC_ID_CDGRAPHICS,    AV_CODEC_ID_R210,    AV_CODEC_ID_ANM,    AV_CODEC_ID_BINKVIDEO,    AV_CODEC_ID_IFF_ILBM,    AV_CODEC_ID_IFF_BYTERUN1,    AV_CODEC_ID_KGV1,    AV_CODEC_ID_YOP,    AV_CODEC_ID_VP8,    AV_CODEC_ID_PICTOR,    AV_CODEC_ID_ANSI,    AV_CODEC_ID_A64_MULTI,    AV_CODEC_ID_A64_MULTI5,    AV_CODEC_ID_R10K,    AV_CODEC_ID_MXPEG,    AV_CODEC_ID_LAGARITH,    AV_CODEC_ID_PRORES,    AV_CODEC_ID_JV,    AV_CODEC_ID_DFA,    AV_CODEC_ID_WMV3IMAGE,    AV_CODEC_ID_VC1IMAGE,    AV_CODEC_ID_UTVIDEO,    AV_CODEC_ID_BMV_VIDEO,    AV_CODEC_ID_VBLE,    AV_CODEC_ID_DXTORY,    AV_CODEC_ID_V410,    AV_CODEC_ID_XWD,    AV_CODEC_ID_CDXL,    AV_CODEC_ID_XBM,    AV_CODEC_ID_ZEROCODEC,    AV_CODEC_ID_MSS1,    AV_CODEC_ID_MSA1,    AV_CODEC_ID_TSCC2,    AV_CODEC_ID_MTS2,    AV_CODEC_ID_CLLC,    AV_CODEC_ID_MSS2,    AV_CODEC_ID_VP9,    AV_CODEC_ID_AIC,    AV_CODEC_ID_ESCAPE130,    AV_CODEC_ID_G2M,     /* various PCM "codecs" */    AV_CODEC_ID_FIRST_AUDIO = 0x10000,     ///< A dummy id pointing at the start of audio codecs    AV_CODEC_ID_PCM_S16LE = 0x10000,    AV_CODEC_ID_PCM_S16BE,    AV_CODEC_ID_PCM_U16LE,    AV_CODEC_ID_PCM_U16BE,    AV_CODEC_ID_PCM_S8,    AV_CODEC_ID_PCM_U8,    AV_CODEC_ID_PCM_MULAW,    AV_CODEC_ID_PCM_ALAW,    AV_CODEC_ID_PCM_S32LE,    AV_CODEC_ID_PCM_S32BE,    AV_CODEC_ID_PCM_U32LE,    AV_CODEC_ID_PCM_U32BE,    AV_CODEC_ID_PCM_S24LE,    AV_CODEC_ID_PCM_S24BE,    AV_CODEC_ID_PCM_U24LE,    AV_CODEC_ID_PCM_U24BE,    AV_CODEC_ID_PCM_S24DAUD,    AV_CODEC_ID_PCM_ZORK,    AV_CODEC_ID_PCM_S16LE_PLANAR,    AV_CODEC_ID_PCM_DVD,    AV_CODEC_ID_PCM_F32BE,    AV_CODEC_ID_PCM_F32LE,    AV_CODEC_ID_PCM_F64BE,    AV_CODEC_ID_PCM_F64LE,    AV_CODEC_ID_PCM_BLURAY,    AV_CODEC_ID_PCM_LXF,    AV_CODEC_ID_S302M,    AV_CODEC_ID_PCM_S8_PLANAR,     /* various ADPCM codecs */    AV_CODEC_ID_ADPCM_IMA_QT = 0x11000,    AV_CODEC_ID_ADPCM_IMA_WAV,    AV_CODEC_ID_ADPCM_IMA_DK3,    AV_CODEC_ID_ADPCM_IMA_DK4,    AV_CODEC_ID_ADPCM_IMA_WS,    AV_CODEC_ID_ADPCM_IMA_SMJPEG,    AV_CODEC_ID_ADPCM_MS,    AV_CODEC_ID_ADPCM_4XM,    AV_CODEC_ID_ADPCM_XA,    AV_CODEC_ID_ADPCM_ADX,    AV_CODEC_ID_ADPCM_EA,    AV_CODEC_ID_ADPCM_G726,    AV_CODEC_ID_ADPCM_CT,    AV_CODEC_ID_ADPCM_SWF,    AV_CODEC_ID_ADPCM_YAMAHA,    AV_CODEC_ID_ADPCM_SBPRO_4,    AV_CODEC_ID_ADPCM_SBPRO_3,    AV_CODEC_ID_ADPCM_SBPRO_2,    AV_CODEC_ID_ADPCM_THP,    AV_CODEC_ID_ADPCM_IMA_AMV,    AV_CODEC_ID_ADPCM_EA_R1,    AV_CODEC_ID_ADPCM_EA_R3,    AV_CODEC_ID_ADPCM_EA_R2,    AV_CODEC_ID_ADPCM_IMA_EA_SEAD,    AV_CODEC_ID_ADPCM_IMA_EA_EACS,    AV_CODEC_ID_ADPCM_EA_XAS,    AV_CODEC_ID_ADPCM_EA_MAXIS_XA,    AV_CODEC_ID_ADPCM_IMA_ISS,    AV_CODEC_ID_ADPCM_G722,    AV_CODEC_ID_ADPCM_IMA_APC,     /* AMR */    AV_CODEC_ID_AMR_NB = 0x12000,    AV_CODEC_ID_AMR_WB,     /* RealAudio codecs*/    AV_CODEC_ID_RA_144 = 0x13000,    AV_CODEC_ID_RA_288,     /* various DPCM codecs */    AV_CODEC_ID_ROQ_DPCM = 0x14000,    AV_CODEC_ID_INTERPLAY_DPCM,    AV_CODEC_ID_XAN_DPCM,    AV_CODEC_ID_SOL_DPCM,     /* audio codecs */    AV_CODEC_ID_MP2 = 0x15000,    AV_CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3    AV_CODEC_ID_AAC,    AV_CODEC_ID_AC3,    AV_CODEC_ID_DTS,    AV_CODEC_ID_VORBIS,    AV_CODEC_ID_DVAUDIO,    AV_CODEC_ID_WMAV1,    AV_CODEC_ID_WMAV2,    AV_CODEC_ID_MACE3,    AV_CODEC_ID_MACE6,    AV_CODEC_ID_VMDAUDIO,    AV_CODEC_ID_FLAC,    AV_CODEC_ID_MP3ADU,    AV_CODEC_ID_MP3ON4,    AV_CODEC_ID_SHORTEN,    AV_CODEC_ID_ALAC,    AV_CODEC_ID_WESTWOOD_SND1,    AV_CODEC_ID_GSM, ///< as in Berlin toast format    AV_CODEC_ID_QDM2,    AV_CODEC_ID_COOK,    AV_CODEC_ID_TRUESPEECH,    AV_CODEC_ID_TTA,    AV_CODEC_ID_SMACKAUDIO,    AV_CODEC_ID_QCELP,    AV_CODEC_ID_WAVPACK,    AV_CODEC_ID_DSICINAUDIO,    AV_CODEC_ID_IMC,    AV_CODEC_ID_MUSEPACK7,    AV_CODEC_ID_MLP,    AV_CODEC_ID_GSM_MS, /* as found in WAV */    AV_CODEC_ID_ATRAC3,    AV_CODEC_ID_VOXWARE,    AV_CODEC_ID_APE,    AV_CODEC_ID_NELLYMOSER,    AV_CODEC_ID_MUSEPACK8,    AV_CODEC_ID_SPEEX,    AV_CODEC_ID_WMAVOICE,    AV_CODEC_ID_WMAPRO,    AV_CODEC_ID_WMALOSSLESS,    AV_CODEC_ID_ATRAC3P,    AV_CODEC_ID_EAC3,    AV_CODEC_ID_SIPR,    AV_CODEC_ID_MP1,    AV_CODEC_ID_TWINVQ,    AV_CODEC_ID_TRUEHD,    AV_CODEC_ID_MP4ALS,    AV_CODEC_ID_ATRAC1,    AV_CODEC_ID_BINKAUDIO_RDFT,    AV_CODEC_ID_BINKAUDIO_DCT,    AV_CODEC_ID_AAC_LATM,    AV_CODEC_ID_QDMC,    AV_CODEC_ID_CELT,    AV_CODEC_ID_G723_1,    AV_CODEC_ID_G729,    AV_CODEC_ID_8SVX_EXP,    AV_CODEC_ID_8SVX_FIB,    AV_CODEC_ID_BMV_AUDIO,    AV_CODEC_ID_RALF,    AV_CODEC_ID_IAC,    AV_CODEC_ID_ILBC,    AV_CODEC_ID_OPUS,    AV_CODEC_ID_COMFORT_NOISE,    AV_CODEC_ID_TAK,     /* subtitle codecs */    AV_CODEC_ID_FIRST_SUBTITLE = 0x17000,          ///< A dummy ID pointing at the start of subtitle codecs.    AV_CODEC_ID_DVD_SUBTITLE = 0x17000,    AV_CODEC_ID_DVB_SUBTITLE,    AV_CODEC_ID_TEXT,  ///< raw UTF-8 text    AV_CODEC_ID_XSUB,    AV_CODEC_ID_SSA,    AV_CODEC_ID_MOV_TEXT,    AV_CODEC_ID_HDMV_PGS_SUBTITLE,    AV_CODEC_ID_DVB_TELETEXT,    AV_CODEC_ID_SRT,     /* other specific kind of codecs (generally used for attachments) */    AV_CODEC_ID_FIRST_UNKNOWN = 0x18000,           ///< A dummy ID pointing at the start of various fake codecs.    AV_CODEC_ID_TTF = 0x18000,     AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it     AV_CODEC_ID_MPEG2TS = 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS                                * stream (only used by libavformat) */    AV_CODEC_ID_MPEG4SYSTEMS = 0x20001, /**< _FAKE_ codec to indicate a MPEG-4 Systems                                * stream (only used by libavformat) */    AV_CODEC_ID_FFMETADATA = 0x21000,   ///< Dummy codec for streams containing only metadata information.}; /** * This struct describes the properties of a single codec described by an * AVCodecID. * @see avcodec_get_descriptor() */typedef struct AVCodecDescriptor {    enum AVCodecID     id;    enum AVMediaType type;    /**     * Name of the codec described by this descriptor. It is non-empty and     * unique for each codec descriptor. It should contain alphanumeric     * characters and '_' only.     */    const char      *name;    /**     * A more descriptive name for this codec. May be NULL.     */    const char *long_name;    /**     * Codec properties, a combination of AV_CODEC_PROP_* flags.     */    int             props;} AVCodecDescriptor; /** * Codec uses only intra compression. * Video codecs only. */#define AV_CODEC_PROP_INTRA_ONLY    (1 << 0)/** * Codec supports lossy compression. Audio and video codecs only. * @note a codec may support both lossy and lossless * compression modes */#define AV_CODEC_PROP_LOSSY         (1 << 1)/** * Codec supports lossless compression. Audio and video codecs only. */#define AV_CODEC_PROP_LOSSLESS      (1 << 2) /** * @ingroup lavc_decoding * Required number of additionally allocated bytes at the end of the input bitstream for decoding. * This is mainly needed because some optimized bitstream readers read * 32 or 64 bit at once and could read over the end.<br> * Note: If the first 23 bits of the additional bytes are not 0, then damaged * MPEG bitstreams could cause overread and segfault. */#define FF_INPUT_BUFFER_PADDING_SIZE 8 /** * @ingroup lavc_encoding * minimum encoding buffer size * Used to avoid some checks during header writing. */#define FF_MIN_BUFFER_SIZE 16384  

Lines 1–500 of 4203.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t