1/* 2 * Provides registration of all codecs, parsers and bitstream filters for libavcodec. 3 * Copyright (c) 2002 Fabrice Bellard 4 * 5 * This file is part of FFmpeg. 6 * 7 * FFmpeg is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public 9 * License as published by the Free Software Foundation; either 10 * version 2.1 of the License, or (at your option) any later version. 11 * 12 * FFmpeg is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with FFmpeg; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 */ 21 22/** 23 * @file 24 * Provides registration of all codecs, parsers and bitstream filters for libavcodec. 25 */ 26 27#include "avcodec.h" 28 29#define REGISTER_HWACCEL(X,x) { \ 30 extern AVHWAccel x##_hwaccel; \ 31 if(CONFIG_##X##_HWACCEL) av_register_hwaccel(&x##_hwaccel); } 32 33#define REGISTER_ENCODER(X,x) { \ 34 extern AVCodec x##_encoder; \ 35 if(CONFIG_##X##_ENCODER) avcodec_register(&x##_encoder); } 36#define REGISTER_DECODER(X,x) { \ 37 extern AVCodec x##_decoder; \ 38 if(CONFIG_##X##_DECODER) avcodec_register(&x##_decoder); } 39#define REGISTER_ENCDEC(X,x) REGISTER_ENCODER(X,x); REGISTER_DECODER(X,x) 40 41#define REGISTER_PARSER(X,x) { \ 42 extern AVCodecParser x##_parser; \ 43 if(CONFIG_##X##_PARSER) av_register_codec_parser(&x##_parser); } 44#define REGISTER_BSF(X,x) { \ 45 extern AVBitStreamFilter x##_bsf; \ 46 if(CONFIG_##X##_BSF) av_register_bitstream_filter(&x##_bsf); } 47 48void avcodec_register_all(void) 49{ 50 static int initialized; 51 52 if (initialized) 53 return; 54 initialized = 1; 55 56 /* hardware accelerators */ 57 REGISTER_HWACCEL (H263_VAAPI, h263_vaapi); 58 REGISTER_HWACCEL (H264_DXVA2, h264_dxva2); 59 REGISTER_HWACCEL (H264_VAAPI, h264_vaapi); 60 REGISTER_HWACCEL (MPEG2_VAAPI, mpeg2_vaapi); 61 REGISTER_HWACCEL (MPEG4_VAAPI, mpeg4_vaapi); 62 REGISTER_HWACCEL (VC1_DXVA2, vc1_dxva2); 63 REGISTER_HWACCEL (VC1_VAAPI, vc1_vaapi); 64 REGISTER_HWACCEL (WMV3_DXVA2, wmv3_dxva2); 65 REGISTER_HWACCEL (WMV3_VAAPI, wmv3_vaapi); 66 67 /* video codecs */ 68 REGISTER_DECODER (AASC, aasc); 69 REGISTER_DECODER (AMV, amv); 70 REGISTER_DECODER (ANM, anm); 71 REGISTER_ENCDEC (ASV1, asv1); 72 REGISTER_ENCDEC (ASV2, asv2); 73 REGISTER_DECODER (AURA, aura); 74 REGISTER_DECODER (AURA2, aura2); 75 REGISTER_DECODER (AVS, avs); 76 REGISTER_DECODER (BETHSOFTVID, bethsoftvid); 77 REGISTER_DECODER (BFI, bfi); 78 REGISTER_DECODER (BINK, bink); 79 REGISTER_ENCDEC (BMP, bmp); 80 REGISTER_DECODER (C93, c93); 81 REGISTER_DECODER (CAVS, cavs); 82 REGISTER_DECODER (CDGRAPHICS, cdgraphics); 83 REGISTER_DECODER (CINEPAK, cinepak); 84 REGISTER_DECODER (CLJR, cljr); 85 REGISTER_DECODER (CSCD, cscd); 86 REGISTER_DECODER (CYUV, cyuv); 87 REGISTER_ENCDEC (DNXHD, dnxhd); 88 REGISTER_DECODER (DPX, dpx); 89 REGISTER_DECODER (DSICINVIDEO, dsicinvideo); 90 REGISTER_ENCDEC (DVVIDEO, dvvideo); 91 REGISTER_DECODER (DXA, dxa); 92 REGISTER_DECODER (EACMV, eacmv); 93 REGISTER_DECODER (EAMAD, eamad); 94 REGISTER_DECODER (EATGQ, eatgq); 95 REGISTER_DECODER (EATGV, eatgv); 96 REGISTER_DECODER (EATQI, eatqi); 97 REGISTER_DECODER (EIGHTBPS, eightbps); 98 REGISTER_DECODER (EIGHTSVX_EXP, eightsvx_exp); 99 REGISTER_DECODER (EIGHTSVX_FIB, eightsvx_fib); 100 REGISTER_DECODER (ESCAPE124, escape124); 101 REGISTER_ENCDEC (FFV1, ffv1); 102 REGISTER_ENCDEC (FFVHUFF, ffvhuff); 103 REGISTER_ENCDEC (FLASHSV, flashsv); 104 REGISTER_DECODER (FLIC, flic); 105 REGISTER_ENCDEC (FLV, flv); 106 REGISTER_DECODER (FOURXM, fourxm); 107 REGISTER_DECODER (FRAPS, fraps); 108 REGISTER_DECODER (FRWU, frwu); 109 REGISTER_ENCDEC (GIF, gif); 110 REGISTER_ENCDEC (H261, h261); 111 REGISTER_ENCDEC (H263, h263); 112 REGISTER_DECODER (H263I, h263i); 113 REGISTER_ENCODER (H263P, h263p); 114 REGISTER_DECODER (H264, h264); 115 REGISTER_DECODER (H264_VDPAU, h264_vdpau); 116 REGISTER_ENCDEC (HUFFYUV, huffyuv); 117 REGISTER_DECODER (IDCIN, idcin); 118 REGISTER_DECODER (IFF_BYTERUN1, iff_byterun1); 119 REGISTER_DECODER (IFF_ILBM, iff_ilbm); 120 REGISTER_DECODER (INDEO2, indeo2); 121 REGISTER_DECODER (INDEO3, indeo3); 122 REGISTER_DECODER (INDEO5, indeo5); 123 REGISTER_DECODER (INTERPLAY_VIDEO, interplay_video); 124 REGISTER_ENCDEC (JPEGLS, jpegls); 125 REGISTER_DECODER (KGV1, kgv1); 126 REGISTER_DECODER (KMVC, kmvc); 127 REGISTER_ENCODER (LJPEG, ljpeg); 128 REGISTER_DECODER (LOCO, loco); 129 REGISTER_DECODER (MDEC, mdec); 130 REGISTER_DECODER (MIMIC, mimic); 131 REGISTER_ENCDEC (MJPEG, mjpeg); 132 REGISTER_DECODER (MJPEGB, mjpegb); 133 REGISTER_DECODER (MMVIDEO, mmvideo); 134 REGISTER_DECODER (MOTIONPIXELS, motionpixels); 135 REGISTER_DECODER (MPEG_XVMC, mpeg_xvmc); 136 REGISTER_ENCDEC (MPEG1VIDEO, mpeg1video); 137 REGISTER_ENCDEC (MPEG2VIDEO, mpeg2video); 138 REGISTER_ENCDEC (MPEG4, mpeg4); 139 REGISTER_DECODER (MPEG4_VDPAU, mpeg4_vdpau); 140 REGISTER_DECODER (MPEGVIDEO, mpegvideo); 141 REGISTER_DECODER (MPEG_VDPAU, mpeg_vdpau); 142 REGISTER_DECODER (MPEG1_VDPAU, mpeg1_vdpau); 143 REGISTER_ENCDEC (MSMPEG4V1, msmpeg4v1); 144 REGISTER_ENCDEC (MSMPEG4V2, msmpeg4v2); 145 REGISTER_ENCDEC (MSMPEG4V3, msmpeg4v3); 146 REGISTER_DECODER (MSRLE, msrle); 147 REGISTER_DECODER (MSVIDEO1, msvideo1); 148 REGISTER_DECODER (MSZH, mszh); 149 REGISTER_DECODER (NUV, nuv); 150 REGISTER_ENCDEC (PAM, pam); 151 REGISTER_ENCDEC (PBM, pbm); 152 REGISTER_ENCDEC (PCX, pcx); 153 REGISTER_ENCDEC (PGM, pgm); 154 REGISTER_ENCDEC (PGMYUV, pgmyuv); 155 REGISTER_ENCDEC (PNG, png); 156 REGISTER_ENCDEC (PPM, ppm); 157 REGISTER_DECODER (PTX, ptx); 158 REGISTER_DECODER (QDRAW, qdraw); 159 REGISTER_DECODER (QPEG, qpeg); 160 REGISTER_ENCDEC (QTRLE, qtrle); 161 REGISTER_DECODER (R210, r210); 162 REGISTER_ENCDEC (RAWVIDEO, rawvideo); 163 REGISTER_DECODER (RL2, rl2); 164 REGISTER_ENCDEC (ROQ, roq); 165 REGISTER_DECODER (RPZA, rpza); 166 REGISTER_ENCDEC (RV10, rv10); 167 REGISTER_ENCDEC (RV20, rv20); 168 REGISTER_DECODER (RV30, rv30); 169 REGISTER_DECODER (RV40, rv40); 170 REGISTER_ENCDEC (SGI, sgi); 171 REGISTER_DECODER (SMACKER, smacker); 172 REGISTER_DECODER (SMC, smc); 173 REGISTER_ENCDEC (SNOW, snow); 174 REGISTER_DECODER (SP5X, sp5x); 175 REGISTER_DECODER (SUNRAST, sunrast); 176 REGISTER_ENCDEC (SVQ1, svq1); 177 REGISTER_DECODER (SVQ3, svq3); 178 REGISTER_ENCDEC (TARGA, targa); 179 REGISTER_DECODER (THEORA, theora); 180 REGISTER_DECODER (THP, thp); 181 REGISTER_DECODER (TIERTEXSEQVIDEO, tiertexseqvideo); 182 REGISTER_ENCDEC (TIFF, tiff); 183 REGISTER_DECODER (TMV, tmv); 184 REGISTER_DECODER (TRUEMOTION1, truemotion1); 185 REGISTER_DECODER (TRUEMOTION2, truemotion2); 186 REGISTER_DECODER (TSCC, tscc); 187 REGISTER_DECODER (TXD, txd); 188 REGISTER_DECODER (ULTI, ulti); 189 REGISTER_ENCDEC (V210, v210); 190 REGISTER_DECODER (V210X, v210x); 191 REGISTER_DECODER (VB, vb); 192 REGISTER_DECODER (VC1, vc1); 193 REGISTER_DECODER (VC1_VDPAU, vc1_vdpau); 194 REGISTER_DECODER (VCR1, vcr1); 195 REGISTER_DECODER (VMDVIDEO, vmdvideo); 196 REGISTER_DECODER (VMNC, vmnc); 197 REGISTER_DECODER (VP3, vp3); 198 REGISTER_DECODER (VP5, vp5); 199 REGISTER_DECODER (VP6, vp6); 200 REGISTER_DECODER (VP6A, vp6a); 201 REGISTER_DECODER (VP6F, vp6f); 202 REGISTER_DECODER (VQA, vqa); 203 REGISTER_ENCDEC (WMV1, wmv1); 204 REGISTER_ENCDEC (WMV2, wmv2); 205 REGISTER_DECODER (WMV3, wmv3); 206 REGISTER_DECODER (WMV3_VDPAU, wmv3_vdpau); 207 REGISTER_DECODER (WNV1, wnv1); 208 REGISTER_DECODER (XAN_WC3, xan_wc3); 209 REGISTER_DECODER (XL, xl); 210 REGISTER_DECODER (YOP, yop); 211 REGISTER_ENCDEC (ZLIB, zlib); 212 REGISTER_ENCDEC (ZMBV, zmbv); 213 214 /* audio codecs */ 215 REGISTER_ENCDEC (AAC, aac); 216 REGISTER_ENCDEC (AC3, ac3); 217 REGISTER_ENCDEC (ALAC, alac); 218 REGISTER_DECODER (ALS, als); 219 REGISTER_DECODER (AMRNB, amrnb); 220 REGISTER_DECODER (APE, ape); 221 REGISTER_DECODER (ATRAC1, atrac1); 222 REGISTER_DECODER (ATRAC3, atrac3); 223 REGISTER_DECODER (BINKAUDIO_DCT, binkaudio_dct); 224 REGISTER_DECODER (BINKAUDIO_RDFT, binkaudio_rdft); 225 REGISTER_DECODER (COOK, cook); 226 REGISTER_DECODER (DCA, dca); 227 REGISTER_DECODER (DSICINAUDIO, dsicinaudio); 228 REGISTER_DECODER (EAC3, eac3); 229 REGISTER_ENCDEC (FLAC, flac); 230 REGISTER_DECODER (IMC, imc); 231 REGISTER_DECODER (MACE3, mace3); 232 REGISTER_DECODER (MACE6, mace6); 233 REGISTER_DECODER (MLP, mlp); 234 REGISTER_DECODER (MP1, mp1); 235 REGISTER_ENCDEC (MP2, mp2); 236 REGISTER_DECODER (MP3, mp3); 237 REGISTER_DECODER (MP3ADU, mp3adu); 238 REGISTER_DECODER (MP3ON4, mp3on4); 239 REGISTER_DECODER (MPC7, mpc7); 240 REGISTER_DECODER (MPC8, mpc8); 241 REGISTER_ENCDEC (NELLYMOSER, nellymoser); 242 REGISTER_DECODER (QCELP, qcelp); 243 REGISTER_DECODER (QDM2, qdm2); 244 REGISTER_DECODER (RA_144, ra_144); 245 REGISTER_DECODER (RA_288, ra_288); 246 REGISTER_DECODER (SHORTEN, shorten); 247 REGISTER_DECODER (SIPR, sipr); 248 REGISTER_DECODER (SMACKAUD, smackaud); 249 REGISTER_ENCDEC (SONIC, sonic); 250 REGISTER_ENCODER (SONIC_LS, sonic_ls); 251 REGISTER_DECODER (TRUEHD, truehd); 252 REGISTER_DECODER (TRUESPEECH, truespeech); 253 REGISTER_DECODER (TTA, tta); 254 REGISTER_DECODER (TWINVQ, twinvq); 255 REGISTER_DECODER (VMDAUDIO, vmdaudio); 256 REGISTER_DECODER (VORBIS, vorbis); 257 REGISTER_DECODER (WAVPACK, wavpack); 258 REGISTER_DECODER (WMAPRO, wmapro); 259 REGISTER_ENCDEC (WMAV1, wmav1); 260 REGISTER_ENCDEC (WMAV2, wmav2); 261 REGISTER_DECODER (WMAVOICE, wmavoice); 262 REGISTER_DECODER (WS_SND1, ws_snd1); 263 264 /* PCM codecs */ 265 REGISTER_ENCDEC (PCM_ALAW, pcm_alaw); 266 REGISTER_DECODER (PCM_BLURAY, pcm_bluray); 267 REGISTER_DECODER (PCM_DVD, pcm_dvd); 268 REGISTER_ENCDEC (PCM_F32BE, pcm_f32be); 269 REGISTER_ENCDEC (PCM_F32LE, pcm_f32le); 270 REGISTER_ENCDEC (PCM_F64BE, pcm_f64be); 271 REGISTER_ENCDEC (PCM_F64LE, pcm_f64le); 272 REGISTER_ENCDEC (PCM_MULAW, pcm_mulaw); 273 REGISTER_ENCDEC (PCM_S8, pcm_s8); 274 REGISTER_ENCDEC (PCM_S16BE, pcm_s16be); 275 REGISTER_ENCDEC (PCM_S16LE, pcm_s16le); 276 REGISTER_DECODER (PCM_S16LE_PLANAR, pcm_s16le_planar); 277 REGISTER_ENCDEC (PCM_S24BE, pcm_s24be); 278 REGISTER_ENCDEC (PCM_S24DAUD, pcm_s24daud); 279 REGISTER_ENCDEC (PCM_S24LE, pcm_s24le); 280 REGISTER_ENCDEC (PCM_S32BE, pcm_s32be); 281 REGISTER_ENCDEC (PCM_S32LE, pcm_s32le); 282 REGISTER_ENCDEC (PCM_U8, pcm_u8); 283 REGISTER_ENCDEC (PCM_U16BE, pcm_u16be); 284 REGISTER_ENCDEC (PCM_U16LE, pcm_u16le); 285 REGISTER_ENCDEC (PCM_U24BE, pcm_u24be); 286 REGISTER_ENCDEC (PCM_U24LE, pcm_u24le); 287 REGISTER_ENCDEC (PCM_U32BE, pcm_u32be); 288 REGISTER_ENCDEC (PCM_U32LE, pcm_u32le); 289 REGISTER_ENCDEC (PCM_ZORK , pcm_zork); 290 291 /* DPCM codecs */ 292 REGISTER_DECODER (INTERPLAY_DPCM, interplay_dpcm); 293 REGISTER_ENCDEC (ROQ_DPCM, roq_dpcm); 294 REGISTER_DECODER (SOL_DPCM, sol_dpcm); 295 REGISTER_DECODER (XAN_DPCM, xan_dpcm); 296 297 /* ADPCM codecs */ 298 REGISTER_DECODER (ADPCM_4XM, adpcm_4xm); 299 REGISTER_ENCDEC (ADPCM_ADX, adpcm_adx); 300 REGISTER_DECODER (ADPCM_CT, adpcm_ct); 301 REGISTER_DECODER (ADPCM_EA, adpcm_ea); 302 REGISTER_DECODER (ADPCM_EA_MAXIS_XA, adpcm_ea_maxis_xa); 303 REGISTER_DECODER (ADPCM_EA_R1, adpcm_ea_r1); 304 REGISTER_DECODER (ADPCM_EA_R2, adpcm_ea_r2); 305 REGISTER_DECODER (ADPCM_EA_R3, adpcm_ea_r3); 306 REGISTER_DECODER (ADPCM_EA_XAS, adpcm_ea_xas); 307 REGISTER_ENCDEC (ADPCM_G726, adpcm_g726); 308 REGISTER_DECODER (ADPCM_IMA_AMV, adpcm_ima_amv); 309 REGISTER_DECODER (ADPCM_IMA_DK3, adpcm_ima_dk3); 310 REGISTER_DECODER (ADPCM_IMA_DK4, adpcm_ima_dk4); 311 REGISTER_DECODER (ADPCM_IMA_EA_EACS, adpcm_ima_ea_eacs); 312 REGISTER_DECODER (ADPCM_IMA_EA_SEAD, adpcm_ima_ea_sead); 313 REGISTER_DECODER (ADPCM_IMA_ISS, adpcm_ima_iss); 314 REGISTER_ENCDEC (ADPCM_IMA_QT, adpcm_ima_qt); 315 REGISTER_DECODER (ADPCM_IMA_SMJPEG, adpcm_ima_smjpeg); 316 REGISTER_ENCDEC (ADPCM_IMA_WAV, adpcm_ima_wav); 317 REGISTER_DECODER (ADPCM_IMA_WS, adpcm_ima_ws); 318 REGISTER_ENCDEC (ADPCM_MS, adpcm_ms); 319 REGISTER_DECODER (ADPCM_SBPRO_2, adpcm_sbpro_2); 320 REGISTER_DECODER (ADPCM_SBPRO_3, adpcm_sbpro_3); 321 REGISTER_DECODER (ADPCM_SBPRO_4, adpcm_sbpro_4); 322 REGISTER_ENCDEC (ADPCM_SWF, adpcm_swf); 323 REGISTER_DECODER (ADPCM_THP, adpcm_thp); 324 REGISTER_DECODER (ADPCM_XA, adpcm_xa); 325 REGISTER_ENCDEC (ADPCM_YAMAHA, adpcm_yamaha); 326 327 /* subtitles */ 328 REGISTER_ENCDEC (DVBSUB, dvbsub); 329 REGISTER_ENCDEC (DVDSUB, dvdsub); 330 REGISTER_DECODER (PGSSUB, pgssub); 331 REGISTER_ENCDEC (XSUB, xsub); 332 333 /* external libraries */ 334 REGISTER_ENCDEC (LIBDIRAC, libdirac); 335 REGISTER_ENCODER (LIBFAAC, libfaac); 336 REGISTER_DECODER (LIBFAAD, libfaad); 337 REGISTER_ENCDEC (LIBGSM, libgsm); 338 REGISTER_ENCDEC (LIBGSM_MS, libgsm_ms); 339 REGISTER_ENCODER (LIBMP3LAME, libmp3lame); 340 REGISTER_ENCDEC (LIBOPENCORE_AMRNB, libopencore_amrnb); 341 REGISTER_DECODER (LIBOPENCORE_AMRWB, libopencore_amrwb); 342 REGISTER_DECODER (LIBOPENJPEG, libopenjpeg); 343 REGISTER_ENCDEC (LIBSCHROEDINGER, libschroedinger); 344 REGISTER_DECODER (LIBSPEEX, libspeex); 345 REGISTER_ENCODER (LIBTHEORA, libtheora); 346 REGISTER_ENCODER (LIBVORBIS, libvorbis); 347 REGISTER_ENCDEC (LIBVPX, libvpx); 348 REGISTER_ENCODER (LIBX264, libx264); 349 REGISTER_ENCODER (LIBXVID, libxvid); 350 351 /* parsers */ 352 REGISTER_PARSER (AAC, aac); 353 REGISTER_PARSER (AC3, ac3); 354 REGISTER_PARSER (CAVSVIDEO, cavsvideo); 355 REGISTER_PARSER (DCA, dca); 356 REGISTER_PARSER (DIRAC, dirac); 357 REGISTER_PARSER (DNXHD, dnxhd); 358 REGISTER_PARSER (DVBSUB, dvbsub); 359 REGISTER_PARSER (DVDSUB, dvdsub); 360 REGISTER_PARSER (H261, h261); 361 REGISTER_PARSER (H263, h263); 362 REGISTER_PARSER (H264, h264); 363 REGISTER_PARSER (MJPEG, mjpeg); 364 REGISTER_PARSER (MLP, mlp); 365 REGISTER_PARSER (MPEG4VIDEO, mpeg4video); 366 REGISTER_PARSER (MPEGAUDIO, mpegaudio); 367 REGISTER_PARSER (MPEGVIDEO, mpegvideo); 368 REGISTER_PARSER (PNM, pnm); 369 REGISTER_PARSER (VC1, vc1); 370 REGISTER_PARSER (VP3, vp3); 371 372 /* bitstream filters */ 373 REGISTER_BSF (AAC_ADTSTOASC, aac_adtstoasc); 374 REGISTER_BSF (DUMP_EXTRADATA, dump_extradata); 375 REGISTER_BSF (H264_MP4TOANNEXB, h264_mp4toannexb); 376 REGISTER_BSF (IMX_DUMP_HEADER, imx_dump_header); 377 REGISTER_BSF (MJPEGA_DUMP_HEADER, mjpega_dump_header); 378 REGISTER_BSF (MP3_HEADER_COMPRESS, mp3_header_compress); 379 REGISTER_BSF (MP3_HEADER_DECOMPRESS, mp3_header_decompress); 380 REGISTER_BSF (MOV2TEXTSUB, mov2textsub); 381 REGISTER_BSF (NOISE, noise); 382 REGISTER_BSF (REMOVE_EXTRADATA, remove_extradata); 383 REGISTER_BSF (TEXT2MOVSUB, text2movsub); 384} 385 386