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