3981 lines · 128.2 KB · C
RawDownload
/* * copyright (c) 2001 Fabrice Bellard * * This file is part of FFmpeg. * * FFmpeg 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. * * FFmpeg 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 FFmpeg; 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 * external API header */ #include <errno.h>#include "libavutil/avutil.h" #define LIBAVCODEC_VERSION_MAJOR 52#define LIBAVCODEC_VERSION_MINOR 72#define LIBAVCODEC_VERSION_MICRO  0 #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \                                               LIBAVCODEC_VERSION_MINOR, \                                               LIBAVCODEC_VERSION_MICRO)#define LIBAVCODEC_VERSION      AV_VERSION(LIBAVCODEC_VERSION_MAJOR,    \                                           LIBAVCODEC_VERSION_MINOR,    \                                           LIBAVCODEC_VERSION_MICRO)#define LIBAVCODEC_BUILD        LIBAVCODEC_VERSION_INT #define LIBAVCODEC_IDENT        "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION) #define AV_NOPTS_VALUE          INT64_C(0x8000000000000000)#define AV_TIME_BASE            1000000#define AV_TIME_BASE_Q          (AVRational){1, AV_TIME_BASE} /** * Identifies 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. */enum CodecID {    CODEC_ID_NONE,     /* video codecs */    CODEC_ID_MPEG1VIDEO,    CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding    CODEC_ID_MPEG2VIDEO_XVMC,    CODEC_ID_H261,    CODEC_ID_H263,    CODEC_ID_RV10,    CODEC_ID_RV20,    CODEC_ID_MJPEG,    CODEC_ID_MJPEGB,    CODEC_ID_LJPEG,    CODEC_ID_SP5X,    CODEC_ID_JPEGLS,    CODEC_ID_MPEG4,    CODEC_ID_RAWVIDEO,    CODEC_ID_MSMPEG4V1,    CODEC_ID_MSMPEG4V2,    CODEC_ID_MSMPEG4V3,    CODEC_ID_WMV1,    CODEC_ID_WMV2,    CODEC_ID_H263P,    CODEC_ID_H263I,    CODEC_ID_FLV1,    CODEC_ID_SVQ1,    CODEC_ID_SVQ3,    CODEC_ID_DVVIDEO,    CODEC_ID_HUFFYUV,    CODEC_ID_CYUV,    CODEC_ID_H264,    CODEC_ID_INDEO3,    CODEC_ID_VP3,    CODEC_ID_THEORA,    CODEC_ID_ASV1,    CODEC_ID_ASV2,    CODEC_ID_FFV1,    CODEC_ID_4XM,    CODEC_ID_VCR1,    CODEC_ID_CLJR,    CODEC_ID_MDEC,    CODEC_ID_ROQ,    CODEC_ID_INTERPLAY_VIDEO,    CODEC_ID_XAN_WC3,    CODEC_ID_XAN_WC4,    CODEC_ID_RPZA,    CODEC_ID_CINEPAK,    CODEC_ID_WS_VQA,    CODEC_ID_MSRLE,    CODEC_ID_MSVIDEO1,    CODEC_ID_IDCIN,    CODEC_ID_8BPS,    CODEC_ID_SMC,    CODEC_ID_FLIC,    CODEC_ID_TRUEMOTION1,    CODEC_ID_VMDVIDEO,    CODEC_ID_MSZH,    CODEC_ID_ZLIB,    CODEC_ID_QTRLE,    CODEC_ID_SNOW,    CODEC_ID_TSCC,    CODEC_ID_ULTI,    CODEC_ID_QDRAW,    CODEC_ID_VIXL,    CODEC_ID_QPEG,#if LIBAVCODEC_VERSION_MAJOR < 53    CODEC_ID_XVID,#endif    CODEC_ID_PNG,    CODEC_ID_PPM,    CODEC_ID_PBM,    CODEC_ID_PGM,    CODEC_ID_PGMYUV,    CODEC_ID_PAM,    CODEC_ID_FFVHUFF,    CODEC_ID_RV30,    CODEC_ID_RV40,    CODEC_ID_VC1,    CODEC_ID_WMV3,    CODEC_ID_LOCO,    CODEC_ID_WNV1,    CODEC_ID_AASC,    CODEC_ID_INDEO2,    CODEC_ID_FRAPS,    CODEC_ID_TRUEMOTION2,    CODEC_ID_BMP,    CODEC_ID_CSCD,    CODEC_ID_MMVIDEO,    CODEC_ID_ZMBV,    CODEC_ID_AVS,    CODEC_ID_SMACKVIDEO,    CODEC_ID_NUV,    CODEC_ID_KMVC,    CODEC_ID_FLASHSV,    CODEC_ID_CAVS,    CODEC_ID_JPEG2000,    CODEC_ID_VMNC,    CODEC_ID_VP5,    CODEC_ID_VP6,    CODEC_ID_VP6F,    CODEC_ID_TARGA,    CODEC_ID_DSICINVIDEO,    CODEC_ID_TIERTEXSEQVIDEO,    CODEC_ID_TIFF,    CODEC_ID_GIF,    CODEC_ID_FFH264,    CODEC_ID_DXA,    CODEC_ID_DNXHD,    CODEC_ID_THP,    CODEC_ID_SGI,    CODEC_ID_C93,    CODEC_ID_BETHSOFTVID,    CODEC_ID_PTX,    CODEC_ID_TXD,    CODEC_ID_VP6A,    CODEC_ID_AMV,    CODEC_ID_VB,    CODEC_ID_PCX,    CODEC_ID_SUNRAST,    CODEC_ID_INDEO4,    CODEC_ID_INDEO5,    CODEC_ID_MIMIC,    CODEC_ID_RL2,    CODEC_ID_8SVX_EXP,    CODEC_ID_8SVX_FIB,    CODEC_ID_ESCAPE124,    CODEC_ID_DIRAC,    CODEC_ID_BFI,    CODEC_ID_CMV,    CODEC_ID_MOTIONPIXELS,    CODEC_ID_TGV,    CODEC_ID_TGQ,    CODEC_ID_TQI,    CODEC_ID_AURA,    CODEC_ID_AURA2,    CODEC_ID_V210X,    CODEC_ID_TMV,    CODEC_ID_V210,    CODEC_ID_DPX,    CODEC_ID_MAD,    CODEC_ID_FRWU,    CODEC_ID_FLASHSV2,    CODEC_ID_CDGRAPHICS,    CODEC_ID_R210,    CODEC_ID_ANM,    CODEC_ID_BINKVIDEO,    CODEC_ID_IFF_ILBM,    CODEC_ID_IFF_BYTERUN1,    CODEC_ID_KGV1,    CODEC_ID_YOP,    CODEC_ID_VP8,     /* various PCM "codecs" */    CODEC_ID_PCM_S16LE= 0x10000,    CODEC_ID_PCM_S16BE,    CODEC_ID_PCM_U16LE,    CODEC_ID_PCM_U16BE,    CODEC_ID_PCM_S8,    CODEC_ID_PCM_U8,    CODEC_ID_PCM_MULAW,    CODEC_ID_PCM_ALAW,    CODEC_ID_PCM_S32LE,    CODEC_ID_PCM_S32BE,    CODEC_ID_PCM_U32LE,    CODEC_ID_PCM_U32BE,    CODEC_ID_PCM_S24LE,    CODEC_ID_PCM_S24BE,    CODEC_ID_PCM_U24LE,    CODEC_ID_PCM_U24BE,    CODEC_ID_PCM_S24DAUD,    CODEC_ID_PCM_ZORK,    CODEC_ID_PCM_S16LE_PLANAR,    CODEC_ID_PCM_DVD,    CODEC_ID_PCM_F32BE,    CODEC_ID_PCM_F32LE,    CODEC_ID_PCM_F64BE,    CODEC_ID_PCM_F64LE,    CODEC_ID_PCM_BLURAY,     /* various ADPCM codecs */    CODEC_ID_ADPCM_IMA_QT= 0x11000,    CODEC_ID_ADPCM_IMA_WAV,    CODEC_ID_ADPCM_IMA_DK3,    CODEC_ID_ADPCM_IMA_DK4,    CODEC_ID_ADPCM_IMA_WS,    CODEC_ID_ADPCM_IMA_SMJPEG,    CODEC_ID_ADPCM_MS,    CODEC_ID_ADPCM_4XM,    CODEC_ID_ADPCM_XA,    CODEC_ID_ADPCM_ADX,    CODEC_ID_ADPCM_EA,    CODEC_ID_ADPCM_G726,    CODEC_ID_ADPCM_CT,    CODEC_ID_ADPCM_SWF,    CODEC_ID_ADPCM_YAMAHA,    CODEC_ID_ADPCM_SBPRO_4,    CODEC_ID_ADPCM_SBPRO_3,    CODEC_ID_ADPCM_SBPRO_2,    CODEC_ID_ADPCM_THP,    CODEC_ID_ADPCM_IMA_AMV,    CODEC_ID_ADPCM_EA_R1,    CODEC_ID_ADPCM_EA_R3,    CODEC_ID_ADPCM_EA_R2,    CODEC_ID_ADPCM_IMA_EA_SEAD,    CODEC_ID_ADPCM_IMA_EA_EACS,    CODEC_ID_ADPCM_EA_XAS,    CODEC_ID_ADPCM_EA_MAXIS_XA,    CODEC_ID_ADPCM_IMA_ISS,     /* AMR */    CODEC_ID_AMR_NB= 0x12000,    CODEC_ID_AMR_WB,     /* RealAudio codecs*/    CODEC_ID_RA_144= 0x13000,    CODEC_ID_RA_288,     /* various DPCM codecs */    CODEC_ID_ROQ_DPCM= 0x14000,    CODEC_ID_INTERPLAY_DPCM,    CODEC_ID_XAN_DPCM,    CODEC_ID_SOL_DPCM,     /* audio codecs */    CODEC_ID_MP2= 0x15000,    CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3    CODEC_ID_AAC,    CODEC_ID_AC3,    CODEC_ID_DTS,    CODEC_ID_VORBIS,    CODEC_ID_DVAUDIO,    CODEC_ID_WMAV1,    CODEC_ID_WMAV2,    CODEC_ID_MACE3,    CODEC_ID_MACE6,    CODEC_ID_VMDAUDIO,    CODEC_ID_SONIC,    CODEC_ID_SONIC_LS,    CODEC_ID_FLAC,    CODEC_ID_MP3ADU,    CODEC_ID_MP3ON4,    CODEC_ID_SHORTEN,    CODEC_ID_ALAC,    CODEC_ID_WESTWOOD_SND1,    CODEC_ID_GSM, ///< as in Berlin toast format    CODEC_ID_QDM2,    CODEC_ID_COOK,    CODEC_ID_TRUESPEECH,    CODEC_ID_TTA,    CODEC_ID_SMACKAUDIO,    CODEC_ID_QCELP,    CODEC_ID_WAVPACK,    CODEC_ID_DSICINAUDIO,    CODEC_ID_IMC,    CODEC_ID_MUSEPACK7,    CODEC_ID_MLP,    CODEC_ID_GSM_MS, /* as found in WAV */    CODEC_ID_ATRAC3,    CODEC_ID_VOXWARE,    CODEC_ID_APE,    CODEC_ID_NELLYMOSER,    CODEC_ID_MUSEPACK8,    CODEC_ID_SPEEX,    CODEC_ID_WMAVOICE,    CODEC_ID_WMAPRO,    CODEC_ID_WMALOSSLESS,    CODEC_ID_ATRAC3P,    CODEC_ID_EAC3,    CODEC_ID_SIPR,    CODEC_ID_MP1,    CODEC_ID_TWINVQ,    CODEC_ID_TRUEHD,    CODEC_ID_MP4ALS,    CODEC_ID_ATRAC1,    CODEC_ID_BINKAUDIO_RDFT,    CODEC_ID_BINKAUDIO_DCT,     /* subtitle codecs */    CODEC_ID_DVD_SUBTITLE= 0x17000,    CODEC_ID_DVB_SUBTITLE,    CODEC_ID_TEXT,  ///< raw UTF-8 text    CODEC_ID_XSUB,    CODEC_ID_SSA,    CODEC_ID_MOV_TEXT,    CODEC_ID_HDMV_PGS_SUBTITLE,    CODEC_ID_DVB_TELETEXT,     /* other specific kind of codecs (generally used for attachments) */    CODEC_ID_TTF= 0x18000,     CODEC_ID_PROBE= 0x19000, ///< codec_id is not known (like CODEC_ID_NONE) but lavf should attempt to identify it     CODEC_ID_MPEG2TS= 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS                                * stream (only used by libavformat) */}; #if LIBAVCODEC_VERSION_MAJOR < 53#define CodecType AVMediaType #define CODEC_TYPE_UNKNOWN    AVMEDIA_TYPE_UNKNOWN#define CODEC_TYPE_VIDEO      AVMEDIA_TYPE_VIDEO#define CODEC_TYPE_AUDIO      AVMEDIA_TYPE_AUDIO#define CODEC_TYPE_DATA       AVMEDIA_TYPE_DATA#define CODEC_TYPE_SUBTITLE   AVMEDIA_TYPE_SUBTITLE#define CODEC_TYPE_ATTACHMENT AVMEDIA_TYPE_ATTACHMENT#define CODEC_TYPE_NB         AVMEDIA_TYPE_NB#endif /** * all in native-endian format */enum SampleFormat {    SAMPLE_FMT_NONE = -1,    SAMPLE_FMT_U8,              ///< unsigned 8 bits    SAMPLE_FMT_S16,             ///< signed 16 bits    SAMPLE_FMT_S32,             ///< signed 32 bits    SAMPLE_FMT_FLT,             ///< float    SAMPLE_FMT_DBL,             ///< double    SAMPLE_FMT_NB               ///< Number of sample formats. DO NOT USE if dynamically linking to libavcodec}; /* Audio channel masks */#define CH_FRONT_LEFT             0x00000001#define CH_FRONT_RIGHT            0x00000002#define CH_FRONT_CENTER           0x00000004#define CH_LOW_FREQUENCY          0x00000008#define CH_BACK_LEFT              0x00000010#define CH_BACK_RIGHT             0x00000020#define CH_FRONT_LEFT_OF_CENTER   0x00000040#define CH_FRONT_RIGHT_OF_CENTER  0x00000080#define CH_BACK_CENTER            0x00000100#define CH_SIDE_LEFT              0x00000200#define CH_SIDE_RIGHT             0x00000400#define CH_TOP_CENTER             0x00000800#define CH_TOP_FRONT_LEFT         0x00001000#define CH_TOP_FRONT_CENTER       0x00002000#define CH_TOP_FRONT_RIGHT        0x00004000#define CH_TOP_BACK_LEFT          0x00008000#define CH_TOP_BACK_CENTER        0x00010000#define CH_TOP_BACK_RIGHT         0x00020000#define CH_STEREO_LEFT            0x20000000  ///< Stereo downmix.#define CH_STEREO_RIGHT           0x40000000  ///< See CH_STEREO_LEFT. /** Channel mask value used for AVCodecContext.request_channel_layout    to indicate that the user requests the channel order of the decoder output    to be the native codec channel order. */#define CH_LAYOUT_NATIVE          0x8000000000000000LL /* Audio channel convenience macros */#define CH_LAYOUT_MONO              (CH_FRONT_CENTER)#define CH_LAYOUT_STEREO            (CH_FRONT_LEFT|CH_FRONT_RIGHT)#define CH_LAYOUT_2_1               (CH_LAYOUT_STEREO|CH_BACK_CENTER)#define CH_LAYOUT_SURROUND          (CH_LAYOUT_STEREO|CH_FRONT_CENTER)#define CH_LAYOUT_4POINT0           (CH_LAYOUT_SURROUND|CH_BACK_CENTER)#define CH_LAYOUT_2_2               (CH_LAYOUT_STEREO|CH_SIDE_LEFT|CH_SIDE_RIGHT)#define CH_LAYOUT_QUAD              (CH_LAYOUT_STEREO|CH_BACK_LEFT|CH_BACK_RIGHT)#define CH_LAYOUT_5POINT0           (CH_LAYOUT_SURROUND|CH_SIDE_LEFT|CH_SIDE_RIGHT)#define CH_LAYOUT_5POINT1           (CH_LAYOUT_5POINT0|CH_LOW_FREQUENCY)#define CH_LAYOUT_5POINT0_BACK      (CH_LAYOUT_SURROUND|CH_BACK_LEFT|CH_BACK_RIGHT)#define CH_LAYOUT_5POINT1_BACK      (CH_LAYOUT_5POINT0_BACK|CH_LOW_FREQUENCY)#define CH_LAYOUT_7POINT0           (CH_LAYOUT_5POINT0|CH_BACK_LEFT|CH_BACK_RIGHT)#define CH_LAYOUT_7POINT1           (CH_LAYOUT_5POINT1|CH_BACK_LEFT|CH_BACK_RIGHT)#define CH_LAYOUT_7POINT1_WIDE      (CH_LAYOUT_5POINT1_BACK|\                                          CH_FRONT_LEFT_OF_CENTER|CH_FRONT_RIGHT_OF_CENTER)#define CH_LAYOUT_STEREO_DOWNMIX    (CH_STEREO_LEFT|CH_STEREO_RIGHT) /* in bytes */#define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio /** * 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 /** * minimum encoding buffer size * Used to avoid some checks during header writing. */#define FF_MIN_BUFFER_SIZE 16384  /** * motion estimation type. */enum Motion_Est_ID {    ME_ZERO = 1,    ///< no search, that is use 0,0 vector whenever one is needed    ME_FULL,    ME_LOG,    ME_PHODS,    ME_EPZS,        ///< enhanced predictive zonal search    ME_X1,          ///< reserved for experiments    ME_HEX,         ///< hexagon based search    ME_UMH,         ///< uneven multi-hexagon search    ME_ITER,        ///< iterative search    ME_TESA,        ///< transformed exhaustive search algorithm}; enum AVDiscard{    /* We leave some space between them for extensions (drop some     * keyframes for intra-only or drop just some bidir frames). */    AVDISCARD_NONE   =-16, ///< discard nothing    AVDISCARD_DEFAULT=  0, ///< discard useless packets like 0 size packets in avi    AVDISCARD_NONREF =  8, ///< discard all non reference    AVDISCARD_BIDIR  = 16, ///< discard all bidirectional frames    AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes    AVDISCARD_ALL    = 48, ///< discard all}; enum AVColorPrimaries{    AVCOL_PRI_BT709      =1, ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B    AVCOL_PRI_UNSPECIFIED=2,    AVCOL_PRI_BT470M     =4,    AVCOL_PRI_BT470BG    =5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM    AVCOL_PRI_SMPTE170M  =6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC    AVCOL_PRI_SMPTE240M  =7, ///< functionally identical to above    AVCOL_PRI_FILM       =8,    AVCOL_PRI_NB           , ///< Not part of ABI}; enum AVColorTransferCharacteristic{    AVCOL_TRC_BT709      =1, ///< also ITU-R BT1361    AVCOL_TRC_UNSPECIFIED=2,    AVCOL_TRC_GAMMA22    =4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM    AVCOL_TRC_GAMMA28    =5, ///< also ITU-R BT470BG    AVCOL_TRC_NB           , ///< Not part of ABI}; enum AVColorSpace{    AVCOL_SPC_RGB        =0,    AVCOL_SPC_BT709      =1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B    AVCOL_SPC_UNSPECIFIED=2,    AVCOL_SPC_FCC        =4,    AVCOL_SPC_BT470BG    =5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601    AVCOL_SPC_SMPTE170M  =6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above

Lines 1–500 of 3981.

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