1/* 2 * copyright (c) 2001 Fabrice Bellard 3 * 4 * This file is part of FFmpeg. 5 * 6 * FFmpeg 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 * FFmpeg 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 FFmpeg; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 */ 20 21#ifndef AVCODEC_AVCODEC_H 22#define AVCODEC_AVCODEC_H 23 24/** 25 * @file 26 * external API header 27 */ 28 29#include <errno.h> 30#include "libavutil/avutil.h" 31 32#define LIBAVCODEC_VERSION_MAJOR 52 33#define LIBAVCODEC_VERSION_MINOR 72 34#define LIBAVCODEC_VERSION_MICRO 2 35 36#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ 37 LIBAVCODEC_VERSION_MINOR, \ 38 LIBAVCODEC_VERSION_MICRO) 39#define LIBAVCODEC_VERSION AV_VERSION(LIBAVCODEC_VERSION_MAJOR, \ 40 LIBAVCODEC_VERSION_MINOR, \ 41 LIBAVCODEC_VERSION_MICRO) 42#define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT 43 44#define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION) 45 46#define AV_NOPTS_VALUE INT64_C(0x8000000000000000) 47#define AV_TIME_BASE 1000000 48#define AV_TIME_BASE_Q (AVRational){1, AV_TIME_BASE} 49 50/** 51 * Identifies the syntax and semantics of the bitstream. 52 * The principle is roughly: 53 * Two decoders with the same ID can decode the same streams. 54 * Two encoders with the same ID can encode compatible streams. 55 * There may be slight deviations from the principle due to implementation 56 * details. 57 * 58 * If you add a codec ID to this list, add it so that 59 * 1. no value of a existing codec ID changes (that would break ABI), 60 * 2. it is as close as possible to similar codecs. 61 */ 62enum CodecID { 63 CODEC_ID_NONE, 64 65 /* video codecs */ 66 CODEC_ID_MPEG1VIDEO, 67 CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding 68 CODEC_ID_MPEG2VIDEO_XVMC, 69 CODEC_ID_H261, 70 CODEC_ID_H263, 71 CODEC_ID_RV10, 72 CODEC_ID_RV20, 73 CODEC_ID_MJPEG, 74 CODEC_ID_MJPEGB, 75 CODEC_ID_LJPEG, 76 CODEC_ID_SP5X, 77 CODEC_ID_JPEGLS, 78 CODEC_ID_MPEG4, 79 CODEC_ID_RAWVIDEO, 80 CODEC_ID_MSMPEG4V1, 81 CODEC_ID_MSMPEG4V2, 82 CODEC_ID_MSMPEG4V3, 83 CODEC_ID_WMV1, 84 CODEC_ID_WMV2, 85 CODEC_ID_H263P, 86 CODEC_ID_H263I, 87 CODEC_ID_FLV1, 88 CODEC_ID_SVQ1, 89 CODEC_ID_SVQ3, 90 CODEC_ID_DVVIDEO, 91 CODEC_ID_HUFFYUV, 92 CODEC_ID_CYUV, 93 CODEC_ID_H264, 94 CODEC_ID_INDEO3, 95 CODEC_ID_VP3, 96 CODEC_ID_THEORA, 97 CODEC_ID_ASV1, 98 CODEC_ID_ASV2, 99 CODEC_ID_FFV1, 100 CODEC_ID_4XM, 101 CODEC_ID_VCR1, 102 CODEC_ID_CLJR, 103 CODEC_ID_MDEC, 104 CODEC_ID_ROQ, 105 CODEC_ID_INTERPLAY_VIDEO, 106 CODEC_ID_XAN_WC3, 107 CODEC_ID_XAN_WC4, 108 CODEC_ID_RPZA, 109 CODEC_ID_CINEPAK, 110 CODEC_ID_WS_VQA, 111 CODEC_ID_MSRLE, 112 CODEC_ID_MSVIDEO1, 113 CODEC_ID_IDCIN, 114 CODEC_ID_8BPS, 115 CODEC_ID_SMC, 116 CODEC_ID_FLIC, 117 CODEC_ID_TRUEMOTION1, 118 CODEC_ID_VMDVIDEO, 119 CODEC_ID_MSZH, 120 CODEC_ID_ZLIB, 121 CODEC_ID_QTRLE, 122 CODEC_ID_SNOW, 123 CODEC_ID_TSCC, 124 CODEC_ID_ULTI, 125 CODEC_ID_QDRAW, 126 CODEC_ID_VIXL, 127 CODEC_ID_QPEG, 128#if LIBAVCODEC_VERSION_MAJOR < 53 129 CODEC_ID_XVID, 130#endif 131 CODEC_ID_PNG, 132 CODEC_ID_PPM, 133 CODEC_ID_PBM, 134 CODEC_ID_PGM, 135 CODEC_ID_PGMYUV, 136 CODEC_ID_PAM, 137 CODEC_ID_FFVHUFF, 138 CODEC_ID_RV30, 139 CODEC_ID_RV40, 140 CODEC_ID_VC1, 141 CODEC_ID_WMV3, 142 CODEC_ID_LOCO, 143 CODEC_ID_WNV1, 144 CODEC_ID_AASC, 145 CODEC_ID_INDEO2, 146 CODEC_ID_FRAPS, 147 CODEC_ID_TRUEMOTION2, 148 CODEC_ID_BMP, 149 CODEC_ID_CSCD, 150 CODEC_ID_MMVIDEO, 151 CODEC_ID_ZMBV, 152 CODEC_ID_AVS, 153 CODEC_ID_SMACKVIDEO, 154 CODEC_ID_NUV, 155 CODEC_ID_KMVC, 156 CODEC_ID_FLASHSV, 157 CODEC_ID_CAVS, 158 CODEC_ID_JPEG2000, 159 CODEC_ID_VMNC, 160 CODEC_ID_VP5, 161 CODEC_ID_VP6, 162 CODEC_ID_VP6F, 163 CODEC_ID_TARGA, 164 CODEC_ID_DSICINVIDEO, 165 CODEC_ID_TIERTEXSEQVIDEO, 166 CODEC_ID_TIFF, 167 CODEC_ID_GIF, 168 CODEC_ID_FFH264, 169 CODEC_ID_DXA, 170 CODEC_ID_DNXHD, 171 CODEC_ID_THP, 172 CODEC_ID_SGI, 173 CODEC_ID_C93, 174 CODEC_ID_BETHSOFTVID, 175 CODEC_ID_PTX, 176 CODEC_ID_TXD, 177 CODEC_ID_VP6A, 178 CODEC_ID_AMV, 179 CODEC_ID_VB, 180 CODEC_ID_PCX, 181 CODEC_ID_SUNRAST, 182 CODEC_ID_INDEO4, 183 CODEC_ID_INDEO5, 184 CODEC_ID_MIMIC, 185 CODEC_ID_RL2, 186 CODEC_ID_8SVX_EXP, 187 CODEC_ID_8SVX_FIB, 188 CODEC_ID_ESCAPE124, 189 CODEC_ID_DIRAC, 190 CODEC_ID_BFI, 191 CODEC_ID_CMV, 192 CODEC_ID_MOTIONPIXELS, 193 CODEC_ID_TGV, 194 CODEC_ID_TGQ, 195 CODEC_ID_TQI, 196 CODEC_ID_AURA, 197 CODEC_ID_AURA2, 198 CODEC_ID_V210X, 199 CODEC_ID_TMV, 200 CODEC_ID_V210, 201 CODEC_ID_DPX, 202 CODEC_ID_MAD, 203 CODEC_ID_FRWU, 204 CODEC_ID_FLASHSV2, 205 CODEC_ID_CDGRAPHICS, 206 CODEC_ID_R210, 207 CODEC_ID_ANM, 208 CODEC_ID_BINKVIDEO, 209 CODEC_ID_IFF_ILBM, 210 CODEC_ID_IFF_BYTERUN1, 211 CODEC_ID_KGV1, 212 CODEC_ID_YOP, 213 CODEC_ID_VP8, 214 215 /* various PCM "codecs" */ 216 CODEC_ID_PCM_S16LE= 0x10000, 217 CODEC_ID_PCM_S16BE, 218 CODEC_ID_PCM_U16LE, 219 CODEC_ID_PCM_U16BE, 220 CODEC_ID_PCM_S8, 221 CODEC_ID_PCM_U8, 222 CODEC_ID_PCM_MULAW, 223 CODEC_ID_PCM_ALAW, 224 CODEC_ID_PCM_S32LE, 225 CODEC_ID_PCM_S32BE, 226 CODEC_ID_PCM_U32LE, 227 CODEC_ID_PCM_U32BE, 228 CODEC_ID_PCM_S24LE, 229 CODEC_ID_PCM_S24BE, 230 CODEC_ID_PCM_U24LE, 231 CODEC_ID_PCM_U24BE, 232 CODEC_ID_PCM_S24DAUD, 233 CODEC_ID_PCM_ZORK, 234 CODEC_ID_PCM_S16LE_PLANAR, 235 CODEC_ID_PCM_DVD, 236 CODEC_ID_PCM_F32BE, 237 CODEC_ID_PCM_F32LE, 238 CODEC_ID_PCM_F64BE, 239 CODEC_ID_PCM_F64LE, 240 CODEC_ID_PCM_BLURAY, 241 242 /* various ADPCM codecs */ 243 CODEC_ID_ADPCM_IMA_QT= 0x11000, 244 CODEC_ID_ADPCM_IMA_WAV, 245 CODEC_ID_ADPCM_IMA_DK3, 246 CODEC_ID_ADPCM_IMA_DK4, 247 CODEC_ID_ADPCM_IMA_WS, 248 CODEC_ID_ADPCM_IMA_SMJPEG, 249 CODEC_ID_ADPCM_MS, 250 CODEC_ID_ADPCM_4XM, 251 CODEC_ID_ADPCM_XA, 252 CODEC_ID_ADPCM_ADX, 253 CODEC_ID_ADPCM_EA, 254 CODEC_ID_ADPCM_G726, 255 CODEC_ID_ADPCM_CT, 256 CODEC_ID_ADPCM_SWF, 257 CODEC_ID_ADPCM_YAMAHA, 258 CODEC_ID_ADPCM_SBPRO_4, 259 CODEC_ID_ADPCM_SBPRO_3, 260 CODEC_ID_ADPCM_SBPRO_2, 261 CODEC_ID_ADPCM_THP, 262 CODEC_ID_ADPCM_IMA_AMV, 263 CODEC_ID_ADPCM_EA_R1, 264 CODEC_ID_ADPCM_EA_R3, 265 CODEC_ID_ADPCM_EA_R2, 266 CODEC_ID_ADPCM_IMA_EA_SEAD, 267 CODEC_ID_ADPCM_IMA_EA_EACS, 268 CODEC_ID_ADPCM_EA_XAS, 269 CODEC_ID_ADPCM_EA_MAXIS_XA, 270 CODEC_ID_ADPCM_IMA_ISS, 271 272 /* AMR */ 273 CODEC_ID_AMR_NB= 0x12000, 274 CODEC_ID_AMR_WB, 275 276 /* RealAudio codecs*/ 277 CODEC_ID_RA_144= 0x13000, 278 CODEC_ID_RA_288, 279 280 /* various DPCM codecs */ 281 CODEC_ID_ROQ_DPCM= 0x14000, 282 CODEC_ID_INTERPLAY_DPCM, 283 CODEC_ID_XAN_DPCM, 284 CODEC_ID_SOL_DPCM, 285 286 /* audio codecs */ 287 CODEC_ID_MP2= 0x15000, 288 CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3 289 CODEC_ID_AAC, 290 CODEC_ID_AC3, 291 CODEC_ID_DTS, 292 CODEC_ID_VORBIS, 293 CODEC_ID_DVAUDIO, 294 CODEC_ID_WMAV1, 295 CODEC_ID_WMAV2, 296 CODEC_ID_MACE3, 297 CODEC_ID_MACE6, 298 CODEC_ID_VMDAUDIO, 299 CODEC_ID_SONIC, 300 CODEC_ID_SONIC_LS, 301 CODEC_ID_FLAC, 302 CODEC_ID_MP3ADU, 303 CODEC_ID_MP3ON4, 304 CODEC_ID_SHORTEN, 305 CODEC_ID_ALAC, 306 CODEC_ID_WESTWOOD_SND1, 307 CODEC_ID_GSM, ///< as in Berlin toast format 308 CODEC_ID_QDM2, 309 CODEC_ID_COOK, 310 CODEC_ID_TRUESPEECH, 311 CODEC_ID_TTA, 312 CODEC_ID_SMACKAUDIO, 313 CODEC_ID_QCELP, 314 CODEC_ID_WAVPACK, 315 CODEC_ID_DSICINAUDIO, 316 CODEC_ID_IMC, 317 CODEC_ID_MUSEPACK7, 318 CODEC_ID_MLP, 319 CODEC_ID_GSM_MS, /* as found in WAV */ 320 CODEC_ID_ATRAC3, 321 CODEC_ID_VOXWARE, 322 CODEC_ID_APE, 323 CODEC_ID_NELLYMOSER, 324 CODEC_ID_MUSEPACK8, 325 CODEC_ID_SPEEX, 326 CODEC_ID_WMAVOICE, 327 CODEC_ID_WMAPRO, 328 CODEC_ID_WMALOSSLESS, 329 CODEC_ID_ATRAC3P, 330 CODEC_ID_EAC3, 331 CODEC_ID_SIPR, 332 CODEC_ID_MP1, 333 CODEC_ID_TWINVQ, 334 CODEC_ID_TRUEHD, 335 CODEC_ID_MP4ALS, 336 CODEC_ID_ATRAC1, 337 CODEC_ID_BINKAUDIO_RDFT, 338 CODEC_ID_BINKAUDIO_DCT, 339 340 /* subtitle codecs */ 341 CODEC_ID_DVD_SUBTITLE= 0x17000, 342 CODEC_ID_DVB_SUBTITLE, 343 CODEC_ID_TEXT, ///< raw UTF-8 text 344 CODEC_ID_XSUB, 345 CODEC_ID_SSA, 346 CODEC_ID_MOV_TEXT, 347 CODEC_ID_HDMV_PGS_SUBTITLE, 348 CODEC_ID_DVB_TELETEXT, 349 350 /* other specific kind of codecs (generally used for attachments) */ 351 CODEC_ID_TTF= 0x18000, 352 353 CODEC_ID_PROBE= 0x19000, ///< codec_id is not known (like CODEC_ID_NONE) but lavf should attempt to identify it 354 355 CODEC_ID_MPEG2TS= 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS 356 * stream (only used by libavformat) */ 357}; 358 359#if LIBAVCODEC_VERSION_MAJOR < 53 360#define CodecType AVMediaType 361 362#define CODEC_TYPE_UNKNOWN AVMEDIA_TYPE_UNKNOWN 363#define CODEC_TYPE_VIDEO AVMEDIA_TYPE_VIDEO 364#define CODEC_TYPE_AUDIO AVMEDIA_TYPE_AUDIO 365#define CODEC_TYPE_DATA AVMEDIA_TYPE_DATA 366#define CODEC_TYPE_SUBTITLE AVMEDIA_TYPE_SUBTITLE 367#define CODEC_TYPE_ATTACHMENT AVMEDIA_TYPE_ATTACHMENT 368#define CODEC_TYPE_NB AVMEDIA_TYPE_NB 369#endif 370 371/** 372 * all in native-endian format 373 */ 374enum SampleFormat { 375 SAMPLE_FMT_NONE = -1, 376 SAMPLE_FMT_U8, ///< unsigned 8 bits 377 SAMPLE_FMT_S16, ///< signed 16 bits 378 SAMPLE_FMT_S32, ///< signed 32 bits 379 SAMPLE_FMT_FLT, ///< float 380 SAMPLE_FMT_DBL, ///< double 381 SAMPLE_FMT_NB ///< Number of sample formats. DO NOT USE if dynamically linking to libavcodec 382}; 383 384/* Audio channel masks */ 385#define CH_FRONT_LEFT 0x00000001 386#define CH_FRONT_RIGHT 0x00000002 387#define CH_FRONT_CENTER 0x00000004 388#define CH_LOW_FREQUENCY 0x00000008 389#define CH_BACK_LEFT 0x00000010 390#define CH_BACK_RIGHT 0x00000020 391#define CH_FRONT_LEFT_OF_CENTER 0x00000040 392#define CH_FRONT_RIGHT_OF_CENTER 0x00000080 393#define CH_BACK_CENTER 0x00000100 394#define CH_SIDE_LEFT 0x00000200 395#define CH_SIDE_RIGHT 0x00000400 396#define CH_TOP_CENTER 0x00000800 397#define CH_TOP_FRONT_LEFT 0x00001000 398#define CH_TOP_FRONT_CENTER 0x00002000 399#define CH_TOP_FRONT_RIGHT 0x00004000 400#define CH_TOP_BACK_LEFT 0x00008000 401#define CH_TOP_BACK_CENTER 0x00010000 402#define CH_TOP_BACK_RIGHT 0x00020000 403#define CH_STEREO_LEFT 0x20000000 ///< Stereo downmix. 404#define CH_STEREO_RIGHT 0x40000000 ///< See CH_STEREO_LEFT. 405 406/** Channel mask value used for AVCodecContext.request_channel_layout 407 to indicate that the user requests the channel order of the decoder output 408 to be the native codec channel order. */ 409#define CH_LAYOUT_NATIVE 0x8000000000000000LL 410 411/* Audio channel convenience macros */ 412#define CH_LAYOUT_MONO (CH_FRONT_CENTER) 413#define CH_LAYOUT_STEREO (CH_FRONT_LEFT|CH_FRONT_RIGHT) 414#define CH_LAYOUT_2_1 (CH_LAYOUT_STEREO|CH_BACK_CENTER) 415#define CH_LAYOUT_SURROUND (CH_LAYOUT_STEREO|CH_FRONT_CENTER) 416#define CH_LAYOUT_4POINT0 (CH_LAYOUT_SURROUND|CH_BACK_CENTER) 417#define CH_LAYOUT_2_2 (CH_LAYOUT_STEREO|CH_SIDE_LEFT|CH_SIDE_RIGHT) 418#define CH_LAYOUT_QUAD (CH_LAYOUT_STEREO|CH_BACK_LEFT|CH_BACK_RIGHT) 419#define CH_LAYOUT_5POINT0 (CH_LAYOUT_SURROUND|CH_SIDE_LEFT|CH_SIDE_RIGHT) 420#define CH_LAYOUT_5POINT1 (CH_LAYOUT_5POINT0|CH_LOW_FREQUENCY) 421#define CH_LAYOUT_5POINT0_BACK (CH_LAYOUT_SURROUND|CH_BACK_LEFT|CH_BACK_RIGHT) 422#define CH_LAYOUT_5POINT1_BACK (CH_LAYOUT_5POINT0_BACK|CH_LOW_FREQUENCY) 423#define CH_LAYOUT_7POINT0 (CH_LAYOUT_5POINT0|CH_BACK_LEFT|CH_BACK_RIGHT) 424#define CH_LAYOUT_7POINT1 (CH_LAYOUT_5POINT1|CH_BACK_LEFT|CH_BACK_RIGHT) 425#define CH_LAYOUT_7POINT1_WIDE (CH_LAYOUT_5POINT1_BACK|\ 426 CH_FRONT_LEFT_OF_CENTER|CH_FRONT_RIGHT_OF_CENTER) 427#define CH_LAYOUT_STEREO_DOWNMIX (CH_STEREO_LEFT|CH_STEREO_RIGHT) 428 429/* in bytes */ 430#define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio 431 432/** 433 * Required number of additionally allocated bytes at the end of the input bitstream for decoding. 434 * This is mainly needed because some optimized bitstream readers read 435 * 32 or 64 bit at once and could read over the end.<br> 436 * Note: If the first 23 bits of the additional bytes are not 0, then damaged 437 * MPEG bitstreams could cause overread and segfault. 438 */ 439#define FF_INPUT_BUFFER_PADDING_SIZE 8 440 441/** 442 * minimum encoding buffer size 443 * Used to avoid some checks during header writing. 444 */ 445#define FF_MIN_BUFFER_SIZE 16384 446 447 448/** 449 * motion estimation type. 450 */ 451enum Motion_Est_ID { 452 ME_ZERO = 1, ///< no search, that is use 0,0 vector whenever one is needed 453 ME_FULL, 454 ME_LOG, 455 ME_PHODS, 456 ME_EPZS, ///< enhanced predictive zonal search 457 ME_X1, ///< reserved for experiments 458 ME_HEX, ///< hexagon based search 459 ME_UMH, ///< uneven multi-hexagon search 460 ME_ITER, ///< iterative search 461 ME_TESA, ///< transformed exhaustive search algorithm 462}; 463 464enum AVDiscard{ 465 /* We leave some space between them for extensions (drop some 466 * keyframes for intra-only or drop just some bidir frames). */ 467 AVDISCARD_NONE =-16, ///< discard nothing 468 AVDISCARD_DEFAULT= 0, ///< discard useless packets like 0 size packets in avi 469 AVDISCARD_NONREF = 8, ///< discard all non reference 470 AVDISCARD_BIDIR = 16, ///< discard all bidirectional frames 471 AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes 472 AVDISCARD_ALL = 48, ///< discard all 473}; 474 475enum AVColorPrimaries{ 476 AVCOL_PRI_BT709 =1, ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B 477 AVCOL_PRI_UNSPECIFIED=2, 478 AVCOL_PRI_BT470M =4, 479 AVCOL_PRI_BT470BG =5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM 480 AVCOL_PRI_SMPTE170M =6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC 481 AVCOL_PRI_SMPTE240M =7, ///< functionally identical to above 482 AVCOL_PRI_FILM =8, 483 AVCOL_PRI_NB , ///< Not part of ABI 484}; 485 486enum AVColorTransferCharacteristic{ 487 AVCOL_TRC_BT709 =1, ///< also ITU-R BT1361 488 AVCOL_TRC_UNSPECIFIED=2, 489 AVCOL_TRC_GAMMA22 =4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM 490 AVCOL_TRC_GAMMA28 =5, ///< also ITU-R BT470BG 491 AVCOL_TRC_NB , ///< Not part of ABI 492}; 493 494enum AVColorSpace{ 495 AVCOL_SPC_RGB =0, 496 AVCOL_SPC_BT709 =1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B 497 AVCOL_SPC_UNSPECIFIED=2, 498 AVCOL_SPC_FCC =4, 499 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 500 AVCOL_SPC_SMPTE170M =6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above 501 AVCOL_SPC_SMPTE240M =7, 502 AVCOL_SPC_NB , ///< Not part of ABI 503}; 504 505enum AVColorRange{ 506 AVCOL_RANGE_UNSPECIFIED=0, 507 AVCOL_RANGE_MPEG =1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges 508 AVCOL_RANGE_JPEG =2, ///< the normal 2^n-1 "JPEG" YUV ranges 509 AVCOL_RANGE_NB , ///< Not part of ABI 510}; 511 512/** 513 * X X 3 4 X X are luma samples, 514 * 1 2 1-6 are possible chroma positions 515 * X X 5 6 X 0 is undefined/unknown position 516 */ 517enum AVChromaLocation{ 518 AVCHROMA_LOC_UNSPECIFIED=0, 519 AVCHROMA_LOC_LEFT =1, ///< mpeg2/4, h264 default 520 AVCHROMA_LOC_CENTER =2, ///< mpeg1, jpeg, h263 521 AVCHROMA_LOC_TOPLEFT =3, ///< DV 522 AVCHROMA_LOC_TOP =4, 523 AVCHROMA_LOC_BOTTOMLEFT =5, 524 AVCHROMA_LOC_BOTTOM =6, 525 AVCHROMA_LOC_NB , ///< Not part of ABI 526}; 527 528typedef struct RcOverride{ 529 int start_frame; 530 int end_frame; 531 int qscale; // If this is 0 then quality_factor will be used instead. 532 float quality_factor; 533} RcOverride; 534 535#define FF_MAX_B_FRAMES 16 536 537/* encoding support 538 These flags can be passed in AVCodecContext.flags before initialization. 539 Note: Not everything is supported yet. 540*/ 541 542#define CODEC_FLAG_QSCALE 0x0002 ///< Use fixed qscale. 543#define CODEC_FLAG_4MV 0x0004 ///< 4 MV per MB allowed / advanced prediction for H.263. 544#define CODEC_FLAG_QPEL 0x0010 ///< Use qpel MC. 545#define CODEC_FLAG_GMC 0x0020 ///< Use GMC. 546#define CODEC_FLAG_MV0 0x0040 ///< Always try a MB with MV=<0,0>. 547#define CODEC_FLAG_PART 0x0080 ///< Use data partitioning. 548/** 549 * The parent program guarantees that the input for B-frames containing 550 * streams is not written to for at least s->max_b_frames+1 frames, if 551 * this is not set the input will be copied. 552 */ 553#define CODEC_FLAG_INPUT_PRESERVED 0x0100 554#define CODEC_FLAG_PASS1 0x0200 ///< Use internal 2pass ratecontrol in first pass mode. 555#define CODEC_FLAG_PASS2 0x0400 ///< Use internal 2pass ratecontrol in second pass mode. 556#define CODEC_FLAG_EXTERN_HUFF 0x1000 ///< Use external Huffman table (for MJPEG). 557#define CODEC_FLAG_GRAY 0x2000 ///< Only decode/encode grayscale. 558#define CODEC_FLAG_EMU_EDGE 0x4000 ///< Don't draw edges. 559#define CODEC_FLAG_PSNR 0x8000 ///< error[?] variables will be set during encoding. 560#define CODEC_FLAG_TRUNCATED 0x00010000 /** Input bitstream might be truncated at a random 561 location instead of only at frame boundaries. */ 562#define CODEC_FLAG_NORMALIZE_AQP 0x00020000 ///< Normalize adaptive quantization. 563#define CODEC_FLAG_INTERLACED_DCT 0x00040000 ///< Use interlaced DCT. 564#define CODEC_FLAG_LOW_DELAY 0x00080000 ///< Force low delay. 565#define CODEC_FLAG_ALT_SCAN 0x00100000 ///< Use alternate scan. 566#define CODEC_FLAG_GLOBAL_HEADER 0x00400000 ///< Place global headers in extradata instead of every keyframe. 567#define CODEC_FLAG_BITEXACT 0x00800000 ///< Use only bitexact stuff (except (I)DCT). 568/* Fx : Flag for h263+ extra options */ 569#define CODEC_FLAG_AC_PRED 0x01000000 ///< H.263 advanced intra coding / MPEG-4 AC prediction 570#define CODEC_FLAG_H263P_UMV 0x02000000 ///< unlimited motion vector 571#define CODEC_FLAG_CBP_RD 0x04000000 ///< Use rate distortion optimization for cbp. 572#define CODEC_FLAG_QP_RD 0x08000000 ///< Use rate distortion optimization for qp selectioon. 573#define CODEC_FLAG_H263P_AIV 0x00000008 ///< H.263 alternative inter VLC 574#define CODEC_FLAG_OBMC 0x00000001 ///< OBMC 575#define CODEC_FLAG_LOOP_FILTER 0x00000800 ///< loop filter 576#define CODEC_FLAG_H263P_SLICE_STRUCT 0x10000000 577#define CODEC_FLAG_INTERLACED_ME 0x20000000 ///< interlaced motion estimation 578#define CODEC_FLAG_SVCD_SCAN_OFFSET 0x40000000 ///< Will reserve space for SVCD scan offset user data. 579#define CODEC_FLAG_CLOSED_GOP 0x80000000 580#define CODEC_FLAG2_FAST 0x00000001 ///< Allow non spec compliant speedup tricks. 581#define CODEC_FLAG2_STRICT_GOP 0x00000002 ///< Strictly enforce GOP size. 582#define CODEC_FLAG2_NO_OUTPUT 0x00000004 ///< Skip bitstream encoding. 583#define CODEC_FLAG2_LOCAL_HEADER 0x00000008 ///< Place global headers at every keyframe instead of in extradata. 584#define CODEC_FLAG2_BPYRAMID 0x00000010 ///< H.264 allow B-frames to be used as references. 585#define CODEC_FLAG2_WPRED 0x00000020 ///< H.264 weighted biprediction for B-frames 586#define CODEC_FLAG2_MIXED_REFS 0x00000040 ///< H.264 one reference per partition, as opposed to one reference per macroblock 587#define CODEC_FLAG2_8X8DCT 0x00000080 ///< H.264 high profile 8x8 transform 588#define CODEC_FLAG2_FASTPSKIP 0x00000100 ///< H.264 fast pskip 589#define CODEC_FLAG2_AUD 0x00000200 ///< H.264 access unit delimiters 590#define CODEC_FLAG2_BRDO 0x00000400 ///< B-frame rate-distortion optimization 591#define CODEC_FLAG2_INTRA_VLC 0x00000800 ///< Use MPEG-2 intra VLC table. 592#define CODEC_FLAG2_MEMC_ONLY 0x00001000 ///< Only do ME/MC (I frames -> ref, P frame -> ME+MC). 593#define CODEC_FLAG2_DROP_FRAME_TIMECODE 0x00002000 ///< timecode is in drop frame format. 594#define CODEC_FLAG2_SKIP_RD 0x00004000 ///< RD optimal MB level residual skipping 595#define CODEC_FLAG2_CHUNKS 0x00008000 ///< Input bitstream might be truncated at a packet boundaries instead of only at frame boundaries. 596#define CODEC_FLAG2_NON_LINEAR_QUANT 0x00010000 ///< Use MPEG-2 nonlinear quantizer. 597#define CODEC_FLAG2_BIT_RESERVOIR 0x00020000 ///< Use a bit reservoir when encoding if possible 598#define CODEC_FLAG2_MBTREE 0x00040000 ///< Use macroblock tree ratecontrol (x264 only) 599#define CODEC_FLAG2_PSY 0x00080000 ///< Use psycho visual optimizations. 600#define CODEC_FLAG2_SSIM 0x00100000 ///< Compute SSIM during encoding, error[] values are undefined. 601 602/* Unsupported options : 603 * Syntax Arithmetic coding (SAC) 604 * Reference Picture Selection 605 * Independent Segment Decoding */ 606/* /Fx */ 607/* codec capabilities */ 608 609#define CODEC_CAP_DRAW_HORIZ_BAND 0x0001 ///< Decoder can use draw_horiz_band callback. 610/** 611 * Codec uses get_buffer() for allocating buffers and supports custom allocators. 612 * If not set, it might not use get_buffer() at all or use operations that 613 * assume the buffer was allocated by avcodec_default_get_buffer. 614 */ 615#define CODEC_CAP_DR1 0x0002 616/* If 'parse_only' field is true, then avcodec_parse_frame() can be used. */ 617#define CODEC_CAP_PARSE_ONLY 0x0004 618#define CODEC_CAP_TRUNCATED 0x0008 619/* Codec can export data for HW decoding (XvMC). */ 620#define CODEC_CAP_HWACCEL 0x0010 621/** 622 * Codec has a nonzero delay and needs to be fed with NULL at the end to get the delayed data. 623 * If this is not set, the codec is guaranteed to never be fed with NULL data. 624 */ 625#define CODEC_CAP_DELAY 0x0020 626/** 627 * Codec can be fed a final frame with a smaller size. 628 * This can be used to prevent truncation of the last audio samples. 629 */ 630#define CODEC_CAP_SMALL_LAST_FRAME 0x0040 631/** 632 * Codec can export data for HW decoding (VDPAU). 633 */ 634#define CODEC_CAP_HWACCEL_VDPAU 0x0080 635/** 636 * Codec can output multiple frames per AVPacket 637 * Normally demuxers return one frame at a time, demuxers which do not do 638 * are connected to a parser to split what they return into proper frames. 639 * This flag is reserved to the very rare category of codecs which have a 640 * bitstream that cannot be split into frames without timeconsuming 641 * operations like full decoding. Demuxers carring such bitstreams thus 642 * may return multiple frames in a packet. This has many disadvantages like 643 * prohibiting stream copy in many cases thus it should only be considered 644 * as a last resort. 645 */ 646#define CODEC_CAP_SUBFRAMES 0x0100 647/** 648 * Codec is experimental and is thus avoided in favor of non experimental 649 * encoders 650 */ 651#define CODEC_CAP_EXPERIMENTAL 0x0200 652 653//The following defines may change, don't expect compatibility if you use them. 654#define MB_TYPE_INTRA4x4 0x0001 655#define MB_TYPE_INTRA16x16 0x0002 //FIXME H.264-specific 656#define MB_TYPE_INTRA_PCM 0x0004 //FIXME H.264-specific 657#define MB_TYPE_16x16 0x0008 658#define MB_TYPE_16x8 0x0010 659#define MB_TYPE_8x16 0x0020 660#define MB_TYPE_8x8 0x0040 661#define MB_TYPE_INTERLACED 0x0080 662#define MB_TYPE_DIRECT2 0x0100 //FIXME 663#define MB_TYPE_ACPRED 0x0200 664#define MB_TYPE_GMC 0x0400 665#define MB_TYPE_SKIP 0x0800 666#define MB_TYPE_P0L0 0x1000 667#define MB_TYPE_P1L0 0x2000 668#define MB_TYPE_P0L1 0x4000 669#define MB_TYPE_P1L1 0x8000 670#define MB_TYPE_L0 (MB_TYPE_P0L0 | MB_TYPE_P1L0) 671#define MB_TYPE_L1 (MB_TYPE_P0L1 | MB_TYPE_P1L1) 672#define MB_TYPE_L0L1 (MB_TYPE_L0 | MB_TYPE_L1) 673#define MB_TYPE_QUANT 0x00010000 674#define MB_TYPE_CBP 0x00020000 675//Note bits 24-31 are reserved for codec specific use (h264 ref0, mpeg1 0mv, ...) 676 677/** 678 * Pan Scan area. 679 * This specifies the area which should be displayed. 680 * Note there may be multiple such areas for one frame. 681 */ 682typedef struct AVPanScan{ 683 /** 684 * id 685 * - encoding: Set by user. 686 * - decoding: Set by libavcodec. 687 */ 688 int id; 689 690 /** 691 * width and height in 1/16 pel 692 * - encoding: Set by user. 693 * - decoding: Set by libavcodec. 694 */ 695 int width; 696 int height; 697 698 /** 699 * position of the top left corner in 1/16 pel for up to 3 fields/frames 700 * - encoding: Set by user. 701 * - decoding: Set by libavcodec. 702 */ 703 int16_t position[3][2]; 704}AVPanScan; 705 706#define FF_COMMON_FRAME \ 707 /**\ 708 * pointer to the picture planes.\ 709 * This might be different from the first allocated byte\ 710 * - encoding: \ 711 * - decoding: \ 712 */\ 713 uint8_t *data[4];\ 714 int linesize[4];\ 715 /**\ 716 * pointer to the first allocated byte of the picture. Can be used in get_buffer/release_buffer.\ 717 * This isn't used by libavcodec unless the default get/release_buffer() is used.\ 718 * - encoding: \ 719 * - decoding: \ 720 */\ 721 uint8_t *base[4];\ 722 /**\ 723 * 1 -> keyframe, 0-> not\ 724 * - encoding: Set by libavcodec.\ 725 * - decoding: Set by libavcodec.\ 726 */\ 727 int key_frame;\ 728\ 729 /**\ 730 * Picture type of the frame, see ?_TYPE below.\ 731 * - encoding: Set by libavcodec. for coded_picture (and set by user for input).\ 732 * - decoding: Set by libavcodec.\ 733 */\ 734 int pict_type;\ 735\ 736 /**\ 737 * presentation timestamp in time_base units (time when frame should be shown to user)\ 738 * If AV_NOPTS_VALUE then frame_rate = 1/time_base will be assumed.\ 739 * - encoding: MUST be set by user.\ 740 * - decoding: Set by libavcodec.\ 741 */\ 742 int64_t pts;\ 743\ 744 /**\ 745 * picture number in bitstream order\ 746 * - encoding: set by\ 747 * - decoding: Set by libavcodec.\ 748 */\ 749 int coded_picture_number;\ 750 /**\ 751 * picture number in display order\ 752 * - encoding: set by\ 753 * - decoding: Set by libavcodec.\ 754 */\ 755 int display_picture_number;\ 756\ 757 /**\ 758 * quality (between 1 (good) and FF_LAMBDA_MAX (bad)) \ 759 * - encoding: Set by libavcodec. for coded_picture (and set by user for input).\ 760 * - decoding: Set by libavcodec.\ 761 */\ 762 int quality; \ 763\ 764 /**\ 765 * buffer age (1->was last buffer and dint change, 2->..., ...).\ 766 * Set to INT_MAX if the buffer has not been used yet.\ 767 * - encoding: unused\ 768 * - decoding: MUST be set by get_buffer().\ 769 */\ 770 int age;\ 771\ 772 /**\ 773 * is this picture used as reference\ 774 * The values for this are the same as the MpegEncContext.picture_structure\ 775 * variable, that is 1->top field, 2->bottom field, 3->frame/both fields.\ 776 * Set to 4 for delayed, non-reference frames.\ 777 * - encoding: unused\ 778 * - decoding: Set by libavcodec. (before get_buffer() call)).\ 779 */\ 780 int reference;\ 781\ 782 /**\ 783 * QP table\ 784 * - encoding: unused\ 785 * - decoding: Set by libavcodec.\ 786 */\ 787 int8_t *qscale_table;\ 788 /**\ 789 * QP store stride\ 790 * - encoding: unused\ 791 * - decoding: Set by libavcodec.\ 792 */\ 793 int qstride;\ 794\ 795 /**\ 796 * mbskip_table[mb]>=1 if MB didn't change\ 797 * stride= mb_width = (width+15)>>4\ 798 * - encoding: unused\ 799 * - decoding: Set by libavcodec.\ 800 */\ 801 uint8_t *mbskip_table;\ 802\ 803 /**\ 804 * motion vector table\ 805 * @code\ 806 * example:\ 807 * int mv_sample_log2= 4 - motion_subsample_log2;\ 808 * int mb_width= (width+15)>>4;\ 809 * int mv_stride= (mb_width << mv_sample_log2) + 1;\ 810 * motion_val[direction][x + y*mv_stride][0->mv_x, 1->mv_y];\ 811 * @endcode\ 812 * - encoding: Set by user.\ 813 * - decoding: Set by libavcodec.\ 814 */\ 815 int16_t (*motion_val[2])[2];\ 816\ 817 /**\ 818 * macroblock type table\ 819 * mb_type_base + mb_width + 2\ 820 * - encoding: Set by user.\ 821 * - decoding: Set by libavcodec.\ 822 */\ 823 uint32_t *mb_type;\ 824\ 825 /**\ 826 * log2 of the size of the block which a single vector in motion_val represents: \ 827 * (4->16x16, 3->8x8, 2-> 4x4, 1-> 2x2)\ 828 * - encoding: unused\ 829 * - decoding: Set by libavcodec.\ 830 */\ 831 uint8_t motion_subsample_log2;\ 832\ 833 /**\ 834 * for some private data of the user\ 835 * - encoding: unused\ 836 * - decoding: Set by user.\ 837 */\ 838 void *opaque;\ 839\ 840 /**\ 841 * error\ 842 * - encoding: Set by libavcodec. if flags&CODEC_FLAG_PSNR.\ 843 * - decoding: unused\ 844 */\ 845 uint64_t error[4];\ 846\ 847 /**\ 848 * type of the buffer (to keep track of who has to deallocate data[*])\ 849 * - encoding: Set by the one who allocates it.\ 850 * - decoding: Set by the one who allocates it.\ 851 * Note: User allocated (direct rendering) & internal buffers cannot coexist currently.\ 852 */\ 853 int type;\ 854 \ 855 /**\ 856 * When decoding, this signals how much the picture must be delayed.\ 857 * extra_delay = repeat_pict / (2*fps)\ 858 * - encoding: unused\ 859 * - decoding: Set by libavcodec.\ 860 */\ 861 int repeat_pict;\ 862 \ 863 /**\ 864 * \ 865 */\ 866 int qscale_type;\ 867 \ 868 /**\ 869 * The content of the picture is interlaced.\ 870 * - encoding: Set by user.\ 871 * - decoding: Set by libavcodec. (default 0)\ 872 */\ 873 int interlaced_frame;\ 874 \ 875 /**\ 876 * If the content is interlaced, is top field displayed first.\ 877 * - encoding: Set by user.\ 878 * - decoding: Set by libavcodec.\ 879 */\ 880 int top_field_first;\ 881 \ 882 /**\ 883 * Pan scan.\ 884 * - encoding: Set by user.\ 885 * - decoding: Set by libavcodec.\ 886 */\ 887 AVPanScan *pan_scan;\ 888 \ 889 /**\ 890 * Tell user application that palette has changed from previous frame.\ 891 * - encoding: ??? (no palette-enabled encoder yet)\ 892 * - decoding: Set by libavcodec. (default 0).\ 893 */\ 894 int palette_has_changed;\ 895 \ 896 /**\ 897 * codec suggestion on buffer type if != 0\ 898 * - encoding: unused\ 899 * - decoding: Set by libavcodec. (before get_buffer() call)).\ 900 */\ 901 int buffer_hints;\ 902\ 903 /**\ 904 * DCT coefficients\ 905 * - encoding: unused\ 906 * - decoding: Set by libavcodec.\ 907 */\ 908 short *dct_coeff;\ 909\ 910 /**\ 911 * motion reference frame index\ 912 * the order in which these are stored can depend on the codec.\ 913 * - encoding: Set by user.\ 914 * - decoding: Set by libavcodec.\ 915 */\ 916 int8_t *ref_index[2];\ 917\ 918 /**\ 919 * reordered opaque 64bit number (generally a PTS) from AVCodecContext.reordered_opaque\ 920 * output in AVFrame.reordered_opaque\ 921 * - encoding: unused\ 922 * - decoding: Read by user.\ 923 */\ 924 int64_t reordered_opaque;\ 925\ 926 /**\ 927 * hardware accelerator private data (FFmpeg allocated)\ 928 * - encoding: unused\ 929 * - decoding: Set by libavcodec\ 930 */\ 931 void *hwaccel_picture_private;\ 932 933 934#define FF_QSCALE_TYPE_MPEG1 0 935#define FF_QSCALE_TYPE_MPEG2 1 936#define FF_QSCALE_TYPE_H264 2 937#define FF_QSCALE_TYPE_VP56 3 938 939#define FF_BUFFER_TYPE_INTERNAL 1 940#define FF_BUFFER_TYPE_USER 2 ///< direct rendering buffers (image is (de)allocated by user) 941#define FF_BUFFER_TYPE_SHARED 4 ///< Buffer from somewhere else; don't deallocate image (data/base), all other tables are not shared. 942#define FF_BUFFER_TYPE_COPY 8 ///< Just a (modified) copy of some other buffer, don't deallocate anything. 943 944 945#define FF_I_TYPE 1 ///< Intra 946#define FF_P_TYPE 2 ///< Predicted 947#define FF_B_TYPE 3 ///< Bi-dir predicted 948#define FF_S_TYPE 4 ///< S(GMC)-VOP MPEG4 949#define FF_SI_TYPE 5 ///< Switching Intra 950#define FF_SP_TYPE 6 ///< Switching Predicted 951#define FF_BI_TYPE 7 952 953#define FF_BUFFER_HINTS_VALID 0x01 // Buffer hints value is meaningful (if 0 ignore). 954#define FF_BUFFER_HINTS_READABLE 0x02 // Codec will read from buffer. 955#define FF_BUFFER_HINTS_PRESERVE 0x04 // User must not alter buffer content. 956#define FF_BUFFER_HINTS_REUSABLE 0x08 // Codec will reuse the buffer (update). 957 958typedef struct AVPacket { 959 /** 960 * Presentation timestamp in AVStream->time_base units; the time at which 961 * the decompressed packet will be presented to the user. 962 * Can be AV_NOPTS_VALUE if it is not stored in the file. 963 * pts MUST be larger or equal to dts as presentation cannot happen before 964 * decompression, unless one wants to view hex dumps. Some formats misuse 965 * the terms dts and pts/cts to mean something different. Such timestamps 966 * must be converted to true pts/dts before they are stored in AVPacket. 967 */ 968 int64_t pts; 969 /** 970 * Decompression timestamp in AVStream->time_base units; the time at which 971 * the packet is decompressed. 972 * Can be AV_NOPTS_VALUE if it is not stored in the file. 973 */ 974 int64_t dts; 975 uint8_t *data; 976 int size; 977 int stream_index; 978 int flags; 979 /** 980 * Duration of this packet in AVStream->time_base units, 0 if unknown. 981 * Equals next_pts - this_pts in presentation order. 982 */ 983 int duration; 984 void (*destruct)(struct AVPacket *); 985 void *priv; 986 int64_t pos; ///< byte position in stream, -1 if unknown 987 988 /** 989 * Time difference in AVStream->time_base units from the pts of this 990 * packet to the point at which the output from the decoder has converged 991 * independent from the availability of previous frames. That is, the 992 * frames are virtually identical no matter if decoding started from 993 * the very first frame or from this keyframe. 994 * Is AV_NOPTS_VALUE if unknown. 995 * This field is not the display duration of the current packet. 996 * 997 * The purpose of this field is to allow seeking in streams that have no 998 * keyframes in the conventional sense. It corresponds to the 999 * recovery point SEI in H.264 and match_time_delta in NUT. It is also 1000 * essential for some types of subtitle streams to ensure that all 1001 * subtitles are correctly displayed after seeking. 1002 */ 1003 int64_t convergence_duration; 1004} AVPacket; 1005#define AV_PKT_FLAG_KEY 0x0001 1006#if LIBAVCODEC_VERSION_MAJOR < 53 1007#define PKT_FLAG_KEY AV_PKT_FLAG_KEY 1008#endif 1009 1010/** 1011 * Audio Video Frame. 1012 * New fields can be added to the end of FF_COMMON_FRAME with minor version 1013 * bumps. 1014 * Removal, reordering and changes to existing fields require a major 1015 * version bump. No fields should be added into AVFrame before or after 1016 * FF_COMMON_FRAME! 1017 * sizeof(AVFrame) must not be used outside libav*. 1018 */ 1019typedef struct AVFrame { 1020 FF_COMMON_FRAME 1021} AVFrame; 1022 1023/** 1024 * main external API structure. 1025 * New fields can be added to the end with minor version bumps. 1026 * Removal, reordering and changes to existing fields require a major 1027 * version bump. 1028 * sizeof(AVCodecContext) must not be used outside libav*. 1029 */ 1030typedef struct AVCodecContext { 1031 /** 1032 * information on struct for av_log 1033 * - set by avcodec_alloc_context 1034 */ 1035 const AVClass *av_class; 1036 /** 1037 * the average bitrate 1038 * - encoding: Set by user; unused for constant quantizer encoding. 1039 * - decoding: Set by libavcodec. 0 or some bitrate if this info is available in the stream. 1040 */ 1041 int bit_rate; 1042 1043 /** 1044 * number of bits the bitstream is allowed to diverge from the reference. 1045 * the reference can be CBR (for CBR pass1) or VBR (for pass2) 1046 * - encoding: Set by user; unused for constant quantizer encoding. 1047 * - decoding: unused 1048 */ 1049 int bit_rate_tolerance; 1050 1051 /** 1052 * CODEC_FLAG_*. 1053 * - encoding: Set by user. 1054 * - decoding: Set by user. 1055 */ 1056 int flags; 1057 1058 /** 1059 * Some codecs need additional format info. It is stored here. 1060 * If any muxer uses this then ALL demuxers/parsers AND encoders for the 1061 * specific codec MUST set it correctly otherwise stream copy breaks. 1062 * In general use of this field by muxers is not recommanded. 1063 * - encoding: Set by libavcodec. 1064 * - decoding: Set by libavcodec. (FIXME: Is this OK?) 1065 */ 1066 int sub_id; 1067 1068 /** 1069 * Motion estimation algorithm used for video coding. 1070 * 1 (zero), 2 (full), 3 (log), 4 (phods), 5 (epzs), 6 (x1), 7 (hex), 1071 * 8 (umh), 9 (iter), 10 (tesa) [7, 8, 10 are x264 specific, 9 is snow specific] 1072 * - encoding: MUST be set by user. 1073 * - decoding: unused 1074 */ 1075 int me_method; 1076 1077 /** 1078 * some codecs need / can use extradata like Huffman tables. 1079 * mjpeg: Huffman tables 1080 * rv10: additional flags 1081 * mpeg4: global headers (they can be in the bitstream or here) 1082 * The allocated memory should be FF_INPUT_BUFFER_PADDING_SIZE bytes larger 1083 * than extradata_size to avoid prolems if it is read with the bitstream reader. 1084 * The bytewise contents of extradata must not depend on the architecture or CPU endianness. 1085 * - encoding: Set/allocated/freed by libavcodec. 1086 * - decoding: Set/allocated/freed by user. 1087 */ 1088 uint8_t *extradata; 1089 int extradata_size; 1090 1091 /** 1092 * This is the fundamental unit of time (in seconds) in terms 1093 * of which frame timestamps are represented. For fixed-fps content, 1094 * timebase should be 1/framerate and timestamp increments should be 1095 * identically 1. 1096 * - encoding: MUST be set by user. 1097 * - decoding: Set by libavcodec. 1098 */ 1099 AVRational time_base; 1100 1101 /* video only */ 1102 /** 1103 * picture width / height. 1104 * - encoding: MUST be set by user. 1105 * - decoding: Set by libavcodec. 1106 * Note: For compatibility it is possible to set this instead of 1107 * coded_width/height before decoding. 1108 */ 1109 int width, height; 1110 1111#define FF_ASPECT_EXTENDED 15 1112 1113 /** 1114 * the number of pictures in a group of pictures, or 0 for intra_only 1115 * - encoding: Set by user. 1116 * - decoding: unused 1117 */ 1118 int gop_size; 1119 1120 /** 1121 * Pixel format, see PIX_FMT_xxx. 1122 * - encoding: Set by user. 1123 * - decoding: Set by libavcodec. 1124 */ 1125 enum PixelFormat pix_fmt; 1126 1127 /** 1128 * Frame rate emulation. If not zero, the lower layer (i.e. format handler) 1129 * has to read frames at native frame rate. 1130 * - encoding: Set by user. 1131 * - decoding: unused 1132 */ 1133 int rate_emu; 1134 1135 /** 1136 * If non NULL, 'draw_horiz_band' is called by the libavcodec 1137 * decoder to draw a horizontal band. It improves cache usage. Not 1138 * all codecs can do that. You must check the codec capabilities 1139 * beforehand. 1140 * The function is also used by hardware acceleration APIs. 1141 * It is called at least once during frame decoding to pass 1142 * the data needed for hardware render. 1143 * In that mode instead of pixel data, AVFrame points to 1144 * a structure specific to the acceleration API. The application 1145 * reads the structure and can change some fields to indicate progress 1146 * or mark state. 1147 * - encoding: unused 1148 * - decoding: Set by user. 1149 * @param height the height of the slice 1150 * @param y the y position of the slice 1151 * @param type 1->top field, 2->bottom field, 3->frame 1152 * @param offset offset into the AVFrame.data from which the slice should be read 1153 */ 1154 void (*draw_horiz_band)(struct AVCodecContext *s, 1155 const AVFrame *src, int offset[4], 1156 int y, int type, int height); 1157 1158 /* audio only */ 1159 int sample_rate; ///< samples per second 1160 int channels; ///< number of audio channels 1161 1162 /** 1163 * audio sample format 1164 * - encoding: Set by user. 1165 * - decoding: Set by libavcodec. 1166 */ 1167 enum SampleFormat sample_fmt; ///< sample format 1168 1169 /* The following data should not be initialized. */ 1170 /** 1171 * Samples per packet, initialized when calling 'init'. 1172 */ 1173 int frame_size; 1174 int frame_number; ///< audio or video frame number 1175#if LIBAVCODEC_VERSION_MAJOR < 53 1176 int real_pict_num; ///< Returns the real picture number of previous encoded frame. 1177#endif 1178 1179 /** 1180 * Number of frames the decoded output will be delayed relative to 1181 * the encoded input. 1182 * - encoding: Set by libavcodec. 1183 * - decoding: unused 1184 */ 1185 int delay; 1186 1187 /* - encoding parameters */ 1188 float qcompress; ///< amount of qscale change between easy & hard scenes (0.0-1.0) 1189 float qblur; ///< amount of qscale smoothing over time (0.0-1.0) 1190 1191 /** 1192 * minimum quantizer 1193 * - encoding: Set by user. 1194 * - decoding: unused 1195 */ 1196 int qmin; 1197 1198 /** 1199 * maximum quantizer 1200 * - encoding: Set by user. 1201 * - decoding: unused 1202 */ 1203 int qmax; 1204 1205 /** 1206 * maximum quantizer difference between frames 1207 * - encoding: Set by user. 1208 * - decoding: unused 1209 */ 1210 int max_qdiff; 1211 1212 /** 1213 * maximum number of B-frames between non-B-frames 1214 * Note: The output will be delayed by max_b_frames+1 relative to the input. 1215 * - encoding: Set by user. 1216 * - decoding: unused 1217 */ 1218 int max_b_frames; 1219 1220 /** 1221 * qscale factor between IP and B-frames 1222 * If > 0 then the last P-frame quantizer will be used (q= lastp_q*factor+offset). 1223 * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset). 1224 * - encoding: Set by user. 1225 * - decoding: unused 1226 */ 1227 float b_quant_factor; 1228 1229 /** obsolete FIXME remove */ 1230 int rc_strategy; 1231#define FF_RC_STRATEGY_XVID 1 1232 1233 int b_frame_strategy; 1234 1235 /** 1236 * hurry up amount 1237 * - encoding: unused 1238 * - decoding: Set by user. 1-> Skip B-frames, 2-> Skip IDCT/dequant too, 5-> Skip everything except header 1239 * @deprecated Deprecated in favor of skip_idct and skip_frame. 1240 */ 1241 int hurry_up; 1242 1243 struct AVCodec *codec; 1244 1245 void *priv_data; 1246 1247 int rtp_payload_size; /* The size of the RTP payload: the coder will */ 1248 /* do its best to deliver a chunk with size */ 1249 /* below rtp_payload_size, the chunk will start */ 1250 /* with a start code on some codecs like H.263. */ 1251 /* This doesn't take account of any particular */ 1252 /* headers inside the transmitted RTP payload. */ 1253 1254 1255 /* The RTP callback: This function is called */ 1256 /* every time the encoder has a packet to send. */ 1257 /* It depends on the encoder if the data starts */ 1258 /* with a Start Code (it should). H.263 does. */ 1259 /* mb_nb contains the number of macroblocks */ 1260 /* encoded in the RTP payload. */ 1261 void (*rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int mb_nb); 1262 1263 /* statistics, used for 2-pass encoding */ 1264 int mv_bits; 1265 int header_bits; 1266 int i_tex_bits; 1267 int p_tex_bits; 1268 int i_count; 1269 int p_count; 1270 int skip_count; 1271 int misc_bits; 1272 1273 /** 1274 * number of bits used for the previously encoded frame 1275 * - encoding: Set by libavcodec. 1276 * - decoding: unused 1277 */ 1278 int frame_bits; 1279 1280 /** 1281 * Private data of the user, can be used to carry app specific stuff. 1282 * - encoding: Set by user. 1283 * - decoding: Set by user. 1284 */ 1285 void *opaque; 1286 1287 char codec_name[32]; 1288 enum AVMediaType codec_type; /* see AVMEDIA_TYPE_xxx */ 1289 enum CodecID codec_id; /* see CODEC_ID_xxx */ 1290 1291 /** 1292 * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A'). 1293 * This is used to work around some encoder bugs. 1294 * A demuxer should set this to what is stored in the field used to identify the codec. 1295 * If there are multiple such fields in a container then the demuxer should choose the one 1296 * which maximizes the information about the used codec. 1297 * If the codec tag field in a container is larger then 32 bits then the demuxer should 1298 * remap the longer ID to 32 bits with a table or other structure. Alternatively a new 1299 * extra_codec_tag + size could be added but for this a clear advantage must be demonstrated 1300 * first. 1301 * - encoding: Set by user, if not then the default based on codec_id will be used. 1302 * - decoding: Set by user, will be converted to uppercase by libavcodec during init. 1303 */ 1304 unsigned int codec_tag; 1305 1306 /** 1307 * Work around bugs in encoders which sometimes cannot be detected automatically. 1308 * - encoding: Set by user 1309 * - decoding: Set by user 1310 */ 1311 int workaround_bugs; 1312#define FF_BUG_AUTODETECT 1 ///< autodetection 1313#define FF_BUG_OLD_MSMPEG4 2 1314#define FF_BUG_XVID_ILACE 4 1315#define FF_BUG_UMP4 8 1316#define FF_BUG_NO_PADDING 16 1317#define FF_BUG_AMV 32 1318#define FF_BUG_AC_VLC 0 ///< Will be removed, libavcodec can now handle these non-compliant files by default. 1319#define FF_BUG_QPEL_CHROMA 64 1320#define FF_BUG_STD_QPEL 128 1321#define FF_BUG_QPEL_CHROMA2 256 1322#define FF_BUG_DIRECT_BLOCKSIZE 512 1323#define FF_BUG_EDGE 1024 1324#define FF_BUG_HPEL_CHROMA 2048 1325#define FF_BUG_DC_CLIP 4096 1326#define FF_BUG_MS 8192 ///< Work around various bugs in Microsoft's broken decoders. 1327#define FF_BUG_TRUNCATED 16384 1328//#define FF_BUG_FAKE_SCALABILITY 16 //Autodetection should work 100%. 1329 1330 /** 1331 * luma single coefficient elimination threshold 1332 * - encoding: Set by user. 1333 * - decoding: unused 1334 */ 1335 int luma_elim_threshold; 1336 1337 /** 1338 * chroma single coeff elimination threshold 1339 * - encoding: Set by user. 1340 * - decoding: unused 1341 */ 1342 int chroma_elim_threshold; 1343 1344 /** 1345 * strictly follow the standard (MPEG4, ...). 1346 * - encoding: Set by user. 1347 * - decoding: Set by user. 1348 * Setting this to STRICT or higher means the encoder and decoder will 1349 * generally do stupid things. While setting it to inofficial or lower 1350 * will mean the encoder might use things that are not supported by all 1351 * spec compliant decoders. Decoders make no difference between normal, 1352 * inofficial and experimental, that is they always try to decode things 1353 * when they can unless they are explicitly asked to behave stupid 1354 * (=strictly conform to the specs) 1355 */ 1356 int strict_std_compliance; 1357#define FF_COMPLIANCE_VERY_STRICT 2 ///< Strictly conform to a older more strict version of the spec or reference software. 1358#define FF_COMPLIANCE_STRICT 1 ///< Strictly conform to all the things in the spec no matter what consequences. 1359#define FF_COMPLIANCE_NORMAL 0 1360#define FF_COMPLIANCE_INOFFICIAL -1 ///< Allow inofficial extensions. 1361#define FF_COMPLIANCE_EXPERIMENTAL -2 ///< Allow nonstandardized experimental things. 1362 1363 /** 1364 * qscale offset between IP and B-frames 1365 * - encoding: Set by user. 1366 * - decoding: unused 1367 */ 1368 float b_quant_offset; 1369 1370 /** 1371 * Error recognization; higher values will detect more errors but may 1372 * misdetect some more or less valid parts as errors. 1373 * - encoding: unused 1374 * - decoding: Set by user. 1375 */ 1376 int error_recognition; 1377#define FF_ER_CAREFUL 1 1378#define FF_ER_COMPLIANT 2 1379#define FF_ER_AGGRESSIVE 3 1380#define FF_ER_VERY_AGGRESSIVE 4 1381 1382 /** 1383 * Called at the beginning of each frame to get a buffer for it. 1384 * If pic.reference is set then the frame will be read later by libavcodec. 1385 * avcodec_align_dimensions2() should be used to find the required width and 1386 * height, as they normally need to be rounded up to the next multiple of 16. 1387 * if CODEC_CAP_DR1 is not set then get_buffer() must call 1388 * avcodec_default_get_buffer() instead of providing buffers allocated by 1389 * some other means. 1390 * - encoding: unused 1391 * - decoding: Set by libavcodec., user can override. 1392 */ 1393 int (*get_buffer)(struct AVCodecContext *c, AVFrame *pic); 1394 1395 /** 1396 * Called to release buffers which were allocated with get_buffer. 1397 * A released buffer can be reused in get_buffer(). 1398 * pic.data[*] must be set to NULL. 1399 * - encoding: unused 1400 * - decoding: Set by libavcodec., user can override. 1401 */ 1402 void (*release_buffer)(struct AVCodecContext *c, AVFrame *pic); 1403 1404 /** 1405 * Size of the frame reordering buffer in the decoder. 1406 * For MPEG-2 it is 1 IPB or 0 low delay IP. 1407 * - encoding: Set by libavcodec. 1408 * - decoding: Set by libavcodec. 1409 */ 1410 int has_b_frames; 1411 1412 /** 1413 * number of bytes per packet if constant and known or 0 1414 * Used by some WAV based audio codecs. 1415 */ 1416 int block_align; 1417 1418 int parse_only; /* - decoding only: If true, only parsing is done 1419 (function avcodec_parse_frame()). The frame 1420 data is returned. Only MPEG codecs support this now. */ 1421 1422 /** 1423 * 0-> h263 quant 1-> mpeg quant 1424 * - encoding: Set by user. 1425 * - decoding: unused 1426 */ 1427 int mpeg_quant; 1428 1429 /** 1430 * pass1 encoding statistics output buffer 1431 * - encoding: Set by libavcodec. 1432 * - decoding: unused 1433 */ 1434 char *stats_out; 1435 1436 /** 1437 * pass2 encoding statistics input buffer 1438 * Concatenated stuff from stats_out of pass1 should be placed here. 1439 * - encoding: Allocated/set/freed by user. 1440 * - decoding: unused 1441 */ 1442 char *stats_in; 1443 1444 /** 1445 * ratecontrol qmin qmax limiting method 1446 * 0-> clipping, 1-> use a nice continous function to limit qscale wthin qmin/qmax. 1447 * - encoding: Set by user. 1448 * - decoding: unused 1449 */ 1450 float rc_qsquish; 1451 1452 float rc_qmod_amp; 1453 int rc_qmod_freq; 1454 1455 /** 1456 * ratecontrol override, see RcOverride 1457 * - encoding: Allocated/set/freed by user. 1458 * - decoding: unused 1459 */ 1460 RcOverride *rc_override; 1461 int rc_override_count; 1462 1463 /** 1464 * rate control equation 1465 * - encoding: Set by user 1466 * - decoding: unused 1467 */ 1468 const char *rc_eq; 1469 1470 /** 1471 * maximum bitrate 1472 * - encoding: Set by user. 1473 * - decoding: unused 1474 */ 1475 int rc_max_rate; 1476 1477 /** 1478 * minimum bitrate 1479 * - encoding: Set by user. 1480 * - decoding: unused 1481 */ 1482 int rc_min_rate; 1483 1484 /** 1485 * decoder bitstream buffer size 1486 * - encoding: Set by user. 1487 * - decoding: unused 1488 */ 1489 int rc_buffer_size; 1490 float rc_buffer_aggressivity; 1491 1492 /** 1493 * qscale factor between P and I-frames 1494 * If > 0 then the last p frame quantizer will be used (q= lastp_q*factor+offset). 1495 * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset). 1496 * - encoding: Set by user. 1497 * - decoding: unused 1498 */ 1499 float i_quant_factor; 1500 1501 /** 1502 * qscale offset between P and I-frames 1503 * - encoding: Set by user. 1504 * - decoding: unused 1505 */ 1506 float i_quant_offset; 1507 1508 /** 1509 * initial complexity for pass1 ratecontrol 1510 * - encoding: Set by user. 1511 * - decoding: unused 1512 */ 1513 float rc_initial_cplx; 1514 1515 /** 1516 * DCT algorithm, see FF_DCT_* below 1517 * - encoding: Set by user. 1518 * - decoding: unused 1519 */ 1520 int dct_algo; 1521#define FF_DCT_AUTO 0 1522#define FF_DCT_FASTINT 1 1523#define FF_DCT_INT 2 1524#define FF_DCT_MMX 3 1525#define FF_DCT_MLIB 4 1526#define FF_DCT_ALTIVEC 5 1527#define FF_DCT_FAAN 6 1528 1529 /** 1530 * luminance masking (0-> disabled) 1531 * - encoding: Set by user. 1532 * - decoding: unused 1533 */ 1534 float lumi_masking; 1535 1536 /** 1537 * temporary complexity masking (0-> disabled) 1538 * - encoding: Set by user. 1539 * - decoding: unused 1540 */ 1541 float temporal_cplx_masking; 1542 1543 /** 1544 * spatial complexity masking (0-> disabled) 1545 * - encoding: Set by user. 1546 * - decoding: unused 1547 */ 1548 float spatial_cplx_masking; 1549 1550 /** 1551 * p block masking (0-> disabled) 1552 * - encoding: Set by user. 1553 * - decoding: unused 1554 */ 1555 float p_masking; 1556 1557 /** 1558 * darkness masking (0-> disabled) 1559 * - encoding: Set by user. 1560 * - decoding: unused 1561 */ 1562 float dark_masking; 1563 1564 /** 1565 * IDCT algorithm, see FF_IDCT_* below. 1566 * - encoding: Set by user. 1567 * - decoding: Set by user. 1568 */ 1569 int idct_algo; 1570#define FF_IDCT_AUTO 0 1571#define FF_IDCT_INT 1 1572#define FF_IDCT_SIMPLE 2 1573#define FF_IDCT_SIMPLEMMX 3 1574#define FF_IDCT_LIBMPEG2MMX 4 1575#define FF_IDCT_PS2 5 1576#define FF_IDCT_MLIB 6 1577#define FF_IDCT_ARM 7 1578#define FF_IDCT_ALTIVEC 8 1579#define FF_IDCT_SH4 9 1580#define FF_IDCT_SIMPLEARM 10 1581#define FF_IDCT_H264 11 1582#define FF_IDCT_VP3 12 1583#define FF_IDCT_IPP 13 1584#define FF_IDCT_XVIDMMX 14 1585#define FF_IDCT_CAVS 15 1586#define FF_IDCT_SIMPLEARMV5TE 16 1587#define FF_IDCT_SIMPLEARMV6 17 1588#define FF_IDCT_SIMPLEVIS 18 1589#define FF_IDCT_WMV2 19 1590#define FF_IDCT_FAAN 20 1591#define FF_IDCT_EA 21 1592#define FF_IDCT_SIMPLENEON 22 1593#define FF_IDCT_SIMPLEALPHA 23 1594#define FF_IDCT_BINK 24 1595 1596 /** 1597 * slice count 1598 * - encoding: Set by libavcodec. 1599 * - decoding: Set by user (or 0). 1600 */ 1601 int slice_count; 1602 /** 1603 * slice offsets in the frame in bytes 1604 * - encoding: Set/allocated by libavcodec. 1605 * - decoding: Set/allocated by user (or NULL). 1606 */ 1607 int *slice_offset; 1608 1609 /** 1610 * error concealment flags 1611 * - encoding: unused 1612 * - decoding: Set by user. 1613 */ 1614 int error_concealment; 1615#define FF_EC_GUESS_MVS 1 1616#define FF_EC_DEBLOCK 2 1617 1618 /** 1619 * dsp_mask could be add used to disable unwanted CPU features 1620 * CPU features (i.e. MMX, SSE. ...) 1621 * 1622 * With the FORCE flag you may instead enable given CPU features. 1623 * (Dangerous: Usable in case of misdetection, improper usage however will 1624 * result into program crash.) 1625 */ 1626 unsigned dsp_mask; 1627#define FF_MM_FORCE 0x80000000 /* Force usage of selected flags (OR) */ 1628 /* lower 16 bits - CPU features */ 1629#define FF_MM_MMX 0x0001 ///< standard MMX 1630#define FF_MM_3DNOW 0x0004 ///< AMD 3DNOW 1631#if LIBAVCODEC_VERSION_MAJOR < 53 1632#define FF_MM_MMXEXT 0x0002 ///< SSE integer functions or AMD MMX ext 1633#endif 1634#define FF_MM_MMX2 0x0002 ///< SSE integer functions or AMD MMX ext 1635#define FF_MM_SSE 0x0008 ///< SSE functions 1636#define FF_MM_SSE2 0x0010 ///< PIV SSE2 functions 1637#define FF_MM_3DNOWEXT 0x0020 ///< AMD 3DNowExt 1638#define FF_MM_SSE3 0x0040 ///< Prescott SSE3 functions 1639#define FF_MM_SSSE3 0x0080 ///< Conroe SSSE3 functions 1640#define FF_MM_SSE4 0x0100 ///< Penryn SSE4.1 functions 1641#define FF_MM_SSE42 0x0200 ///< Nehalem SSE4.2 functions 1642#define FF_MM_IWMMXT 0x0100 ///< XScale IWMMXT 1643#define FF_MM_ALTIVEC 0x0001 ///< standard AltiVec 1644 1645 /** 1646 * bits per sample/pixel from the demuxer (needed for huffyuv). 1647 * - encoding: Set by libavcodec. 1648 * - decoding: Set by user. 1649 */ 1650 int bits_per_coded_sample; 1651 1652 /** 1653 * prediction method (needed for huffyuv) 1654 * - encoding: Set by user. 1655 * - decoding: unused 1656 */ 1657 int prediction_method; 1658#define FF_PRED_LEFT 0 1659#define FF_PRED_PLANE 1 1660#define FF_PRED_MEDIAN 2 1661 1662 /** 1663 * sample aspect ratio (0 if unknown) 1664 * That is the width of a pixel divided by the height of the pixel. 1665 * Numerator and denominator must be relatively prime and smaller than 256 for some video standards. 1666 * - encoding: Set by user. 1667 * - decoding: Set by libavcodec. 1668 */ 1669 AVRational sample_aspect_ratio; 1670 1671 /** 1672 * the picture in the bitstream 1673 * - encoding: Set by libavcodec. 1674 * - decoding: Set by libavcodec. 1675 */ 1676 AVFrame *coded_frame; 1677 1678 /** 1679 * debug 1680 * - encoding: Set by user. 1681 * - decoding: Set by user. 1682 */ 1683 int debug; 1684#define FF_DEBUG_PICT_INFO 1 1685#define FF_DEBUG_RC 2 1686#define FF_DEBUG_BITSTREAM 4 1687#define FF_DEBUG_MB_TYPE 8 1688#define FF_DEBUG_QP 16 1689#define FF_DEBUG_MV 32 1690#define FF_DEBUG_DCT_COEFF 0x00000040 1691#define FF_DEBUG_SKIP 0x00000080 1692#define FF_DEBUG_STARTCODE 0x00000100 1693#define FF_DEBUG_PTS 0x00000200 1694#define FF_DEBUG_ER 0x00000400 1695#define FF_DEBUG_MMCO 0x00000800 1696#define FF_DEBUG_BUGS 0x00001000 1697#define FF_DEBUG_VIS_QP 0x00002000 1698#define FF_DEBUG_VIS_MB_TYPE 0x00004000 1699#define FF_DEBUG_BUFFERS 0x00008000 1700 1701 /** 1702 * debug 1703 * - encoding: Set by user. 1704 * - decoding: Set by user. 1705 */ 1706 int debug_mv; 1707#define FF_DEBUG_VIS_MV_P_FOR 0x00000001 //visualize forward predicted MVs of P frames 1708#define FF_DEBUG_VIS_MV_B_FOR 0x00000002 //visualize forward predicted MVs of B frames 1709#define FF_DEBUG_VIS_MV_B_BACK 0x00000004 //visualize backward predicted MVs of B frames 1710 1711 /** 1712 * error 1713 * - encoding: Set by libavcodec if flags&CODEC_FLAG_PSNR. 1714 * - decoding: unused 1715 */ 1716 uint64_t error[4]; 1717 1718 /** 1719 * minimum MB quantizer 1720 * - encoding: unused 1721 * - decoding: unused 1722 */ 1723 int mb_qmin; 1724 1725 /** 1726 * maximum MB quantizer 1727 * - encoding: unused 1728 * - decoding: unused 1729 */ 1730 int mb_qmax; 1731 1732 /** 1733 * motion estimation comparison function 1734 * - encoding: Set by user. 1735 * - decoding: unused 1736 */ 1737 int me_cmp; 1738 /** 1739 * subpixel motion estimation comparison function 1740 * - encoding: Set by user. 1741 * - decoding: unused 1742 */ 1743 int me_sub_cmp; 1744 /** 1745 * macroblock comparison function (not supported yet) 1746 * - encoding: Set by user. 1747 * - decoding: unused 1748 */ 1749 int mb_cmp; 1750 /** 1751 * interlaced DCT comparison function 1752 * - encoding: Set by user. 1753 * - decoding: unused 1754 */ 1755 int ildct_cmp; 1756#define FF_CMP_SAD 0 1757#define FF_CMP_SSE 1 1758#define FF_CMP_SATD 2 1759#define FF_CMP_DCT 3 1760#define FF_CMP_PSNR 4 1761#define FF_CMP_BIT 5 1762#define FF_CMP_RD 6 1763#define FF_CMP_ZERO 7 1764#define FF_CMP_VSAD 8 1765#define FF_CMP_VSSE 9 1766#define FF_CMP_NSSE 10 1767#define FF_CMP_W53 11 1768#define FF_CMP_W97 12 1769#define FF_CMP_DCTMAX 13 1770#define FF_CMP_DCT264 14 1771#define FF_CMP_CHROMA 256 1772 1773 /** 1774 * ME diamond size & shape 1775 * - encoding: Set by user. 1776 * - decoding: unused 1777 */ 1778 int dia_size; 1779 1780 /** 1781 * amount of previous MV predictors (2a+1 x 2a+1 square) 1782 * - encoding: Set by user. 1783 * - decoding: unused 1784 */ 1785 int last_predictor_count; 1786 1787 /** 1788 * prepass for motion estimation 1789 * - encoding: Set by user. 1790 * - decoding: unused 1791 */ 1792 int pre_me; 1793 1794 /** 1795 * motion estimation prepass comparison function 1796 * - encoding: Set by user. 1797 * - decoding: unused 1798 */ 1799 int me_pre_cmp; 1800 1801 /** 1802 * ME prepass diamond size & shape 1803 * - encoding: Set by user. 1804 * - decoding: unused 1805 */ 1806 int pre_dia_size; 1807 1808 /** 1809 * subpel ME quality 1810 * - encoding: Set by user. 1811 * - decoding: unused 1812 */ 1813 int me_subpel_quality; 1814 1815 /** 1816 * callback to negotiate the pixelFormat 1817 * @param fmt is the list of formats which are supported by the codec, 1818 * it is terminated by -1 as 0 is a valid format, the formats are ordered by quality. 1819 * The first is always the native one. 1820 * @return the chosen format 1821 * - encoding: unused 1822 * - decoding: Set by user, if not set the native format will be chosen. 1823 */ 1824 enum PixelFormat (*get_format)(struct AVCodecContext *s, const enum PixelFormat * fmt); 1825 1826 /** 1827 * DTG active format information (additional aspect ratio 1828 * information only used in DVB MPEG-2 transport streams) 1829 * 0 if not set. 1830 * 1831 * - encoding: unused 1832 * - decoding: Set by decoder. 1833 */ 1834 int dtg_active_format; 1835#define FF_DTG_AFD_SAME 8 1836#define FF_DTG_AFD_4_3 9 1837#define FF_DTG_AFD_16_9 10 1838#define FF_DTG_AFD_14_9 11 1839#define FF_DTG_AFD_4_3_SP_14_9 13 1840#define FF_DTG_AFD_16_9_SP_14_9 14 1841#define FF_DTG_AFD_SP_4_3 15 1842 1843 /** 1844 * maximum motion estimation search range in subpel units 1845 * If 0 then no limit. 1846 * 1847 * - encoding: Set by user. 1848 * - decoding: unused 1849 */ 1850 int me_range; 1851 1852 /** 1853 * intra quantizer bias 1854 * - encoding: Set by user. 1855 * - decoding: unused 1856 */ 1857 int intra_quant_bias; 1858#define FF_DEFAULT_QUANT_BIAS 999999 1859 1860 /** 1861 * inter quantizer bias 1862 * - encoding: Set by user. 1863 * - decoding: unused 1864 */ 1865 int inter_quant_bias; 1866 1867 /** 1868 * color table ID 1869 * - encoding: unused 1870 * - decoding: Which clrtable should be used for 8bit RGB images. 1871 * Tables have to be stored somewhere. FIXME 1872 */ 1873 int color_table_id; 1874 1875 /** 1876 * internal_buffer count 1877 * Don't touch, used by libavcodec default_get_buffer(). 1878 */ 1879 int internal_buffer_count; 1880 1881 /** 1882 * internal_buffers 1883 * Don't touch, used by libavcodec default_get_buffer(). 1884 */ 1885 void *internal_buffer; 1886 1887#define FF_LAMBDA_SHIFT 7 1888#define FF_LAMBDA_SCALE (1<<FF_LAMBDA_SHIFT) 1889#define FF_QP2LAMBDA 118 ///< factor to convert from H.263 QP to lambda 1890#define FF_LAMBDA_MAX (256*128-1) 1891 1892#define FF_QUALITY_SCALE FF_LAMBDA_SCALE //FIXME maybe remove 1893 /** 1894 * Global quality for codecs which cannot change it per frame. 1895 * This should be proportional to MPEG-1/2/4 qscale. 1896 * - encoding: Set by user. 1897 * - decoding: unused 1898 */ 1899 int global_quality; 1900 1901#define FF_CODER_TYPE_VLC 0 1902#define FF_CODER_TYPE_AC 1 1903#define FF_CODER_TYPE_RAW 2 1904#define FF_CODER_TYPE_RLE 3 1905#define FF_CODER_TYPE_DEFLATE 4 1906 /** 1907 * coder type 1908 * - encoding: Set by user. 1909 * - decoding: unused 1910 */ 1911 int coder_type; 1912 1913 /** 1914 * context model 1915 * - encoding: Set by user. 1916 * - decoding: unused 1917 */ 1918 int context_model; 1919#if 0 1920 /** 1921 * 1922 * - encoding: unused 1923 * - decoding: Set by user. 1924 */ 1925 uint8_t * (*realloc)(struct AVCodecContext *s, uint8_t *buf, int buf_size); 1926#endif 1927 1928 /** 1929 * slice flags 1930 * - encoding: unused 1931 * - decoding: Set by user. 1932 */ 1933 int slice_flags; 1934#define SLICE_FLAG_CODED_ORDER 0x0001 ///< draw_horiz_band() is called in coded order instead of display 1935#define SLICE_FLAG_ALLOW_FIELD 0x0002 ///< allow draw_horiz_band() with field slices (MPEG2 field pics) 1936#define SLICE_FLAG_ALLOW_PLANE 0x0004 ///< allow draw_horiz_band() with 1 component at a time (SVQ1) 1937 1938 /** 1939 * XVideo Motion Acceleration 1940 * - encoding: forbidden 1941 * - decoding: set by decoder 1942 */ 1943 int xvmc_acceleration; 1944 1945 /** 1946 * macroblock decision mode 1947 * - encoding: Set by user. 1948 * - decoding: unused 1949 */ 1950 int mb_decision; 1951#define FF_MB_DECISION_SIMPLE 0 ///< uses mb_cmp 1952#define FF_MB_DECISION_BITS 1 ///< chooses the one which needs the fewest bits 1953#define FF_MB_DECISION_RD 2 ///< rate distortion 1954 1955 /** 1956 * custom intra quantization matrix 1957 * - encoding: Set by user, can be NULL. 1958 * - decoding: Set by libavcodec. 1959 */ 1960 uint16_t *intra_matrix; 1961 1962 /** 1963 * custom inter quantization matrix 1964 * - encoding: Set by user, can be NULL. 1965 * - decoding: Set by libavcodec. 1966 */ 1967 uint16_t *inter_matrix; 1968 1969 /** 1970 * fourcc from the AVI stream header (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A'). 1971 * This is used to work around some encoder bugs. 1972 * - encoding: unused 1973 * - decoding: Set by user, will be converted to uppercase by libavcodec during init. 1974 */ 1975 unsigned int stream_codec_tag; 1976 1977 /** 1978 * scene change detection threshold 1979 * 0 is default, larger means fewer detected scene changes. 1980 * - encoding: Set by user. 1981 * - decoding: unused 1982 */ 1983 int scenechange_threshold; 1984 1985 /** 1986 * minimum Lagrange multipler 1987 * - encoding: Set by user. 1988 * - decoding: unused 1989 */ 1990 int lmin; 1991 1992 /** 1993 * maximum Lagrange multipler 1994 * - encoding: Set by user. 1995 * - decoding: unused 1996 */ 1997 int lmax; 1998 1999 /** 2000 * palette control structure 2001 * - encoding: ??? (no palette-enabled encoder yet) 2002 * - decoding: Set by user. 2003 */ 2004 struct AVPaletteControl *palctrl; 2005 2006 /** 2007 * noise reduction strength 2008 * - encoding: Set by user. 2009 * - decoding: unused 2010 */ 2011 int noise_reduction; 2012 2013 /** 2014 * Called at the beginning of a frame to get cr buffer for it. 2015 * Buffer type (size, hints) must be the same. libavcodec won't check it. 2016 * libavcodec will pass previous buffer in pic, function should return 2017 * same buffer or new buffer with old frame "painted" into it. 2018 * If pic.data[0] == NULL must behave like get_buffer(). 2019 * if CODEC_CAP_DR1 is not set then reget_buffer() must call 2020 * avcodec_default_reget_buffer() instead of providing buffers allocated by 2021 * some other means. 2022 * - encoding: unused 2023 * - decoding: Set by libavcodec., user can override 2024 */ 2025 int (*reget_buffer)(struct AVCodecContext *c, AVFrame *pic); 2026 2027 /** 2028 * Number of bits which should be loaded into the rc buffer before decoding starts. 2029 * - encoding: Set by user. 2030 * - decoding: unused 2031 */ 2032 int rc_initial_buffer_occupancy; 2033 2034 /** 2035 * 2036 * - encoding: Set by user. 2037 * - decoding: unused 2038 */ 2039 int inter_threshold; 2040 2041 /** 2042 * CODEC_FLAG2_* 2043 * - encoding: Set by user. 2044 * - decoding: Set by user. 2045 */ 2046 int flags2; 2047 2048 /** 2049 * Simulates errors in the bitstream to test error concealment. 2050 * - encoding: Set by user. 2051 * - decoding: unused 2052 */ 2053 int error_rate; 2054 2055 /** 2056 * MP3 antialias algorithm, see FF_AA_* below. 2057 * - encoding: unused 2058 * - decoding: Set by user. 2059 */ 2060 int antialias_algo; 2061#define FF_AA_AUTO 0 2062#define FF_AA_FASTINT 1 //not implemented yet 2063#define FF_AA_INT 2 2064#define FF_AA_FLOAT 3 2065 /** 2066 * quantizer noise shaping 2067 * - encoding: Set by user. 2068 * - decoding: unused 2069 */ 2070 int quantizer_noise_shaping; 2071 2072 /** 2073 * thread count 2074 * is used to decide how many independent tasks should be passed to execute() 2075 * - encoding: Set by user. 2076 * - decoding: Set by user. 2077 */ 2078 int thread_count; 2079 2080 /** 2081 * The codec may call this to execute several independent things. 2082 * It will return only after finishing all tasks. 2083 * The user may replace this with some multithreaded implementation, 2084 * the default implementation will execute the parts serially. 2085 * @param count the number of things to execute 2086 * - encoding: Set by libavcodec, user can override. 2087 * - decoding: Set by libavcodec, user can override. 2088 */ 2089 int (*execute)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg), void *arg2, int *ret, int count, int size); 2090 2091 /** 2092 * thread opaque 2093 * Can be used by execute() to store some per AVCodecContext stuff. 2094 * - encoding: set by execute() 2095 * - decoding: set by execute() 2096 */ 2097 void *thread_opaque; 2098 2099 /** 2100 * Motion estimation threshold below which no motion estimation is 2101 * performed, but instead the user specified motion vectors are used. 2102 * 2103 * - encoding: Set by user. 2104 * - decoding: unused 2105 */ 2106 int me_threshold; 2107 2108 /** 2109 * Macroblock threshold below which the user specified macroblock types will be used. 2110 * - encoding: Set by user. 2111 * - decoding: unused 2112 */ 2113 int mb_threshold; 2114 2115 /** 2116 * precision of the intra DC coefficient - 8 2117 * - encoding: Set by user. 2118 * - decoding: unused 2119 */ 2120 int intra_dc_precision; 2121 2122 /** 2123 * noise vs. sse weight for the nsse comparsion function 2124 * - encoding: Set by user. 2125 * - decoding: unused 2126 */ 2127 int nsse_weight; 2128 2129 /** 2130 * Number of macroblock rows at the top which are skipped. 2131 * - encoding: unused 2132 * - decoding: Set by user. 2133 */ 2134 int skip_top; 2135 2136 /** 2137 * Number of macroblock rows at the bottom which are skipped. 2138 * - encoding: unused 2139 * - decoding: Set by user. 2140 */ 2141 int skip_bottom; 2142 2143 /** 2144 * profile 2145 * - encoding: Set by user. 2146 * - decoding: Set by libavcodec. 2147 */ 2148 int profile; 2149#define FF_PROFILE_UNKNOWN -99 2150 2151#define FF_PROFILE_AAC_MAIN 0 2152#define FF_PROFILE_AAC_LOW 1 2153#define FF_PROFILE_AAC_SSR 2 2154#define FF_PROFILE_AAC_LTP 3 2155 2156#define FF_PROFILE_H264_BASELINE 66 2157#define FF_PROFILE_H264_MAIN 77 2158#define FF_PROFILE_H264_EXTENDED 88 2159#define FF_PROFILE_H264_HIGH 100 2160#define FF_PROFILE_H264_HIGH_10 110 2161#define FF_PROFILE_H264_HIGH_422 122 2162#define FF_PROFILE_H264_HIGH_444 244 2163#define FF_PROFILE_H264_CAVLC_444 44 2164 2165 /** 2166 * level 2167 * - encoding: Set by user. 2168 * - decoding: Set by libavcodec. 2169 */ 2170 int level; 2171#define FF_LEVEL_UNKNOWN -99 2172 2173 /** 2174 * low resolution decoding, 1-> 1/2 size, 2->1/4 size 2175 * - encoding: unused 2176 * - decoding: Set by user. 2177 */ 2178 int lowres; 2179 2180 /** 2181 * Bitstream width / height, may be different from width/height if lowres 2182 * or other things are used. 2183 * - encoding: unused 2184 * - decoding: Set by user before init if known. Codec should override / dynamically change if needed. 2185 */ 2186 int coded_width, coded_height; 2187 2188 /** 2189 * frame skip threshold 2190 * - encoding: Set by user. 2191 * - decoding: unused 2192 */ 2193 int frame_skip_threshold; 2194 2195 /** 2196 * frame skip factor 2197 * - encoding: Set by user. 2198 * - decoding: unused 2199 */ 2200 int frame_skip_factor; 2201 2202 /** 2203 * frame skip exponent 2204 * - encoding: Set by user. 2205 * - decoding: unused 2206 */ 2207 int frame_skip_exp; 2208 2209 /** 2210 * frame skip comparison function 2211 * - encoding: Set by user. 2212 * - decoding: unused 2213 */ 2214 int frame_skip_cmp; 2215 2216 /** 2217 * Border processing masking, raises the quantizer for mbs on the borders 2218 * of the picture. 2219 * - encoding: Set by user. 2220 * - decoding: unused 2221 */ 2222 float border_masking; 2223 2224 /** 2225 * minimum MB lagrange multipler 2226 * - encoding: Set by user. 2227 * - decoding: unused 2228 */ 2229 int mb_lmin; 2230 2231 /** 2232 * maximum MB lagrange multipler 2233 * - encoding: Set by user. 2234 * - decoding: unused 2235 */ 2236 int mb_lmax; 2237 2238 /** 2239 * 2240 * - encoding: Set by user. 2241 * - decoding: unused 2242 */ 2243 int me_penalty_compensation; 2244 2245 /** 2246 * 2247 * - encoding: unused 2248 * - decoding: Set by user. 2249 */ 2250 enum AVDiscard skip_loop_filter; 2251 2252 /** 2253 * 2254 * - encoding: unused 2255 * - decoding: Set by user. 2256 */ 2257 enum AVDiscard skip_idct; 2258 2259 /** 2260 * 2261 * - encoding: unused 2262 * - decoding: Set by user. 2263 */ 2264 enum AVDiscard skip_frame; 2265 2266 /** 2267 * 2268 * - encoding: Set by user. 2269 * - decoding: unused 2270 */ 2271 int bidir_refine; 2272 2273 /** 2274 * 2275 * - encoding: Set by user. 2276 * - decoding: unused 2277 */ 2278 int brd_scale; 2279 2280 /** 2281 * constant rate factor - quality-based VBR - values ~correspond to qps 2282 * - encoding: Set by user. 2283 * - decoding: unused 2284 */ 2285 float crf; 2286 2287 /** 2288 * constant quantization parameter rate control method 2289 * - encoding: Set by user. 2290 * - decoding: unused 2291 */ 2292 int cqp; 2293 2294 /** 2295 * minimum GOP size 2296 * - encoding: Set by user. 2297 * - decoding: unused 2298 */ 2299 int keyint_min; 2300 2301 /** 2302 * number of reference frames 2303 * - encoding: Set by user. 2304 * - decoding: Set by lavc. 2305 */ 2306 int refs; 2307 2308 /** 2309 * chroma qp offset from luma 2310 * - encoding: Set by user. 2311 * - decoding: unused 2312 */ 2313 int chromaoffset; 2314 2315 /** 2316 * Influences how often B-frames are used. 2317 * - encoding: Set by user. 2318 * - decoding: unused 2319 */ 2320 int bframebias; 2321 2322 /** 2323 * trellis RD quantization 2324 * - encoding: Set by user. 2325 * - decoding: unused 2326 */ 2327 int trellis; 2328 2329 /** 2330 * Reduce fluctuations in qp (before curve compression). 2331 * - encoding: Set by user. 2332 * - decoding: unused 2333 */ 2334 float complexityblur; 2335 2336 /** 2337 * in-loop deblocking filter alphac0 parameter 2338 * alpha is in the range -6...6 2339 * - encoding: Set by user. 2340 * - decoding: unused 2341 */ 2342 int deblockalpha; 2343 2344 /** 2345 * in-loop deblocking filter beta parameter 2346 * beta is in the range -6...6 2347 * - encoding: Set by user. 2348 * - decoding: unused 2349 */ 2350 int deblockbeta; 2351 2352 /** 2353 * macroblock subpartition sizes to consider - p8x8, p4x4, b8x8, i8x8, i4x4 2354 * - encoding: Set by user. 2355 * - decoding: unused 2356 */ 2357 int partitions; 2358#define X264_PART_I4X4 0x001 /* Analyze i4x4 */ 2359#define X264_PART_I8X8 0x002 /* Analyze i8x8 (requires 8x8 transform) */ 2360#define X264_PART_P8X8 0x010 /* Analyze p16x8, p8x16 and p8x8 */ 2361#define X264_PART_P4X4 0x020 /* Analyze p8x4, p4x8, p4x4 */ 2362#define X264_PART_B8X8 0x100 /* Analyze b16x8, b8x16 and b8x8 */ 2363 2364 /** 2365 * direct MV prediction mode - 0 (none), 1 (spatial), 2 (temporal), 3 (auto) 2366 * - encoding: Set by user. 2367 * - decoding: unused 2368 */ 2369 int directpred; 2370 2371 /** 2372 * Audio cutoff bandwidth (0 means "automatic") 2373 * - encoding: Set by user. 2374 * - decoding: unused 2375 */ 2376 int cutoff; 2377 2378 /** 2379 * Multiplied by qscale for each frame and added to scene_change_score. 2380 * - encoding: Set by user. 2381 * - decoding: unused 2382 */ 2383 int scenechange_factor; 2384 2385 /** 2386 * 2387 * Note: Value depends upon the compare function used for fullpel ME. 2388 * - encoding: Set by user. 2389 * - decoding: unused 2390 */ 2391 int mv0_threshold; 2392 2393 /** 2394 * Adjusts sensitivity of b_frame_strategy 1. 2395 * - encoding: Set by user. 2396 * - decoding: unused 2397 */ 2398 int b_sensitivity; 2399 2400 /** 2401 * - encoding: Set by user. 2402 * - decoding: unused 2403 */ 2404 int compression_level; 2405#define FF_COMPRESSION_DEFAULT -1 2406 2407 /** 2408 * Sets whether to use LPC mode - used by FLAC encoder. 2409 * - encoding: Set by user. 2410 * - decoding: unused 2411 */ 2412 int use_lpc; 2413 2414 /** 2415 * LPC coefficient precision - used by FLAC encoder 2416 * - encoding: Set by user. 2417 * - decoding: unused 2418 */ 2419 int lpc_coeff_precision; 2420 2421 /** 2422 * - encoding: Set by user. 2423 * - decoding: unused 2424 */ 2425 int min_prediction_order; 2426 2427 /** 2428 * - encoding: Set by user. 2429 * - decoding: unused 2430 */ 2431 int max_prediction_order; 2432 2433 /** 2434 * search method for selecting prediction order 2435 * - encoding: Set by user. 2436 * - decoding: unused 2437 */ 2438 int prediction_order_method; 2439 2440 /** 2441 * - encoding: Set by user. 2442 * - decoding: unused 2443 */ 2444 int min_partition_order; 2445 2446 /** 2447 * - encoding: Set by user. 2448 * - decoding: unused 2449 */ 2450 int max_partition_order; 2451 2452 /** 2453 * GOP timecode frame start number, in non drop frame format 2454 * - encoding: Set by user. 2455 * - decoding: unused 2456 */ 2457 int64_t timecode_frame_start; 2458 2459#if LIBAVCODEC_VERSION_MAJOR < 53 2460 /** 2461 * Decoder should decode to this many channels if it can (0 for default) 2462 * - encoding: unused 2463 * - decoding: Set by user. 2464 * @deprecated Deprecated in favor of request_channel_layout. 2465 */ 2466 int request_channels; 2467#endif 2468 2469 /** 2470 * Percentage of dynamic range compression to be applied by the decoder. 2471 * The default value is 1.0, corresponding to full compression. 2472 * - encoding: unused 2473 * - decoding: Set by user. 2474 */ 2475 float drc_scale; 2476 2477 /** 2478 * opaque 64bit number (generally a PTS) that will be reordered and 2479 * output in AVFrame.reordered_opaque 2480 * - encoding: unused 2481 * - decoding: Set by user. 2482 */ 2483 int64_t reordered_opaque; 2484 2485 /** 2486 * Bits per sample/pixel of internal libavcodec pixel/sample format. 2487 * This field is applicable only when sample_fmt is SAMPLE_FMT_S32. 2488 * - encoding: set by user. 2489 * - decoding: set by libavcodec. 2490 */ 2491 int bits_per_raw_sample; 2492 2493 /** 2494 * Audio channel layout. 2495 * - encoding: set by user. 2496 * - decoding: set by libavcodec. 2497 */ 2498 int64_t channel_layout; 2499 2500 /** 2501 * Request decoder to use this channel layout if it can (0 for default) 2502 * - encoding: unused 2503 * - decoding: Set by user. 2504 */ 2505 int64_t request_channel_layout; 2506 2507 /** 2508 * Ratecontrol attempt to use, at maximum, <value> of what can be used without an underflow. 2509 * - encoding: Set by user. 2510 * - decoding: unused. 2511 */ 2512 float rc_max_available_vbv_use; 2513 2514 /** 2515 * Ratecontrol attempt to use, at least, <value> times the amount needed to prevent a vbv overflow. 2516 * - encoding: Set by user. 2517 * - decoding: unused. 2518 */ 2519 float rc_min_vbv_overflow_use; 2520 2521 /** 2522 * Hardware accelerator in use 2523 * - encoding: unused. 2524 * - decoding: Set by libavcodec 2525 */ 2526 struct AVHWAccel *hwaccel; 2527 2528 /** 2529 * For some codecs, the time base is closer to the field rate than the frame rate. 2530 * Most notably, H.264 and MPEG-2 specify time_base as half of frame duration 2531 * if no telecine is used ... 2532 * 2533 * Set to time_base ticks per frame. Default 1, e.g., H.264/MPEG-2 set it to 2. 2534 */ 2535 int ticks_per_frame; 2536 2537 /** 2538 * Hardware accelerator context. 2539 * For some hardware accelerators, a global context needs to be 2540 * provided by the user. In that case, this holds display-dependent 2541 * data FFmpeg cannot instantiate itself. Please refer to the 2542 * FFmpeg HW accelerator documentation to know how to fill this 2543 * is. e.g. for VA API, this is a struct vaapi_context. 2544 * - encoding: unused 2545 * - decoding: Set by user 2546 */ 2547 void *hwaccel_context; 2548 2549 /** 2550 * Chromaticity coordinates of the source primaries. 2551 * - encoding: Set by user 2552 * - decoding: Set by libavcodec 2553 */ 2554 enum AVColorPrimaries color_primaries; 2555 2556 /** 2557 * Color Transfer Characteristic. 2558 * - encoding: Set by user 2559 * - decoding: Set by libavcodec 2560 */ 2561 enum AVColorTransferCharacteristic color_trc; 2562 2563 /** 2564 * YUV colorspace type. 2565 * - encoding: Set by user 2566 * - decoding: Set by libavcodec 2567 */ 2568 enum AVColorSpace colorspace; 2569 2570 /** 2571 * MPEG vs JPEG YUV range. 2572 * - encoding: Set by user 2573 * - decoding: Set by libavcodec 2574 */ 2575 enum AVColorRange color_range; 2576 2577 /** 2578 * This defines the location of chroma samples. 2579 * - encoding: Set by user 2580 * - decoding: Set by libavcodec 2581 */ 2582 enum AVChromaLocation chroma_sample_location; 2583 2584 /** 2585 * The codec may call this to execute several independent things. 2586 * It will return only after finishing all tasks. 2587 * The user may replace this with some multithreaded implementation, 2588 * the default implementation will execute the parts serially. 2589 * Also see avcodec_thread_init and e.g. the --enable-pthread configure option. 2590 * @param c context passed also to func 2591 * @param count the number of things to execute 2592 * @param arg2 argument passed unchanged to func 2593 * @param ret return values of executed functions, must have space for "count" values. May be NULL. 2594 * @param func function that will be called count times, with jobnr from 0 to count-1. 2595 * threadnr will be in the range 0 to c->thread_count-1 < MAX_THREADS and so that no 2596 * two instances of func executing at the same time will have the same threadnr. 2597 * @return always 0 currently, but code should handle a future improvement where when any call to func 2598 * returns < 0 no further calls to func may be done and < 0 is returned. 2599 * - encoding: Set by libavcodec, user can override. 2600 * - decoding: Set by libavcodec, user can override. 2601 */ 2602 int (*execute2)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count); 2603 2604 /** 2605 * explicit P-frame weighted prediction analysis method 2606 * 0: off 2607 * 1: fast blind weighting (one reference duplicate with -1 offset) 2608 * 2: smart weighting (full fade detection analysis) 2609 * - encoding: Set by user. 2610 * - decoding: unused 2611 */ 2612 int weighted_p_pred; 2613 2614 /** 2615 * AQ mode 2616 * 0: Disabled 2617 * 1: Variance AQ (complexity mask) 2618 * 2: Auto-variance AQ (experimental) 2619 * - encoding: Set by user 2620 * - decoding: unused 2621 */ 2622 int aq_mode; 2623 2624 /** 2625 * AQ strength 2626 * Reduces blocking and blurring in flat and textured areas. 2627 * - encoding: Set by user 2628 * - decoding: unused 2629 */ 2630 float aq_strength; 2631 2632 /** 2633 * PSY RD 2634 * Strength of psychovisual optimization 2635 * - encoding: Set by user 2636 * - decoding: unused 2637 */ 2638 float psy_rd; 2639 2640 /** 2641 * PSY trellis 2642 * Strength of psychovisual optimization 2643 * - encoding: Set by user 2644 * - decoding: unused 2645 */ 2646 float psy_trellis; 2647 2648 /** 2649 * RC lookahead 2650 * Number of frames for frametype and ratecontrol lookahead 2651 * - encoding: Set by user 2652 * - decoding: unused 2653 */ 2654 int rc_lookahead; 2655} AVCodecContext; 2656 2657/** 2658 * AVCodec. 2659 */ 2660typedef struct AVCodec { 2661 /** 2662 * Name of the codec implementation. 2663 * The name is globally unique among encoders and among decoders (but an 2664 * encoder and a decoder can share the same name). 2665 * This is the primary way to find a codec from the user perspective. 2666 */ 2667 const char *name; 2668 enum AVMediaType type; 2669 enum CodecID id; 2670 int priv_data_size; 2671 int (*init)(AVCodecContext *); 2672 int (*encode)(AVCodecContext *, uint8_t *buf, int buf_size, void *data); 2673 int (*close)(AVCodecContext *); 2674 int (*decode)(AVCodecContext *, void *outdata, int *outdata_size, AVPacket *avpkt); 2675 /** 2676 * Codec capabilities. 2677 * see CODEC_CAP_* 2678 */ 2679 int capabilities; 2680 struct AVCodec *next; 2681 /** 2682 * Flush buffers. 2683 * Will be called when seeking 2684 */ 2685 void (*flush)(AVCodecContext *); 2686 const AVRational *supported_framerates; ///< array of supported framerates, or NULL if any, array is terminated by {0,0} 2687 const enum PixelFormat *pix_fmts; ///< array of supported pixel formats, or NULL if unknown, array is terminated by -1 2688 /** 2689 * Descriptive name for the codec, meant to be more human readable than name. 2690 * You should use the NULL_IF_CONFIG_SMALL() macro to define it. 2691 */ 2692 const char *long_name; 2693 const int *supported_samplerates; ///< array of supported audio samplerates, or NULL if unknown, array is terminated by 0 2694 const enum SampleFormat *sample_fmts; ///< array of supported sample formats, or NULL if unknown, array is terminated by -1 2695 const int64_t *channel_layouts; ///< array of support channel layouts, or NULL if unknown. array is terminated by 0 2696} AVCodec; 2697 2698/** 2699 * AVHWAccel. 2700 */ 2701typedef struct AVHWAccel { 2702 /** 2703 * Name of the hardware accelerated codec. 2704 * The name is globally unique among encoders and among decoders (but an 2705 * encoder and a decoder can share the same name). 2706 */ 2707 const char *name; 2708 2709 /** 2710 * Type of codec implemented by the hardware accelerator. 2711 * 2712 * See AVMEDIA_TYPE_xxx 2713 */ 2714 enum AVMediaType type; 2715 2716 /** 2717 * Codec implemented by the hardware accelerator. 2718 * 2719 * See CODEC_ID_xxx 2720 */ 2721 enum CodecID id; 2722 2723 /** 2724 * Supported pixel format. 2725 * 2726 * Only hardware accelerated formats are supported here. 2727 */ 2728 enum PixelFormat pix_fmt; 2729 2730 /** 2731 * Hardware accelerated codec capabilities. 2732 * see FF_HWACCEL_CODEC_CAP_* 2733 */ 2734 int capabilities; 2735 2736 struct AVHWAccel *next; 2737 2738 /** 2739 * Called at the beginning of each frame or field picture. 2740 * 2741 * Meaningful frame information (codec specific) is guaranteed to 2742 * be parsed at this point. This function is mandatory. 2743 * 2744 * Note that buf can be NULL along with buf_size set to 0. 2745 * Otherwise, this means the whole frame is available at this point. 2746 * 2747 * @param avctx the codec context 2748 * @param buf the frame data buffer base 2749 * @param buf_size the size of the frame in bytes 2750 * @return zero if successful, a negative value otherwise 2751 */ 2752 int (*start_frame)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); 2753 2754 /** 2755 * Callback for each slice. 2756 * 2757 * Meaningful slice information (codec specific) is guaranteed to 2758 * be parsed at this point. This function is mandatory. 2759 * 2760 * @param avctx the codec context 2761 * @param buf the slice data buffer base 2762 * @param buf_size the size of the slice in bytes 2763 * @return zero if successful, a negative value otherwise 2764 */ 2765 int (*decode_slice)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); 2766 2767 /** 2768 * Called at the end of each frame or field picture. 2769 * 2770 * The whole picture is parsed at this point and can now be sent 2771 * to the hardware accelerator. This function is mandatory. 2772 * 2773 * @param avctx the codec context 2774 * @return zero if successful, a negative value otherwise 2775 */ 2776 int (*end_frame)(AVCodecContext *avctx); 2777 2778 /** 2779 * Size of HW accelerator private data. 2780 * 2781 * Private data is allocated with av_mallocz() before 2782 * AVCodecContext.get_buffer() and deallocated after 2783 * AVCodecContext.release_buffer(). 2784 */ 2785 int priv_data_size; 2786} AVHWAccel; 2787 2788/** 2789 * four components are given, that's all. 2790 * the last component is alpha 2791 */ 2792typedef struct AVPicture { 2793 uint8_t *data[4]; 2794 int linesize[4]; ///< number of bytes per line 2795} AVPicture; 2796 2797#if LIBAVCODEC_VERSION_MAJOR < 53 2798/** 2799 * AVPaletteControl 2800 * This structure defines a method for communicating palette changes 2801 * between and demuxer and a decoder. 2802 * 2803 * @deprecated Use AVPacket to send palette changes instead. 2804 * This is totally broken. 2805 */ 2806#define AVPALETTE_SIZE 1024 2807#define AVPALETTE_COUNT 256 2808typedef struct AVPaletteControl { 2809 2810 /* Demuxer sets this to 1 to indicate the palette has changed; 2811 * decoder resets to 0. */ 2812 int palette_changed; 2813 2814 /* 4-byte ARGB palette entries, stored in native byte order; note that 2815 * the individual palette components should be on a 8-bit scale; if 2816 * the palette data comes from an IBM VGA native format, the component 2817 * data is probably 6 bits in size and needs to be scaled. */ 2818 unsigned int palette[AVPALETTE_COUNT]; 2819 2820} AVPaletteControl attribute_deprecated; 2821#endif 2822 2823enum AVSubtitleType { 2824 SUBTITLE_NONE, 2825 2826 SUBTITLE_BITMAP, ///< A bitmap, pict will be set 2827 2828 /** 2829 * Plain text, the text field must be set by the decoder and is 2830 * authoritative. ass and pict fields may contain approximations. 2831 */ 2832 SUBTITLE_TEXT, 2833 2834 /** 2835 * Formatted text, the ass field must be set by the decoder and is 2836 * authoritative. pict and text fields may contain approximations. 2837 */ 2838 SUBTITLE_ASS, 2839}; 2840 2841typedef struct AVSubtitleRect { 2842 int x; ///< top left corner of pict, undefined when pict is not set 2843 int y; ///< top left corner of pict, undefined when pict is not set 2844 int w; ///< width of pict, undefined when pict is not set 2845 int h; ///< height of pict, undefined when pict is not set 2846 int nb_colors; ///< number of colors in pict, undefined when pict is not set 2847 2848 /** 2849 * data+linesize for the bitmap of this subtitle. 2850 * can be set for text/ass as well once they where rendered 2851 */ 2852 AVPicture pict; 2853 enum AVSubtitleType type; 2854 2855 char *text; ///< 0 terminated plain UTF-8 text 2856 2857 /** 2858 * 0 terminated ASS/SSA compatible event line. 2859 * The pressentation of this is unaffected by the other values in this 2860 * struct. 2861 */ 2862 char *ass; 2863} AVSubtitleRect; 2864 2865typedef struct AVSubtitle { 2866 uint16_t format; /* 0 = graphics */ 2867 uint32_t start_display_time; /* relative to packet pts, in ms */ 2868 uint32_t end_display_time; /* relative to packet pts, in ms */ 2869 unsigned num_rects; 2870 AVSubtitleRect **rects; 2871 int64_t pts; ///< Same as packet pts, in AV_TIME_BASE 2872} AVSubtitle; 2873 2874/* packet functions */ 2875 2876/** 2877 * @deprecated use NULL instead 2878 */ 2879attribute_deprecated void av_destruct_packet_nofree(AVPacket *pkt); 2880 2881/** 2882 * Default packet destructor. 2883 */ 2884void av_destruct_packet(AVPacket *pkt); 2885 2886/** 2887 * Initialize optional fields of a packet with default values. 2888 * 2889 * @param pkt packet 2890 */ 2891void av_init_packet(AVPacket *pkt); 2892 2893/** 2894 * Allocate the payload of a packet and initialize its fields with 2895 * default values. 2896 * 2897 * @param pkt packet 2898 * @param size wanted payload size 2899 * @return 0 if OK, AVERROR_xxx otherwise 2900 */ 2901int av_new_packet(AVPacket *pkt, int size); 2902 2903/** 2904 * Reduce packet size, correctly zeroing padding 2905 * 2906 * @param pkt packet 2907 * @param size new size 2908 */ 2909void av_shrink_packet(AVPacket *pkt, int size); 2910 2911/** 2912 * @warning This is a hack - the packet memory allocation stuff is broken. The 2913 * packet is allocated if it was not really allocated. 2914 */ 2915int av_dup_packet(AVPacket *pkt); 2916 2917/** 2918 * Free a packet. 2919 * 2920 * @param pkt packet to free 2921 */ 2922void av_free_packet(AVPacket *pkt); 2923 2924/* resample.c */ 2925 2926struct ReSampleContext; 2927struct AVResampleContext; 2928 2929typedef struct ReSampleContext ReSampleContext; 2930 2931#if LIBAVCODEC_VERSION_MAJOR < 53 2932/** 2933 * @deprecated Use av_audio_resample_init() instead. 2934 */ 2935attribute_deprecated ReSampleContext *audio_resample_init(int output_channels, int input_channels, 2936 int output_rate, int input_rate); 2937#endif 2938/** 2939 * Initializes audio resampling context 2940 * 2941 * @param output_channels number of output channels 2942 * @param input_channels number of input channels 2943 * @param output_rate output sample rate 2944 * @param input_rate input sample rate 2945 * @param sample_fmt_out requested output sample format 2946 * @param sample_fmt_in input sample format 2947 * @param filter_length length of each FIR filter in the filterbank relative to the cutoff freq 2948 * @param log2_phase_count log2 of the number of entries in the polyphase filterbank 2949 * @param linear If 1 then the used FIR filter will be linearly interpolated 2950 between the 2 closest, if 0 the closest will be used 2951 * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate 2952 * @return allocated ReSampleContext, NULL if error occured 2953 */ 2954ReSampleContext *av_audio_resample_init(int output_channels, int input_channels, 2955 int output_rate, int input_rate, 2956 enum SampleFormat sample_fmt_out, 2957 enum SampleFormat sample_fmt_in, 2958 int filter_length, int log2_phase_count, 2959 int linear, double cutoff); 2960 2961int audio_resample(ReSampleContext *s, short *output, short *input, int nb_samples); 2962void audio_resample_close(ReSampleContext *s); 2963 2964 2965/** 2966 * Initializes an audio resampler. 2967 * Note, if either rate is not an integer then simply scale both rates up so they are. 2968 * @param filter_length length of each FIR filter in the filterbank relative to the cutoff freq 2969 * @param log2_phase_count log2 of the number of entries in the polyphase filterbank 2970 * @param linear If 1 then the used FIR filter will be linearly interpolated 2971 between the 2 closest, if 0 the closest will be used 2972 * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate 2973 */ 2974struct AVResampleContext *av_resample_init(int out_rate, int in_rate, int filter_length, int log2_phase_count, int linear, double cutoff); 2975 2976/** 2977 * resamples. 2978 * @param src an array of unconsumed samples 2979 * @param consumed the number of samples of src which have been consumed are returned here 2980 * @param src_size the number of unconsumed samples available 2981 * @param dst_size the amount of space in samples available in dst 2982 * @param update_ctx If this is 0 then the context will not be modified, that way several channels can be resampled with the same context. 2983 * @return the number of samples written in dst or -1 if an error occurred 2984 */ 2985int av_resample(struct AVResampleContext *c, short *dst, short *src, int *consumed, int src_size, int dst_size, int update_ctx); 2986 2987 2988/** 2989 * Compensates samplerate/timestamp drift. The compensation is done by changing 2990 * the resampler parameters, so no audible clicks or similar distortions occur 2991 * @param compensation_distance distance in output samples over which the compensation should be performed 2992 * @param sample_delta number of output samples which should be output less 2993 * 2994 * example: av_resample_compensate(c, 10, 500) 2995 * here instead of 510 samples only 500 samples would be output 2996 * 2997 * note, due to rounding the actual compensation might be slightly different, 2998 * especially if the compensation_distance is large and the in_rate used during init is small 2999 */ 3000void av_resample_compensate(struct AVResampleContext *c, int sample_delta, int compensation_distance); 3001void av_resample_close(struct AVResampleContext *c); 3002 3003/** 3004 * Allocate memory for a picture. Call avpicture_free to free it. 3005 * 3006 * @param picture the picture to be filled in 3007 * @param pix_fmt the format of the picture 3008 * @param width the width of the picture 3009 * @param height the height of the picture 3010 * @return zero if successful, a negative value if not 3011 */ 3012int avpicture_alloc(AVPicture *picture, enum PixelFormat pix_fmt, int width, int height); 3013 3014/** 3015 * Free a picture previously allocated by avpicture_alloc(). 3016 * 3017 * @param picture the AVPicture to be freed 3018 */ 3019void avpicture_free(AVPicture *picture); 3020 3021/** 3022 * Fill in the AVPicture fields. 3023 * The fields of the given AVPicture are filled in by using the 'ptr' address 3024 * which points to the image data buffer. Depending on the specified picture 3025 * format, one or multiple image data pointers and line sizes will be set. 3026 * If a planar format is specified, several pointers will be set pointing to 3027 * the different picture planes and the line sizes of the different planes 3028 * will be stored in the lines_sizes array. 3029 * Call with ptr == NULL to get the required size for the ptr buffer. 3030 * 3031 * @param picture AVPicture whose fields are to be filled in 3032 * @param ptr Buffer which will contain or contains the actual image data 3033 * @param pix_fmt The format in which the picture data is stored. 3034 * @param width the width of the image in pixels 3035 * @param height the height of the image in pixels 3036 * @return size of the image data in bytes 3037 */ 3038int avpicture_fill(AVPicture *picture, uint8_t *ptr, 3039 enum PixelFormat pix_fmt, int width, int height); 3040int avpicture_layout(const AVPicture* src, enum PixelFormat pix_fmt, int width, int height, 3041 unsigned char *dest, int dest_size); 3042 3043/** 3044 * Calculate the size in bytes that a picture of the given width and height 3045 * would occupy if stored in the given picture format. 3046 * Note that this returns the size of a compact representation as generated 3047 * by avpicture_layout, which can be smaller than the size required for e.g. 3048 * avpicture_fill. 3049 * 3050 * @param pix_fmt the given picture format 3051 * @param width the width of the image 3052 * @param height the height of the image 3053 * @return Image data size in bytes or -1 on error (e.g. too large dimensions). 3054 */ 3055int avpicture_get_size(enum PixelFormat pix_fmt, int width, int height); 3056void avcodec_get_chroma_sub_sample(enum PixelFormat pix_fmt, int *h_shift, int *v_shift); 3057const char *avcodec_get_pix_fmt_name(enum PixelFormat pix_fmt); 3058void avcodec_set_dimensions(AVCodecContext *s, int width, int height); 3059 3060#if LIBAVCODEC_VERSION_MAJOR < 53 3061/** 3062 * Returns the pixel format corresponding to the name name. 3063 * 3064 * If there is no pixel format with name name, then looks for a 3065 * pixel format with the name corresponding to the native endian 3066 * format of name. 3067 * For example in a little-endian system, first looks for "gray16", 3068 * then for "gray16le". 3069 * 3070 * Finally if no pixel format has been found, returns PIX_FMT_NONE. 3071 * 3072 * @deprecated Deprecated in favor of av_get_pix_fmt(). 3073 */ 3074attribute_deprecated enum PixelFormat avcodec_get_pix_fmt(const char* name); 3075#endif 3076 3077/** 3078 * Returns a value representing the fourCC code associated to the 3079 * pixel format pix_fmt, or 0 if no associated fourCC code can be 3080 * found. 3081 */ 3082unsigned int avcodec_pix_fmt_to_codec_tag(enum PixelFormat pix_fmt); 3083 3084#define FF_LOSS_RESOLUTION 0x0001 /**< loss due to resolution change */ 3085#define FF_LOSS_DEPTH 0x0002 /**< loss due to color depth change */ 3086#define FF_LOSS_COLORSPACE 0x0004 /**< loss due to color space conversion */ 3087#define FF_LOSS_ALPHA 0x0008 /**< loss of alpha bits */ 3088#define FF_LOSS_COLORQUANT 0x0010 /**< loss due to color quantization */ 3089#define FF_LOSS_CHROMA 0x0020 /**< loss of chroma (e.g. RGB to gray conversion) */ 3090 3091/** 3092 * Computes what kind of losses will occur when converting from one specific 3093 * pixel format to another. 3094 * When converting from one pixel format to another, information loss may occur. 3095 * For example, when converting from RGB24 to GRAY, the color information will 3096 * be lost. Similarly, other losses occur when converting from some formats to 3097 * other formats. These losses can involve loss of chroma, but also loss of 3098 * resolution, loss of color depth, loss due to the color space conversion, loss 3099 * of the alpha bits or loss due to color quantization. 3100 * avcodec_get_fix_fmt_loss() informs you about the various types of losses 3101 * which will occur when converting from one pixel format to another. 3102 * 3103 * @param[in] dst_pix_fmt destination pixel format 3104 * @param[in] src_pix_fmt source pixel format 3105 * @param[in] has_alpha Whether the source pixel format alpha channel is used. 3106 * @return Combination of flags informing you what kind of losses will occur. 3107 */ 3108int avcodec_get_pix_fmt_loss(enum PixelFormat dst_pix_fmt, enum PixelFormat src_pix_fmt, 3109 int has_alpha); 3110 3111/** 3112 * Finds the best pixel format to convert to given a certain source pixel 3113 * format. When converting from one pixel format to another, information loss 3114 * may occur. For example, when converting from RGB24 to GRAY, the color 3115 * information will be lost. Similarly, other losses occur when converting from 3116 * some formats to other formats. avcodec_find_best_pix_fmt() searches which of 3117 * the given pixel formats should be used to suffer the least amount of loss. 3118 * The pixel formats from which it chooses one, are determined by the 3119 * pix_fmt_mask parameter. 3120 * 3121 * @code 3122 * src_pix_fmt = PIX_FMT_YUV420P; 3123 * pix_fmt_mask = (1 << PIX_FMT_YUV422P) || (1 << PIX_FMT_RGB24); 3124 * dst_pix_fmt = avcodec_find_best_pix_fmt(pix_fmt_mask, src_pix_fmt, alpha, &loss); 3125 * @endcode 3126 * 3127 * @param[in] pix_fmt_mask bitmask determining which pixel format to choose from 3128 * @param[in] src_pix_fmt source pixel format 3129 * @param[in] has_alpha Whether the source pixel format alpha channel is used. 3130 * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur. 3131 * @return The best pixel format to convert to or -1 if none was found. 3132 */ 3133enum PixelFormat avcodec_find_best_pix_fmt(int64_t pix_fmt_mask, enum PixelFormat src_pix_fmt, 3134 int has_alpha, int *loss_ptr); 3135 3136 3137/** 3138 * Print in buf the string corresponding to the pixel format with 3139 * number pix_fmt, or an header if pix_fmt is negative. 3140 * 3141 * @param[in] buf the buffer where to write the string 3142 * @param[in] buf_size the size of buf 3143 * @param[in] pix_fmt the number of the pixel format to print the corresponding info string, or 3144 * a negative value to print the corresponding header. 3145 * Meaningful values for obtaining a pixel format info vary from 0 to PIX_FMT_NB -1. 3146 */ 3147void avcodec_pix_fmt_string (char *buf, int buf_size, enum PixelFormat pix_fmt); 3148 3149#define FF_ALPHA_TRANSP 0x0001 /* image has some totally transparent pixels */ 3150#define FF_ALPHA_SEMI_TRANSP 0x0002 /* image has some transparent pixels */ 3151 3152/** 3153 * Tell if an image really has transparent alpha values. 3154 * @return ored mask of FF_ALPHA_xxx constants 3155 */ 3156int img_get_alpha_info(const AVPicture *src, 3157 enum PixelFormat pix_fmt, int width, int height); 3158 3159/* deinterlace a picture */ 3160/* deinterlace - if not supported return -1 */ 3161int avpicture_deinterlace(AVPicture *dst, const AVPicture *src, 3162 enum PixelFormat pix_fmt, int width, int height); 3163 3164/* external high level API */ 3165 3166/** 3167 * If c is NULL, returns the first registered codec, 3168 * if c is non-NULL, returns the next registered codec after c, 3169 * or NULL if c is the last one. 3170 */ 3171AVCodec *av_codec_next(AVCodec *c); 3172 3173/** 3174 * Returns the LIBAVCODEC_VERSION_INT constant. 3175 */ 3176unsigned avcodec_version(void); 3177 3178/** 3179 * Returns the libavcodec build-time configuration. 3180 */ 3181const char *avcodec_configuration(void); 3182 3183/** 3184 * Returns the libavcodec license. 3185 */ 3186const char *avcodec_license(void); 3187 3188/** 3189 * Initializes libavcodec. 3190 * 3191 * @warning This function must be called before any other libavcodec 3192 * function. 3193 */ 3194void avcodec_init(void); 3195 3196#if LIBAVCODEC_VERSION_MAJOR < 53 3197/** 3198 * @deprecated Deprecated in favor of avcodec_register(). 3199 */ 3200attribute_deprecated void register_avcodec(AVCodec *codec); 3201#endif 3202 3203/** 3204 * Register the codec codec and initialize libavcodec. 3205 * 3206 * @see avcodec_init() 3207 */ 3208void avcodec_register(AVCodec *codec); 3209 3210/** 3211 * Finds a registered encoder with a matching codec ID. 3212 * 3213 * @param id CodecID of the requested encoder 3214 * @return An encoder if one was found, NULL otherwise. 3215 */ 3216AVCodec *avcodec_find_encoder(enum CodecID id); 3217 3218/** 3219 * Finds a registered encoder with the specified name. 3220 * 3221 * @param name name of the requested encoder 3222 * @return An encoder if one was found, NULL otherwise. 3223 */ 3224AVCodec *avcodec_find_encoder_by_name(const char *name); 3225 3226/** 3227 * Finds a registered decoder with a matching codec ID. 3228 * 3229 * @param id CodecID of the requested decoder 3230 * @return A decoder if one was found, NULL otherwise. 3231 */ 3232AVCodec *avcodec_find_decoder(enum CodecID id); 3233 3234/** 3235 * Finds a registered decoder with the specified name. 3236 * 3237 * @param name name of the requested decoder 3238 * @return A decoder if one was found, NULL otherwise. 3239 */ 3240AVCodec *avcodec_find_decoder_by_name(const char *name); 3241void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode); 3242 3243/** 3244 * Sets the fields of the given AVCodecContext to default values. 3245 * 3246 * @param s The AVCodecContext of which the fields should be set to default values. 3247 */ 3248void avcodec_get_context_defaults(AVCodecContext *s); 3249 3250/** THIS FUNCTION IS NOT YET PART OF THE PUBLIC API! 3251 * we WILL change its arguments and name a few times! */ 3252void avcodec_get_context_defaults2(AVCodecContext *s, enum AVMediaType); 3253 3254/** 3255 * Allocates an AVCodecContext and sets its fields to default values. The 3256 * resulting struct can be deallocated by simply calling av_free(). 3257 * 3258 * @return An AVCodecContext filled with default values or NULL on failure. 3259 * @see avcodec_get_context_defaults 3260 */ 3261AVCodecContext *avcodec_alloc_context(void); 3262 3263/** THIS FUNCTION IS NOT YET PART OF THE PUBLIC API! 3264 * we WILL change its arguments and name a few times! */ 3265AVCodecContext *avcodec_alloc_context2(enum AVMediaType); 3266 3267/** 3268 * Copy the settings of the source AVCodecContext into the destination 3269 * AVCodecContext. The resulting destination codec context will be 3270 * unopened, i.e. you are required to call avcodec_open() before you 3271 * can use this AVCodecContext to decode/encode video/audio data. 3272 * 3273 * @param dest target codec context, should be initialized with 3274 * avcodec_alloc_context(), but otherwise uninitialized 3275 * @param src source codec context 3276 * @return AVERROR() on error (e.g. memory allocation error), 0 on success 3277 */ 3278int avcodec_copy_context(AVCodecContext *dest, const AVCodecContext *src); 3279 3280/** 3281 * Sets the fields of the given AVFrame to default values. 3282 * 3283 * @param pic The AVFrame of which the fields should be set to default values. 3284 */ 3285void avcodec_get_frame_defaults(AVFrame *pic); 3286 3287/** 3288 * Allocates an AVFrame and sets its fields to default values. The resulting 3289 * struct can be deallocated by simply calling av_free(). 3290 * 3291 * @return An AVFrame filled with default values or NULL on failure. 3292 * @see avcodec_get_frame_defaults 3293 */ 3294AVFrame *avcodec_alloc_frame(void); 3295 3296int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic); 3297void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic); 3298int avcodec_default_reget_buffer(AVCodecContext *s, AVFrame *pic); 3299 3300/** 3301 * Returns the amount of padding in pixels which the get_buffer callback must 3302 * provide around the edge of the image for codecs which do not have the 3303 * CODEC_FLAG_EMU_EDGE flag. 3304 * 3305 * @return Required padding in pixels. 3306 */ 3307unsigned avcodec_get_edge_width(void); 3308/** 3309 * Modifies width and height values so that they will result in a memory 3310 * buffer that is acceptable for the codec if you do not use any horizontal 3311 * padding. 3312 * 3313 * May only be used if a codec with CODEC_CAP_DR1 has been opened. 3314 * If CODEC_FLAG_EMU_EDGE is not set, the dimensions must have been increased 3315 * according to avcodec_get_edge_width() before. 3316 */ 3317void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height); 3318/** 3319 * Modifies width and height values so that they will result in a memory 3320 * buffer that is acceptable for the codec if you also ensure that all 3321 * line sizes are a multiple of the respective linesize_align[i]. 3322 * 3323 * May only be used if a codec with CODEC_CAP_DR1 has been opened. 3324 * If CODEC_FLAG_EMU_EDGE is not set, the dimensions must have been increased 3325 * according to avcodec_get_edge_width() before. 3326 */ 3327void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height, 3328 int linesize_align[4]); 3329 3330/** 3331 * Checks if the given dimension of a picture is valid, meaning that all 3332 * bytes of the picture can be addressed with a signed int. 3333 * 3334 * @param[in] w Width of the picture. 3335 * @param[in] h Height of the picture. 3336 * @return Zero if valid, a negative value if invalid. 3337 */ 3338int avcodec_check_dimensions(void *av_log_ctx, unsigned int w, unsigned int h); 3339enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat * fmt); 3340 3341int avcodec_thread_init(AVCodecContext *s, int thread_count); 3342void avcodec_thread_free(AVCodecContext *s); 3343int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret, int count, int size); 3344int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int, int),void *arg, int *ret, int count); 3345//FIXME func typedef 3346 3347/** 3348 * Initializes the AVCodecContext to use the given AVCodec. Prior to using this 3349 * function the context has to be allocated. 3350 * 3351 * The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(), 3352 * avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for 3353 * retrieving a codec. 3354 * 3355 * @warning This function is not thread safe! 3356 * 3357 * @code 3358 * avcodec_register_all(); 3359 * codec = avcodec_find_decoder(CODEC_ID_H264); 3360 * if (!codec) 3361 * exit(1); 3362 * 3363 * context = avcodec_alloc_context(); 3364 * 3365 * if (avcodec_open(context, codec) < 0) 3366 * exit(1); 3367 * @endcode 3368 * 3369 * @param avctx The context which will be set up to use the given codec. 3370 * @param codec The codec to use within the context. 3371 * @return zero on success, a negative value on error 3372 * @see avcodec_alloc_context, avcodec_find_decoder, avcodec_find_encoder 3373 */ 3374int avcodec_open(AVCodecContext *avctx, AVCodec *codec); 3375 3376#if LIBAVCODEC_VERSION_MAJOR < 53 3377/** 3378 * Decodes an audio frame from buf into samples. 3379 * Wrapper function which calls avcodec_decode_audio3. 3380 * 3381 * @deprecated Use avcodec_decode_audio3 instead. 3382 * @param avctx the codec context 3383 * @param[out] samples the output buffer 3384 * @param[in,out] frame_size_ptr the output buffer size in bytes 3385 * @param[in] buf the input buffer 3386 * @param[in] buf_size the input buffer size in bytes 3387 * @return On error a negative value is returned, otherwise the number of bytes 3388 * used or zero if no frame could be decompressed. 3389 */ 3390attribute_deprecated int avcodec_decode_audio2(AVCodecContext *avctx, int16_t *samples, 3391 int *frame_size_ptr, 3392 const uint8_t *buf, int buf_size); 3393#endif 3394 3395/** 3396 * Decodes the audio frame of size avpkt->size from avpkt->data into samples. 3397 * Some decoders may support multiple frames in a single AVPacket, such 3398 * decoders would then just decode the first frame. In this case, 3399 * avcodec_decode_audio3 has to be called again with an AVPacket that contains 3400 * the remaining data in order to decode the second frame etc. 3401 * If no frame 3402 * could be outputted, frame_size_ptr is zero. Otherwise, it is the 3403 * decompressed frame size in bytes. 3404 * 3405 * @warning You must set frame_size_ptr to the allocated size of the 3406 * output buffer before calling avcodec_decode_audio3(). 3407 * 3408 * @warning The input buffer must be FF_INPUT_BUFFER_PADDING_SIZE larger than 3409 * the actual read bytes because some optimized bitstream readers read 32 or 64 3410 * bits at once and could read over the end. 3411 * 3412 * @warning The end of the input buffer avpkt->data should be set to 0 to ensure that 3413 * no overreading happens for damaged MPEG streams. 3414 * 3415 * @note You might have to align the input buffer avpkt->data and output buffer 3416 * samples. The alignment requirements depend on the CPU: On some CPUs it isn't 3417 * necessary at all, on others it won't work at all if not aligned and on others 3418 * it will work but it will have an impact on performance. 3419 * 3420 * In practice, avpkt->data should have 4 byte alignment at minimum and 3421 * samples should be 16 byte aligned unless the CPU doesn't need it 3422 * (AltiVec and SSE do). 3423 * 3424 * @param avctx the codec context 3425 * @param[out] samples the output buffer, sample type in avctx->sample_fmt 3426 * @param[in,out] frame_size_ptr the output buffer size in bytes 3427 * @param[in] avpkt The input AVPacket containing the input buffer. 3428 * You can create such packet with av_init_packet() and by then setting 3429 * data and size, some decoders might in addition need other fields. 3430 * All decoders are designed to use the least fields possible though. 3431 * @return On error a negative value is returned, otherwise the number of bytes 3432 * used or zero if no frame data was decompressed (used) from the input AVPacket. 3433 */ 3434int avcodec_decode_audio3(AVCodecContext *avctx, int16_t *samples, 3435 int *frame_size_ptr, 3436 AVPacket *avpkt); 3437 3438#if LIBAVCODEC_VERSION_MAJOR < 53 3439/** 3440 * Decodes a video frame from buf into picture. 3441 * Wrapper function which calls avcodec_decode_video2. 3442 * 3443 * @deprecated Use avcodec_decode_video2 instead. 3444 * @param avctx the codec context 3445 * @param[out] picture The AVFrame in which the decoded video frame will be stored. 3446 * @param[in] buf the input buffer 3447 * @param[in] buf_size the size of the input buffer in bytes 3448 * @param[in,out] got_picture_ptr Zero if no frame could be decompressed, otherwise, it is nonzero. 3449 * @return On error a negative value is returned, otherwise the number of bytes 3450 * used or zero if no frame could be decompressed. 3451 */ 3452attribute_deprecated int avcodec_decode_video(AVCodecContext *avctx, AVFrame *picture, 3453 int *got_picture_ptr, 3454 const uint8_t *buf, int buf_size); 3455#endif 3456 3457/** 3458 * Decodes the video frame of size avpkt->size from avpkt->data into picture. 3459 * Some decoders may support multiple frames in a single AVPacket, such 3460 * decoders would then just decode the first frame. 3461 * 3462 * @warning The input buffer must be FF_INPUT_BUFFER_PADDING_SIZE larger than 3463 * the actual read bytes because some optimized bitstream readers read 32 or 64 3464 * bits at once and could read over the end. 3465 * 3466 * @warning The end of the input buffer buf should be set to 0 to ensure that 3467 * no overreading happens for damaged MPEG streams. 3468 * 3469 * @note You might have to align the input buffer avpkt->data. 3470 * The alignment requirements depend on the CPU: on some CPUs it isn't 3471 * necessary at all, on others it won't work at all if not aligned and on others 3472 * it will work but it will have an impact on performance. 3473 * 3474 * In practice, avpkt->data should have 4 byte alignment at minimum. 3475 * 3476 * @note Some codecs have a delay between input and output, these need to be 3477 * fed with avpkt->data=NULL, avpkt->size=0 at the end to return the remaining frames. 3478 * 3479 * @param avctx the codec context 3480 * @param[out] picture The AVFrame in which the decoded video frame will be stored. 3481 * Use avcodec_alloc_frame to get an AVFrame, the codec will 3482 * allocate memory for the actual bitmap. 3483 * @param[in] avpkt The input AVpacket containing the input buffer. 3484 * You can create such packet with av_init_packet() and by then setting 3485 * data and size, some decoders might in addition need other fields like 3486 * flags&AV_PKT_FLAG_KEY. All decoders are designed to use the least 3487 * fields possible. 3488 * @param[in,out] got_picture_ptr Zero if no frame could be decompressed, otherwise, it is nonzero. 3489 * @return On error a negative value is returned, otherwise the number of bytes 3490 * used or zero if no frame could be decompressed. 3491 */ 3492int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, 3493 int *got_picture_ptr, 3494 AVPacket *avpkt); 3495 3496#if LIBAVCODEC_VERSION_MAJOR < 53 3497/* Decode a subtitle message. Return -1 if error, otherwise return the 3498 * number of bytes used. If no subtitle could be decompressed, 3499 * got_sub_ptr is zero. Otherwise, the subtitle is stored in *sub. */ 3500attribute_deprecated int avcodec_decode_subtitle(AVCodecContext *avctx, AVSubtitle *sub, 3501 int *got_sub_ptr, 3502 const uint8_t *buf, int buf_size); 3503#endif 3504 3505/** 3506 * Decodes a subtitle message. 3507 * Returns a negative value on error, otherwise returns the number of bytes used. 3508 * If no subtitle could be decompressed, got_sub_ptr is zero. 3509 * Otherwise, the subtitle is stored in *sub. 3510 * 3511 * @param avctx the codec context 3512 * @param[out] sub The AVSubtitle in which the decoded subtitle will be stored. 3513 * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero. 3514 * @param[in] avpkt The input AVPacket containing the input buffer. 3515 */ 3516int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, 3517 int *got_sub_ptr, 3518 AVPacket *avpkt); 3519int avcodec_parse_frame(AVCodecContext *avctx, uint8_t **pdata, 3520 int *data_size_ptr, 3521 uint8_t *buf, int buf_size); 3522 3523/** 3524 * Encodes an audio frame from samples into buf. 3525 * 3526 * @note The output buffer should be at least FF_MIN_BUFFER_SIZE bytes large. 3527 * However, for PCM audio the user will know how much space is needed 3528 * because it depends on the value passed in buf_size as described 3529 * below. In that case a lower value can be used. 3530 * 3531 * @param avctx the codec context 3532 * @param[out] buf the output buffer 3533 * @param[in] buf_size the output buffer size 3534 * @param[in] samples the input buffer containing the samples 3535 * The number of samples read from this buffer is frame_size*channels, 3536 * both of which are defined in avctx. 3537 * For PCM audio the number of samples read from samples is equal to 3538 * buf_size * input_sample_size / output_sample_size. 3539 * @return On error a negative value is returned, on success zero or the number 3540 * of bytes used to encode the data read from the input buffer. 3541 */ 3542int avcodec_encode_audio(AVCodecContext *avctx, uint8_t *buf, int buf_size, 3543 const short *samples); 3544 3545/** 3546 * Encodes a video frame from pict into buf. 3547 * The input picture should be 3548 * stored using a specific format, namely avctx.pix_fmt. 3549 * 3550 * @param avctx the codec context 3551 * @param[out] buf the output buffer for the bitstream of encoded frame 3552 * @param[in] buf_size the size of the output buffer in bytes 3553 * @param[in] pict the input picture to encode 3554 * @return On error a negative value is returned, on success zero or the number 3555 * of bytes used from the output buffer. 3556 */ 3557int avcodec_encode_video(AVCodecContext *avctx, uint8_t *buf, int buf_size, 3558 const AVFrame *pict); 3559int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, 3560 const AVSubtitle *sub); 3561 3562int avcodec_close(AVCodecContext *avctx); 3563 3564/** 3565 * Register all the codecs, parsers and bitstream filters which were enabled at 3566 * configuration time. If you do not call this function you can select exactly 3567 * which formats you want to support, by using the individual registration 3568 * functions. 3569 * 3570 * @see avcodec_register 3571 * @see av_register_codec_parser 3572 * @see av_register_bitstream_filter 3573 */ 3574void avcodec_register_all(void); 3575 3576/** 3577 * Flush buffers, should be called when seeking or when switching to a different stream. 3578 */ 3579void avcodec_flush_buffers(AVCodecContext *avctx); 3580 3581void avcodec_default_free_buffers(AVCodecContext *s); 3582 3583/* misc useful functions */ 3584 3585/** 3586 * Returns a single letter to describe the given picture type pict_type. 3587 * 3588 * @param[in] pict_type the picture type 3589 * @return A single character representing the picture type. 3590 */ 3591char av_get_pict_type_char(int pict_type); 3592 3593/** 3594 * Returns codec bits per sample. 3595 * 3596 * @param[in] codec_id the codec 3597 * @return Number of bits per sample or zero if unknown for the given codec. 3598 */ 3599int av_get_bits_per_sample(enum CodecID codec_id); 3600 3601/** 3602 * Returns sample format bits per sample. 3603 * 3604 * @param[in] sample_fmt the sample format 3605 * @return Number of bits per sample or zero if unknown for the given sample format. 3606 */ 3607int av_get_bits_per_sample_format(enum SampleFormat sample_fmt); 3608 3609/* frame parsing */ 3610typedef struct AVCodecParserContext { 3611 void *priv_data; 3612 struct AVCodecParser *parser; 3613 int64_t frame_offset; /* offset of the current frame */ 3614 int64_t cur_offset; /* current offset 3615 (incremented by each av_parser_parse()) */ 3616 int64_t next_frame_offset; /* offset of the next frame */ 3617 /* video info */ 3618 int pict_type; /* XXX: Put it back in AVCodecContext. */ 3619 /** 3620 * This field is used for proper frame duration computation in lavf. 3621 * It signals, how much longer the frame duration of the current frame 3622 * is compared to normal frame duration. 3623 * 3624 * frame_duration = (1 + repeat_pict) * time_base 3625 * 3626 * It is used by codecs like H.264 to display telecined material. 3627 */ 3628 int repeat_pict; /* XXX: Put it back in AVCodecContext. */ 3629 int64_t pts; /* pts of the current frame */ 3630 int64_t dts; /* dts of the current frame */ 3631 3632 /* private data */ 3633 int64_t last_pts; 3634 int64_t last_dts; 3635 int fetch_timestamp; 3636 3637#define AV_PARSER_PTS_NB 4 3638 int cur_frame_start_index; 3639 int64_t cur_frame_offset[AV_PARSER_PTS_NB]; 3640 int64_t cur_frame_pts[AV_PARSER_PTS_NB]; 3641 int64_t cur_frame_dts[AV_PARSER_PTS_NB]; 3642 3643 int flags; 3644#define PARSER_FLAG_COMPLETE_FRAMES 0x0001 3645 3646 int64_t offset; ///< byte offset from starting packet start 3647 int64_t cur_frame_end[AV_PARSER_PTS_NB]; 3648 3649 /*! 3650 * Set by parser to 1 for key frames and 0 for non-key frames. 3651 * It is initialized to -1, so if the parser doesn't set this flag, 3652 * old-style fallback using FF_I_TYPE picture type as key frames 3653 * will be used. 3654 */ 3655 int key_frame; 3656 3657 /** 3658 * Time difference in stream time base units from the pts of this 3659 * packet to the point at which the output from the decoder has converged 3660 * independent from the availability of previous frames. That is, the 3661 * frames are virtually identical no matter if decoding started from 3662 * the very first frame or from this keyframe. 3663 * Is AV_NOPTS_VALUE if unknown. 3664 * This field is not the display duration of the current frame. 3665 * 3666 * The purpose of this field is to allow seeking in streams that have no 3667 * keyframes in the conventional sense. It corresponds to the 3668 * recovery point SEI in H.264 and match_time_delta in NUT. It is also 3669 * essential for some types of subtitle streams to ensure that all 3670 * subtitles are correctly displayed after seeking. 3671 */ 3672 int64_t convergence_duration; 3673 3674 // Timestamp generation support: 3675 /** 3676 * Synchronization point for start of timestamp generation. 3677 * 3678 * Set to >0 for sync point, 0 for no sync point and <0 for undefined 3679 * (default). 3680 * 3681 * For example, this corresponds to presence of H.264 buffering period 3682 * SEI message. 3683 */ 3684 int dts_sync_point; 3685 3686 /** 3687 * Offset of the current timestamp against last timestamp sync point in 3688 * units of AVCodecContext.time_base. 3689 * 3690 * Set to INT_MIN when dts_sync_point unused. Otherwise, it must 3691 * contain a valid timestamp offset. 3692 * 3693 * Note that the timestamp of sync point has usually a nonzero 3694 * dts_ref_dts_delta, which refers to the previous sync point. Offset of 3695 * the next frame after timestamp sync point will be usually 1. 3696 * 3697 * For example, this corresponds to H.264 cpb_removal_delay. 3698 */ 3699 int dts_ref_dts_delta; 3700 3701 /** 3702 * Presentation delay of current frame in units of AVCodecContext.time_base. 3703 * 3704 * Set to INT_MIN when dts_sync_point unused. Otherwise, it must 3705 * contain valid non-negative timestamp delta (presentation time of a frame 3706 * must not lie in the past). 3707 * 3708 * This delay represents the difference between decoding and presentation 3709 * time of the frame. 3710 * 3711 * For example, this corresponds to H.264 dpb_output_delay. 3712 */ 3713 int pts_dts_delta; 3714 3715 /** 3716 * Position of the packet in file. 3717 * 3718 * Analogous to cur_frame_pts/dts 3719 */ 3720 int64_t cur_frame_pos[AV_PARSER_PTS_NB]; 3721 3722 /** 3723 * Byte position of currently parsed frame in stream. 3724 */ 3725 int64_t pos; 3726 3727 /** 3728 * Previous frame byte position. 3729 */ 3730 int64_t last_pos; 3731} AVCodecParserContext; 3732 3733typedef struct AVCodecParser { 3734 int codec_ids[5]; /* several codec IDs are permitted */ 3735 int priv_data_size; 3736 int (*parser_init)(AVCodecParserContext *s); 3737 int (*parser_parse)(AVCodecParserContext *s, 3738 AVCodecContext *avctx, 3739 const uint8_t **poutbuf, int *poutbuf_size, 3740 const uint8_t *buf, int buf_size); 3741 void (*parser_close)(AVCodecParserContext *s); 3742 int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size); 3743 struct AVCodecParser *next; 3744} AVCodecParser; 3745 3746AVCodecParser *av_parser_next(AVCodecParser *c); 3747 3748void av_register_codec_parser(AVCodecParser *parser); 3749AVCodecParserContext *av_parser_init(int codec_id); 3750 3751#if LIBAVCODEC_VERSION_MAJOR < 53 3752attribute_deprecated 3753int av_parser_parse(AVCodecParserContext *s, 3754 AVCodecContext *avctx, 3755 uint8_t **poutbuf, int *poutbuf_size, 3756 const uint8_t *buf, int buf_size, 3757 int64_t pts, int64_t dts); 3758#endif 3759 3760/** 3761 * Parse a packet. 3762 * 3763 * @param s parser context. 3764 * @param avctx codec context. 3765 * @param poutbuf set to pointer to parsed buffer or NULL if not yet finished. 3766 * @param poutbuf_size set to size of parsed buffer or zero if not yet finished. 3767 * @param buf input buffer. 3768 * @param buf_size input length, to signal EOF, this should be 0 (so that the last frame can be output). 3769 * @param pts input presentation timestamp. 3770 * @param dts input decoding timestamp. 3771 * @param pos input byte position in stream. 3772 * @return the number of bytes of the input bitstream used. 3773 * 3774 * Example: 3775 * @code 3776 * while(in_len){ 3777 * len = av_parser_parse2(myparser, AVCodecContext, &data, &size, 3778 * in_data, in_len, 3779 * pts, dts, pos); 3780 * in_data += len; 3781 * in_len -= len; 3782 * 3783 * if(size) 3784 * decode_frame(data, size); 3785 * } 3786 * @endcode 3787 */ 3788int av_parser_parse2(AVCodecParserContext *s, 3789 AVCodecContext *avctx, 3790 uint8_t **poutbuf, int *poutbuf_size, 3791 const uint8_t *buf, int buf_size, 3792 int64_t pts, int64_t dts, 3793 int64_t pos); 3794 3795int av_parser_change(AVCodecParserContext *s, 3796 AVCodecContext *avctx, 3797 uint8_t **poutbuf, int *poutbuf_size, 3798 const uint8_t *buf, int buf_size, int keyframe); 3799void av_parser_close(AVCodecParserContext *s); 3800 3801 3802typedef struct AVBitStreamFilterContext { 3803 void *priv_data; 3804 struct AVBitStreamFilter *filter; 3805 AVCodecParserContext *parser; 3806 struct AVBitStreamFilterContext *next; 3807} AVBitStreamFilterContext; 3808 3809 3810typedef struct AVBitStreamFilter { 3811 const char *name; 3812 int priv_data_size; 3813 int (*filter)(AVBitStreamFilterContext *bsfc, 3814 AVCodecContext *avctx, const char *args, 3815 uint8_t **poutbuf, int *poutbuf_size, 3816 const uint8_t *buf, int buf_size, int keyframe); 3817 void (*close)(AVBitStreamFilterContext *bsfc); 3818 struct AVBitStreamFilter *next; 3819} AVBitStreamFilter; 3820 3821void av_register_bitstream_filter(AVBitStreamFilter *bsf); 3822AVBitStreamFilterContext *av_bitstream_filter_init(const char *name); 3823int av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc, 3824 AVCodecContext *avctx, const char *args, 3825 uint8_t **poutbuf, int *poutbuf_size, 3826 const uint8_t *buf, int buf_size, int keyframe); 3827void av_bitstream_filter_close(AVBitStreamFilterContext *bsf); 3828 3829AVBitStreamFilter *av_bitstream_filter_next(AVBitStreamFilter *f); 3830 3831/* memory */ 3832 3833/** 3834 * Reallocates the given block if it is not large enough, otherwise it 3835 * does nothing. 3836 * 3837 * @see av_realloc 3838 */ 3839void *av_fast_realloc(void *ptr, unsigned int *size, unsigned int min_size); 3840 3841/** 3842 * Allocates a buffer, reusing the given one if large enough. 3843 * 3844 * Contrary to av_fast_realloc the current buffer contents might not be 3845 * preserved and on error the old buffer is freed, thus no special 3846 * handling to avoid memleaks is necessary. 3847 * 3848 * @param ptr pointer to pointer to already allocated buffer, overwritten with pointer to new buffer 3849 * @param size size of the buffer *ptr points to 3850 * @param min_size minimum size of *ptr buffer after returning, *ptr will be NULL and 3851 * *size 0 if an error occurred. 3852 */ 3853void av_fast_malloc(void *ptr, unsigned int *size, unsigned int min_size); 3854 3855/** 3856 * Copy image 'src' to 'dst'. 3857 */ 3858void av_picture_copy(AVPicture *dst, const AVPicture *src, 3859 enum PixelFormat pix_fmt, int width, int height); 3860 3861/** 3862 * Crop image top and left side. 3863 */ 3864int av_picture_crop(AVPicture *dst, const AVPicture *src, 3865 enum PixelFormat pix_fmt, int top_band, int left_band); 3866 3867/** 3868 * Pad image. 3869 */ 3870int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width, enum PixelFormat pix_fmt, 3871 int padtop, int padbottom, int padleft, int padright, int *color); 3872 3873/** 3874 * Encodes extradata length to a buffer. Used by xiph codecs. 3875 * 3876 * @param s buffer to write to; must be at least (v/255+1) bytes long 3877 * @param v size of extradata in bytes 3878 * @return number of bytes written to the buffer. 3879 */ 3880unsigned int av_xiphlacing(unsigned char *s, unsigned int v); 3881 3882/** 3883 * Parses str and put in width_ptr and height_ptr the detected values. 3884 * 3885 * @return 0 in case of a successful parsing, a negative value otherwise 3886 * @param[in] str the string to parse: it has to be a string in the format 3887 * <width>x<height> or a valid video frame size abbreviation. 3888 * @param[in,out] width_ptr pointer to the variable which will contain the detected 3889 * frame width value 3890 * @param[in,out] height_ptr pointer to the variable which will contain the detected 3891 * frame height value 3892 */ 3893int av_parse_video_frame_size(int *width_ptr, int *height_ptr, const char *str); 3894 3895/** 3896 * Parses str and put in frame_rate the detected values. 3897 * 3898 * @return 0 in case of a successful parsing, a negative value otherwise 3899 * @param[in] str the string to parse: it has to be a string in the format 3900 * <frame_rate_num>/<frame_rate_den>, a float number or a valid video rate abbreviation 3901 * @param[in,out] frame_rate pointer to the AVRational which will contain the detected 3902 * frame rate 3903 */ 3904int av_parse_video_frame_rate(AVRational *frame_rate, const char *str); 3905 3906/** 3907 * Logs a generic warning message about a missing feature. This function is 3908 * intended to be used internally by FFmpeg (libavcodec, libavformat, etc.) 3909 * only, and would normally not be used by applications. 3910 * @param[in] avc a pointer to an arbitrary struct of which the first field is 3911 * a pointer to an AVClass struct 3912 * @param[in] feature string containing the name of the missing feature 3913 * @param[in] want_sample indicates if samples are wanted which exhibit this feature. 3914 * If want_sample is non-zero, additional verbage will be added to the log 3915 * message which tells the user how to report samples to the development 3916 * mailing list. 3917 */ 3918void av_log_missing_feature(void *avc, const char *feature, int want_sample); 3919 3920/** 3921 * Logs a generic warning message asking for a sample. This function is 3922 * intended to be used internally by FFmpeg (libavcodec, libavformat, etc.) 3923 * only, and would normally not be used by applications. 3924 * @param[in] avc a pointer to an arbitrary struct of which the first field is 3925 * a pointer to an AVClass struct 3926 * @param[in] msg string containing an optional message, or NULL if no message 3927 */ 3928void av_log_ask_for_sample(void *avc, const char *msg); 3929 3930/** 3931 * Registers the hardware accelerator hwaccel. 3932 */ 3933void av_register_hwaccel(AVHWAccel *hwaccel); 3934 3935/** 3936 * If hwaccel is NULL, returns the first registered hardware accelerator, 3937 * if hwaccel is non-NULL, returns the next registered hardware accelerator 3938 * after hwaccel, or NULL if hwaccel is the last one. 3939 */ 3940AVHWAccel *av_hwaccel_next(AVHWAccel *hwaccel); 3941 3942 3943/** 3944 * Lock operation used by lockmgr 3945 */ 3946enum AVLockOp { 3947 AV_LOCK_CREATE, ///< Create a mutex 3948 AV_LOCK_OBTAIN, ///< Lock the mutex 3949 AV_LOCK_RELEASE, ///< Unlock the mutex 3950 AV_LOCK_DESTROY, ///< Free mutex resources 3951}; 3952 3953/** 3954 * Register a user provided lock manager supporting the operations 3955 * specified by AVLockOp. mutex points to a (void *) where the 3956 * lockmgr should store/get a pointer to a user allocated mutex. It's 3957 * NULL upon AV_LOCK_CREATE and != NULL for all other ops. 3958 * 3959 * @param cb User defined callback. Note: FFmpeg may invoke calls to this 3960 * callback during the call to av_lockmgr_register(). 3961 * Thus, the application must be prepared to handle that. 3962 * If cb is set to NULL the lockmgr will be unregistered. 3963 * Also note that during unregistration the previously registered 3964 * lockmgr callback may also be invoked. 3965 */ 3966int av_lockmgr_register(int (*cb)(void **mutex, enum AVLockOp op)); 3967 3968#endif /* AVCODEC_AVCODEC_H */ 3969