]> git.sesse.net Git - vlc/blob - modules/codec/avcodec/avcommon_compat.h
0c020100785488b1831e87254042e5a379770009
[vlc] / modules / codec / avcodec / avcommon_compat.h
1 /*****************************************************************************
2  * avcodec.h: decoder and encoder using libavcodec
3  *****************************************************************************
4  * Copyright (C) 2001-2013 VLC authors and VideoLAN
5  * $Id$
6  *
7  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
8  *          Jean-Baptiste Kempf <jb@videolan.org>
9  *
10  * This program is free software; you can redistribute it and/or modify it
11  * under the terms of the GNU Lesser General Public License as published by
12  * the Free Software Foundation; either version 2.1 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU Lesser General Public License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public License
21  * along with this program; if not, write to the Free Software Foundation,
22  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
23  *****************************************************************************/
24
25 #ifndef AVCOMMON_COMPAT_H
26 #define AVCOMMON_COMPAT_H 1
27
28 #ifdef HAVE_LIBAVCODEC_AVCODEC_H
29 #include <libavcodec/avcodec.h>
30
31 /* LIBAVCODEC_VERSION_CHECK checks for the right version of libav and FFmpeg
32  * a is the major version
33  * b and c the minor and micro versions of libav
34  * d and e the minor and micro versions of FFmpeg */
35 #define LIBAVCODEC_VERSION_CHECK( a, b, c, d, e ) \
36     ( (LIBAVCODEC_VERSION_MICRO <  100 && LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( a, b, c ) ) || \
37       (LIBAVCODEC_VERSION_MICRO >= 100 && LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( a, d, e ) ) )
38
39 #if LIBAVCODEC_VERSION_MAJOR < 54
40 #   define AV_PICTURE_TYPE_B        FF_B_TYPE
41 #   define AV_PICTURE_TYPE_I        FF_I_TYPE
42 #   define AV_PICTURE_TYPE_P        FF_P_TYPE
43
44 #   define AV_SAMPLE_FMT_NONE       SAMPLE_FMT_NONE
45 #   define AV_SAMPLE_FMT_U8         SAMPLE_FMT_U8
46 #   define AV_SAMPLE_FMT_S16        SAMPLE_FMT_S16
47 #   define AV_SAMPLE_FMT_S32        SAMPLE_FMT_S32
48 #   define AV_SAMPLE_FMT_FLT        SAMPLE_FMT_FLT
49 #   define AV_SAMPLE_FMT_DBL        SAMPLE_FMT_DBL
50
51 #ifndef AV_CH_FRONT_LEFT
52 #   define AV_CH_FRONT_LEFT         CH_FRONT_LEFT
53 #endif
54 #ifndef AV_CH_FRONT_RIGHT
55 #   define AV_CH_FRONT_RIGHT        CH_FRONT_RIGHT
56 #endif
57 #ifndef AV_CH_FRONT_CENTER
58 #   define AV_CH_FRONT_CENTER       CH_FRONT_CENTER
59 #endif
60 #ifndef AV_CH_LOW_FREQUENCY
61 #   define AV_CH_LOW_FREQUENCY      CH_LOW_FREQUENCY
62 #endif
63 #ifndef AV_CH_BACK_LEFT
64 #   define AV_CH_BACK_LEFT          CH_BACK_LEFT
65 #endif
66 #ifndef AV_CH_BACK_RIGHT
67 #   define AV_CH_BACK_RIGHT         CH_BACK_RIGHT
68 #endif
69 #ifndef AV_CH_FRONT_LEFT_OF_CENTER
70 #   define AV_CH_FRONT_LEFT_OF_CENTER  CH_FRONT_LEFT_OF_CENTER
71 #endif
72 #ifndef AV_CH_FRONT_RIGHT_OF_CENTER
73 #   define AV_CH_FRONT_RIGHT_OF_CENTER CH_FRONT_RIGHT_OF_CENTER
74 #endif
75 #ifndef AV_CH_BACK_CENTER
76 #   define AV_CH_BACK_CENTER        CH_BACK_CENTER
77 #endif
78 #ifndef AV_CH_SIDE_LEFT
79 #   define AV_CH_SIDE_LEFT          CH_SIDE_LEFT
80 #endif
81 #ifndef AV_CH_SIDE_RIGHT
82 #   define AV_CH_SIDE_RIGHT         CH_SIDE_RIGHT
83 #endif
84 #ifndef AV_CH_TOP_CENTER
85 #   define AV_CH_TOP_CENTER         CH_TOP_CENTER
86 #endif
87 #ifndef AV_CH_TOP_FRONT_LEFT
88 #   define AV_CH_TOP_FRONT_LEFT     CH_TOP_FRONT_LEFT
89 #endif
90 #ifndef AV_CH_TOP_FRONT_CENTER
91 #   define AV_CH_TOP_FRONT_CENTER   CH_TOP_FRONT_CENTER
92 #endif
93 #ifndef AV_CH_TOP_FRONT_RIGHT
94 #   define AV_CH_TOP_FRONT_RIGHT    CH_TOP_FRONT_RIGHT
95 #endif
96 #ifndef AV_CH_TOP_BACK_LEFT
97 #   define AV_CH_TOP_BACK_LEFT      CH_TOP_BACK_LEFT
98 #endif
99 #ifndef AV_CH_TOP_BACK_CENTER
100 #   define AV_CH_TOP_BACK_CENTER    CH_TOP_BACK_CENTER
101 #endif
102 #ifndef AV_CH_TOP_BACK_RIGHT
103 #   define AV_CH_TOP_BACK_RIGHT     CH_TOP_BACK_RIGHT
104 #endif
105 #ifndef AV_CH_STEREO_LEFT
106 #   define AV_CH_STEREO_LEFT        CH_STEREO_LEFT
107 #endif
108 #ifndef AV_CH_STEREO_RIGHT
109 #   define AV_CH_STEREO_RIGHT       CH_STEREO_RIGHT
110 #endif
111
112 #endif /* LIBAVCODEC_VERSION_MAJOR < 54 */
113
114 #if !LIBAVCODEC_VERSION_CHECK(54, 25, 0, 51, 100)
115 #define AVCodecID CodecID
116
117 enum {
118     AV_CODEC_ID_NONE,
119
120     /* video codecs */
121     AV_CODEC_ID_MPEG1VIDEO,
122     AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding
123     AV_CODEC_ID_MPEG2VIDEO_XVMC,
124     AV_CODEC_ID_H261,
125     AV_CODEC_ID_H263,
126     AV_CODEC_ID_RV10,
127     AV_CODEC_ID_RV20,
128     AV_CODEC_ID_MJPEG,
129     AV_CODEC_ID_MJPEGB,
130     AV_CODEC_ID_LJPEG,
131     AV_CODEC_ID_SP5X,
132     AV_CODEC_ID_JPEGLS,
133     AV_CODEC_ID_MPEG4,
134     AV_CODEC_ID_RAWVIDEO,
135     AV_CODEC_ID_MSMPEG4V1,
136     AV_CODEC_ID_MSMPEG4V2,
137     AV_CODEC_ID_MSMPEG4V3,
138     AV_CODEC_ID_WMV1,
139     AV_CODEC_ID_WMV2,
140     AV_CODEC_ID_H263P,
141     AV_CODEC_ID_H263I,
142     AV_CODEC_ID_FLV1,
143     AV_CODEC_ID_SVQ1,
144     AV_CODEC_ID_SVQ3,
145     AV_CODEC_ID_DVVIDEO,
146     AV_CODEC_ID_HUFFYUV,
147     AV_CODEC_ID_CYUV,
148     AV_CODEC_ID_H264,
149     AV_CODEC_ID_INDEO3,
150     AV_CODEC_ID_VP3,
151     AV_CODEC_ID_THEORA,
152     AV_CODEC_ID_ASV1,
153     AV_CODEC_ID_ASV2,
154     AV_CODEC_ID_FFV1,
155     AV_CODEC_ID_4XM,
156     AV_CODEC_ID_VCR1,
157     AV_CODEC_ID_CLJR,
158     AV_CODEC_ID_MDEC,
159     AV_CODEC_ID_ROQ,
160     AV_CODEC_ID_INTERPLAY_VIDEO,
161     AV_CODEC_ID_XAN_WC3,
162     AV_CODEC_ID_XAN_WC4,
163     AV_CODEC_ID_RPZA,
164     AV_CODEC_ID_CINEPAK,
165     AV_CODEC_ID_WS_VQA,
166     AV_CODEC_ID_MSRLE,
167     AV_CODEC_ID_MSVIDEO1,
168     AV_CODEC_ID_IDCIN,
169     AV_CODEC_ID_8BPS,
170     AV_CODEC_ID_SMC,
171     AV_CODEC_ID_FLIC,
172     AV_CODEC_ID_TRUEMOTION1,
173     AV_CODEC_ID_VMDVIDEO,
174     AV_CODEC_ID_MSZH,
175     AV_CODEC_ID_ZLIB,
176     AV_CODEC_ID_QTRLE,
177     AV_CODEC_ID_SNOW,
178     AV_CODEC_ID_TSCC,
179     AV_CODEC_ID_ULTI,
180     AV_CODEC_ID_QDRAW,
181     AV_CODEC_ID_VIXL,
182     AV_CODEC_ID_QPEG,
183     AV_CODEC_ID_PNG,
184     AV_CODEC_ID_PPM,
185     AV_CODEC_ID_PBM,
186     AV_CODEC_ID_PGM,
187     AV_CODEC_ID_PGMYUV,
188     AV_CODEC_ID_PAM,
189     AV_CODEC_ID_FFVHUFF,
190     AV_CODEC_ID_RV30,
191     AV_CODEC_ID_RV40,
192     AV_CODEC_ID_VC1,
193     AV_CODEC_ID_WMV3,
194     AV_CODEC_ID_LOCO,
195     AV_CODEC_ID_WNV1,
196     AV_CODEC_ID_AASC,
197     AV_CODEC_ID_INDEO2,
198     AV_CODEC_ID_FRAPS,
199     AV_CODEC_ID_TRUEMOTION2,
200     AV_CODEC_ID_BMP,
201     AV_CODEC_ID_CSCD,
202     AV_CODEC_ID_MMVIDEO,
203     AV_CODEC_ID_ZMBV,
204     AV_CODEC_ID_AVS,
205     AV_CODEC_ID_SMACKVIDEO,
206     AV_CODEC_ID_NUV,
207     AV_CODEC_ID_KMVC,
208     AV_CODEC_ID_FLASHSV,
209     AV_CODEC_ID_CAVS,
210     AV_CODEC_ID_JPEG2000,
211     AV_CODEC_ID_VMNC,
212     AV_CODEC_ID_VP5,
213     AV_CODEC_ID_VP6,
214     AV_CODEC_ID_VP6F,
215     AV_CODEC_ID_TARGA,
216     AV_CODEC_ID_DSICINVIDEO,
217     AV_CODEC_ID_TIERTEXSEQVIDEO,
218     AV_CODEC_ID_TIFF,
219     AV_CODEC_ID_GIF,
220 #if LIBAVCODEC_VERSION_MAJOR == 53
221     AV_CODEC_ID_FFH264,
222 #endif
223     AV_CODEC_ID_DXA,
224     AV_CODEC_ID_DNXHD,
225     AV_CODEC_ID_THP,
226     AV_CODEC_ID_SGI,
227     AV_CODEC_ID_C93,
228     AV_CODEC_ID_BETHSOFTVID,
229     AV_CODEC_ID_PTX,
230     AV_CODEC_ID_TXD,
231     AV_CODEC_ID_VP6A,
232     AV_CODEC_ID_AMV,
233     AV_CODEC_ID_VB,
234     AV_CODEC_ID_PCX,
235     AV_CODEC_ID_SUNRAST,
236     AV_CODEC_ID_INDEO4,
237     AV_CODEC_ID_INDEO5,
238     AV_CODEC_ID_MIMIC,
239     AV_CODEC_ID_RL2,
240 #if LIBAVCODEC_VERSION_MAJOR == 53
241     AV_CODEC_ID_8SVX_EXP,
242     AV_CODEC_ID_8SVX_FIB,
243 #endif
244     AV_CODEC_ID_ESCAPE124,
245     AV_CODEC_ID_DIRAC,
246     AV_CODEC_ID_BFI,
247     AV_CODEC_ID_CMV,
248     AV_CODEC_ID_MOTIONPIXELS,
249     AV_CODEC_ID_TGV,
250     AV_CODEC_ID_TGQ,
251     AV_CODEC_ID_TQI,
252     AV_CODEC_ID_AURA,
253     AV_CODEC_ID_AURA2,
254     AV_CODEC_ID_V210X,
255     AV_CODEC_ID_TMV,
256     AV_CODEC_ID_V210,
257     AV_CODEC_ID_DPX,
258     AV_CODEC_ID_MAD,
259     AV_CODEC_ID_FRWU,
260     AV_CODEC_ID_FLASHSV2,
261     AV_CODEC_ID_CDGRAPHICS,
262     AV_CODEC_ID_R210,
263     AV_CODEC_ID_ANM,
264     AV_CODEC_ID_BINKVIDEO,
265     AV_CODEC_ID_IFF_ILBM,
266     AV_CODEC_ID_IFF_BYTERUN1,
267     AV_CODEC_ID_KGV1,
268     AV_CODEC_ID_YOP,
269     AV_CODEC_ID_VP8,
270     AV_CODEC_ID_PICTOR,
271     AV_CODEC_ID_ANSI,
272     AV_CODEC_ID_A64_MULTI,
273     AV_CODEC_ID_A64_MULTI5,
274     AV_CODEC_ID_R10K,
275     AV_CODEC_ID_MXPEG,
276     AV_CODEC_ID_LAGARITH,
277     AV_CODEC_ID_PRORES,
278     AV_CODEC_ID_JV,
279     AV_CODEC_ID_DFA,
280     AV_CODEC_ID_WMV3IMAGE,
281     AV_CODEC_ID_VC1IMAGE,
282 #if LIBAVCODEC_VERSION_MAJOR == 53
283     AV_CODEC_ID_G723_1,
284     AV_CODEC_ID_G729,
285 #endif
286     AV_CODEC_ID_UTVIDEO,
287     AV_CODEC_ID_BMV_VIDEO,
288     AV_CODEC_ID_VBLE,
289     AV_CODEC_ID_DXTORY,
290     AV_CODEC_ID_V410,
291     AV_CODEC_ID_XWD,
292     AV_CODEC_ID_CDXL,
293     AV_CODEC_ID_XBM,
294     AV_CODEC_ID_ZEROCODEC,
295     AV_CODEC_ID_MSS1,
296     AV_CODEC_ID_MSA1,
297     AV_CODEC_ID_TSCC2,
298     AV_CODEC_ID_MTS2,
299     AV_CODEC_ID_CLLC,
300
301     /* various PAV_CM "codecs" */
302     AV_CODEC_ID_FIRST_AUDIO = 0x10000,     ///< A dummy id pointing at the start of audio codecs
303     AV_CODEC_ID_PCM_S16LE = 0x10000,
304     AV_CODEC_ID_PCM_S16BE,
305     AV_CODEC_ID_PCM_U16LE,
306     AV_CODEC_ID_PCM_U16BE,
307     AV_CODEC_ID_PCM_S8,
308     AV_CODEC_ID_PCM_U8,
309     AV_CODEC_ID_PCM_MULAW,
310     AV_CODEC_ID_PCM_ALAW,
311     AV_CODEC_ID_PCM_S32LE,
312     AV_CODEC_ID_PCM_S32BE,
313     AV_CODEC_ID_PCM_U32LE,
314     AV_CODEC_ID_PCM_U32BE,
315     AV_CODEC_ID_PCM_S24LE,
316     AV_CODEC_ID_PCM_S24BE,
317     AV_CODEC_ID_PCM_U24LE,
318     AV_CODEC_ID_PCM_U24BE,
319     AV_CODEC_ID_PCM_S24DAUD,
320     AV_CODEC_ID_PCM_ZORK,
321     AV_CODEC_ID_PCM_S16LE_PLANAR,
322     AV_CODEC_ID_PCM_DVD,
323     AV_CODEC_ID_PCM_F32BE,
324     AV_CODEC_ID_PCM_F32LE,
325     AV_CODEC_ID_PCM_F64BE,
326     AV_CODEC_ID_PCM_F64LE,
327     AV_CODEC_ID_PCM_BLURAY,
328     AV_CODEC_ID_PCM_LXF,
329     AV_CODEC_ID_S302M,
330     AV_CODEC_ID_PCM_S8_PLANAR,
331
332     /* various ADPAV_CM codecs */
333     AV_CODEC_ID_ADPCM_IMA_QT = 0x11000,
334     AV_CODEC_ID_ADPCM_IMA_WAV,
335     AV_CODEC_ID_ADPCM_IMA_DK3,
336     AV_CODEC_ID_ADPCM_IMA_DK4,
337     AV_CODEC_ID_ADPCM_IMA_WS,
338     AV_CODEC_ID_ADPCM_IMA_SMJPEG,
339     AV_CODEC_ID_ADPCM_MS,
340     AV_CODEC_ID_ADPCM_4XM,
341     AV_CODEC_ID_ADPCM_XA,
342     AV_CODEC_ID_ADPCM_ADX,
343     AV_CODEC_ID_ADPCM_EA,
344     AV_CODEC_ID_ADPCM_G726,
345     AV_CODEC_ID_ADPCM_CT,
346     AV_CODEC_ID_ADPCM_SWF,
347     AV_CODEC_ID_ADPCM_YAMAHA,
348     AV_CODEC_ID_ADPCM_SBPRO_4,
349     AV_CODEC_ID_ADPCM_SBPRO_3,
350     AV_CODEC_ID_ADPCM_SBPRO_2,
351     AV_CODEC_ID_ADPCM_THP,
352     AV_CODEC_ID_ADPCM_IMA_AMV,
353     AV_CODEC_ID_ADPCM_EA_R1,
354     AV_CODEC_ID_ADPCM_EA_R3,
355     AV_CODEC_ID_ADPCM_EA_R2,
356     AV_CODEC_ID_ADPCM_IMA_EA_SEAD,
357     AV_CODEC_ID_ADPCM_IMA_EA_EACS,
358     AV_CODEC_ID_ADPCM_EA_XAS,
359     AV_CODEC_ID_ADPCM_EA_MAXIS_XA,
360     AV_CODEC_ID_ADPCM_IMA_ISS,
361     AV_CODEC_ID_ADPCM_G722,
362     AV_CODEC_ID_ADPCM_IMA_APC,
363
364     /* AMR */
365     AV_CODEC_ID_AMR_NB = 0x12000,
366     AV_CODEC_ID_AMR_WB,
367
368     /* RealAudio codecs*/
369     AV_CODEC_ID_RA_144 = 0x13000,
370     AV_CODEC_ID_RA_288,
371
372     /* various DPAV_CM codecs */
373     AV_CODEC_ID_ROQ_DPCM = 0x14000,
374     AV_CODEC_ID_INTERPLAY_DPCM,
375     AV_CODEC_ID_XAN_DPCM,
376     AV_CODEC_ID_SOL_DPCM,
377
378     /* audio codecs */
379     AV_CODEC_ID_MP2 = 0x15000,
380     AV_CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3
381     AV_CODEC_ID_AAC,
382     AV_CODEC_ID_AC3,
383     AV_CODEC_ID_DTS,
384     AV_CODEC_ID_VORBIS,
385     AV_CODEC_ID_DVAUDIO,
386     AV_CODEC_ID_WMAV1,
387     AV_CODEC_ID_WMAV2,
388     AV_CODEC_ID_MACE3,
389     AV_CODEC_ID_MACE6,
390     AV_CODEC_ID_VMDAUDIO,
391 #if LIBAVCODEC_VERSION_MAJOR == 53
392     AV_CODEC_ID_SONIC,
393     AV_CODEC_ID_SONIC_LS,
394 #endif
395     AV_CODEC_ID_FLAC,
396     AV_CODEC_ID_MP3ADU,
397     AV_CODEC_ID_MP3ON4,
398     AV_CODEC_ID_SHORTEN,
399     AV_CODEC_ID_ALAC,
400     AV_CODEC_ID_WESTWOOD_SND1,
401     AV_CODEC_ID_GSM, ///< as in Berlin toast format
402     AV_CODEC_ID_QDM2,
403     AV_CODEC_ID_COOK,
404     AV_CODEC_ID_TRUESPEECH,
405     AV_CODEC_ID_TTA,
406     AV_CODEC_ID_SMACKAUDIO,
407     AV_CODEC_ID_QCELP,
408     AV_CODEC_ID_WAVPACK,
409     AV_CODEC_ID_DSICINAUDIO,
410     AV_CODEC_ID_IMC,
411     AV_CODEC_ID_MUSEPACK7,
412     AV_CODEC_ID_MLP,
413     AV_CODEC_ID_GSM_MS, /* as found in WAV */
414     AV_CODEC_ID_ATRAC3,
415 #if LIBAVCODEC_VERSION_MAJOR < 56
416     AV_CODEC_ID_VOXWARE,
417 #endif
418     AV_CODEC_ID_APE,
419     AV_CODEC_ID_NELLYMOSER,
420     AV_CODEC_ID_MUSEPACK8,
421     AV_CODEC_ID_SPEEX,
422     AV_CODEC_ID_WMAVOICE,
423     AV_CODEC_ID_WMAPRO,
424     AV_CODEC_ID_WMALOSSLESS,
425     AV_CODEC_ID_ATRAC3P,
426     AV_CODEC_ID_EAC3,
427     AV_CODEC_ID_SIPR,
428     AV_CODEC_ID_MP1,
429     AV_CODEC_ID_TWINVQ,
430     AV_CODEC_ID_TRUEHD,
431     AV_CODEC_ID_MP4ALS,
432     AV_CODEC_ID_ATRAC1,
433     AV_CODEC_ID_BINKAUDIO_RDFT,
434     AV_CODEC_ID_BINKAUDIO_DCT,
435     AV_CODEC_ID_AAC_LATM,
436     AV_CODEC_ID_QDMC,
437     AV_CODEC_ID_CELT,
438 #if LIBAVCODEC_VERSION_MAJOR > 53
439     AV_CODEC_ID_G723_1,
440     AV_CODEC_ID_G729,
441     AV_CODEC_ID_8SVX_EXP,
442     AV_CODEC_ID_8SVX_FIB,
443 #endif
444     AV_CODEC_ID_BMV_AUDIO,
445     AV_CODEC_ID_RALF,
446     AV_CODEC_ID_IAC,
447     AV_CODEC_ID_ILBC,
448
449     /* subtitle codecs */
450     AV_CODEC_ID_FIRST_SUBTITLE = 0x17000,          ///< A dummy ID pointing at the start of subtitle codecs.
451     AV_CODEC_ID_DVD_SUBTITLE = 0x17000,
452     AV_CODEC_ID_DVB_SUBTITLE,
453     AV_CODEC_ID_TEXT,  ///< raw UTF-8 text
454     AV_CODEC_ID_XSUB,
455     AV_CODEC_ID_SSA,
456     AV_CODEC_ID_MOV_TEXT,
457     AV_CODEC_ID_HDMV_PGS_SUBTITLE,
458     AV_CODEC_ID_DVB_TELETEXT,
459     AV_CODEC_ID_SRT,
460
461     /* other specific kind of codecs (generally used for attachments) */
462     AV_CODEC_ID_FIRST_UNKNOWN = 0x18000,           ///< A dummy ID pointing at the start of various fake codecs.
463     AV_CODEC_ID_TTF = 0x18000,
464
465     AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it
466
467     AV_CODEC_ID_MPEG2TS = 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS
468                                 * stream (only used by libavformat) */
469     AV_CODEC_ID_MPEG4SYSTEMS = 0x20001, /**< _FAKE_ codec to indicate a MPEG-4 Systems
470                                 * stream (only used by libavformat) */
471     AV_CODEC_ID_FFMETADATA = 0x21000,   ///< Dummy codec for streams containing only metadata information.
472 };
473
474 #endif /* LIBAVCODEC_VERSION < 54.25 */
475
476 #if LIBAVCODEC_VERSION_MAJOR < 54
477 # define avcodec_alloc_context3(a) avcodec_alloc_context()
478 # define avcodec_open2(a, b, c) avcodec_open(a, b)
479 # define err_recognition error_recognition
480 #endif
481
482 #endif /* HAVE_LIBAVCODEC_AVCODEC_H */
483
484 #ifdef HAVE_LIBAVUTIL_AVUTIL_H
485 # include <libavutil/avutil.h>
486
487 /* LIBAVUTIL_VERSION_CHECK checks for the right version of libav and FFmpeg
488  * a is the major version
489  * b and c the minor and micro versions of libav
490  * d and e the minor and micro versions of FFmpeg */
491 #define LIBAVUTIL_VERSION_CHECK( a, b, c, d, e ) \
492     ( (LIBAVUTIL_VERSION_MICRO <  100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( a, b, c ) ) || \
493       (LIBAVUTIL_VERSION_MICRO >= 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( a, d, e ) ) )
494
495 #if LIBAVUTIL_VERSION_MAJOR < 52 && !defined(AV_CPU_FLAG_MMXEXT)
496 #   define AV_CPU_FLAG_MMXEXT       AV_CPU_FLAG_MMX2
497 #endif
498
499 #if !LIBAVUTIL_VERSION_CHECK( 52, 11, 0, 32, 100 )
500 #   define AV_PIX_FMT_FLAG_HWACCEL  PIX_FMT_HWACCEL
501 #endif
502
503 #if !LIBAVUTIL_VERSION_CHECK( 51, 44, 0, 76, 100 )
504 #   define av_pix_fmt_desc_get(a) &av_pix_fmt_descriptors[a]
505 #endif
506
507 #endif /* HAVE_LIBAVUTIL_AVUTIL_H */
508
509 #endif