1/* 2 * Register all the formats and protocols 3 * Copyright (c) 2000, 2001, 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#include "avformat.h" 22#include "rtp.h" 23#include "rdt.h" 24 25#define REGISTER_MUXER(X,x) { \ 26 extern AVOutputFormat x##_muxer; \ 27 if(CONFIG_##X##_MUXER) av_register_output_format(&x##_muxer); } 28 29#define REGISTER_DEMUXER(X,x) { \ 30 extern AVInputFormat x##_demuxer; \ 31 if(CONFIG_##X##_DEMUXER) av_register_input_format(&x##_demuxer); } 32 33#define REGISTER_MUXDEMUX(X,x) REGISTER_MUXER(X,x); REGISTER_DEMUXER(X,x) 34 35#define REGISTER_PROTOCOL(X,x) { \ 36 extern URLProtocol x##_protocol; \ 37 if(CONFIG_##X##_PROTOCOL) av_register_protocol(&x##_protocol); } 38 39void av_register_all(void) 40{ 41 static int initialized; 42 43 if (initialized) 44 return; 45 initialized = 1; 46 47 avcodec_register_all(); 48 49 /* (de)muxers */ 50 REGISTER_DEMUXER (AAC, aac); 51 REGISTER_MUXDEMUX (AC3, ac3); 52 REGISTER_MUXER (ADTS, adts); 53 REGISTER_MUXDEMUX (AIFF, aiff); 54 REGISTER_MUXDEMUX (AMR, amr); 55 REGISTER_DEMUXER (APC, apc); 56 REGISTER_DEMUXER (APE, ape); 57 REGISTER_MUXDEMUX (ASF, asf); 58 REGISTER_MUXDEMUX (ASS, ass); 59 REGISTER_MUXER (ASF_STREAM, asf_stream); 60 REGISTER_MUXDEMUX (AU, au); 61 REGISTER_MUXDEMUX (AVI, avi); 62 REGISTER_DEMUXER (AVISYNTH, avisynth); 63 REGISTER_MUXER (AVM2, avm2); 64 REGISTER_DEMUXER (AVS, avs); 65 REGISTER_DEMUXER (BETHSOFTVID, bethsoftvid); 66 REGISTER_DEMUXER (BFI, bfi); 67 REGISTER_DEMUXER (C93, c93); 68 REGISTER_DEMUXER (CAVSVIDEO, cavsvideo); 69 REGISTER_MUXER (CRC, crc); 70 REGISTER_MUXDEMUX (DAUD, daud); 71 REGISTER_MUXDEMUX (DIRAC, dirac); 72 REGISTER_MUXDEMUX (DNXHD, dnxhd); 73 REGISTER_DEMUXER (DSICIN, dsicin); 74 REGISTER_MUXDEMUX (DTS, dts); 75 REGISTER_MUXDEMUX (DV, dv); 76 REGISTER_DEMUXER (DXA, dxa); 77 REGISTER_DEMUXER (EA, ea); 78 REGISTER_DEMUXER (EA_CDATA, ea_cdata); 79 REGISTER_MUXDEMUX (EAC3, eac3); 80 REGISTER_MUXDEMUX (FFM, ffm); 81 REGISTER_MUXDEMUX (FLAC, flac); 82 REGISTER_DEMUXER (FLIC, flic); 83 REGISTER_MUXDEMUX (FLV, flv); 84 REGISTER_DEMUXER (FOURXM, fourxm); 85 REGISTER_MUXER (FRAMECRC, framecrc); 86 REGISTER_MUXER (GIF, gif); 87 REGISTER_DEMUXER (GSM, gsm); 88 REGISTER_MUXDEMUX (GXF, gxf); 89 REGISTER_MUXDEMUX (H261, h261); 90 REGISTER_MUXDEMUX (H263, h263); 91 REGISTER_MUXDEMUX (H264, h264); 92 REGISTER_DEMUXER (IDCIN, idcin); 93 REGISTER_DEMUXER (IFF, iff); 94 REGISTER_MUXDEMUX (IMAGE2, image2); 95 REGISTER_MUXDEMUX (IMAGE2PIPE, image2pipe); 96 REGISTER_DEMUXER (INGENIENT, ingenient); 97 REGISTER_DEMUXER (IPMOVIE, ipmovie); 98 REGISTER_MUXER (IPOD, ipod); 99 REGISTER_DEMUXER (ISS, iss); 100 REGISTER_DEMUXER (LMLM4, lmlm4); 101 REGISTER_MUXDEMUX (M4V, m4v); 102 REGISTER_MUXDEMUX (MATROSKA, matroska); 103 REGISTER_MUXER (MATROSKA_AUDIO, matroska_audio); 104 REGISTER_MUXDEMUX (MJPEG, mjpeg); 105 REGISTER_DEMUXER (MLP, mlp); 106 REGISTER_DEMUXER (MM, mm); 107 REGISTER_MUXDEMUX (MMF, mmf); 108 REGISTER_MUXDEMUX (MOV, mov); 109 REGISTER_MUXER (MP2, mp2); 110 REGISTER_MUXDEMUX (MP3, mp3); 111 REGISTER_MUXER (MP4, mp4); 112 REGISTER_DEMUXER (MPC, mpc); 113 REGISTER_DEMUXER (MPC8, mpc8); 114 REGISTER_MUXER (MPEG1SYSTEM, mpeg1system); 115 REGISTER_MUXER (MPEG1VCD, mpeg1vcd); 116 REGISTER_MUXER (MPEG1VIDEO, mpeg1video); 117 REGISTER_MUXER (MPEG2DVD, mpeg2dvd); 118 REGISTER_MUXER (MPEG2SVCD, mpeg2svcd); 119 REGISTER_MUXER (MPEG2VIDEO, mpeg2video); 120 REGISTER_MUXER (MPEG2VOB, mpeg2vob); 121 REGISTER_DEMUXER (MPEGPS, mpegps); 122 REGISTER_MUXDEMUX (MPEGTS, mpegts); 123 REGISTER_DEMUXER (MPEGTSRAW, mpegtsraw); 124 REGISTER_DEMUXER (MPEGVIDEO, mpegvideo); 125 REGISTER_MUXER (MPJPEG, mpjpeg); 126 REGISTER_DEMUXER (MSNWC_TCP, msnwc_tcp); 127 REGISTER_DEMUXER (MTV, mtv); 128 REGISTER_DEMUXER (MVI, mvi); 129 REGISTER_MUXDEMUX (MXF, mxf); 130 REGISTER_MUXER (MXF_D10, mxf_d10); 131 REGISTER_DEMUXER (NC, nc); 132 REGISTER_DEMUXER (NSV, nsv); 133 REGISTER_MUXER (NULL, null); 134 REGISTER_MUXDEMUX (NUT, nut); 135 REGISTER_DEMUXER (NUV, nuv); 136 REGISTER_MUXDEMUX (OGG, ogg); 137 REGISTER_DEMUXER (OMA, oma); 138 REGISTER_MUXDEMUX (PCM_ALAW, pcm_alaw); 139 REGISTER_MUXDEMUX (PCM_MULAW, pcm_mulaw); 140 REGISTER_MUXDEMUX (PCM_F64BE, pcm_f64be); 141 REGISTER_MUXDEMUX (PCM_F64LE, pcm_f64le); 142 REGISTER_MUXDEMUX (PCM_F32BE, pcm_f32be); 143 REGISTER_MUXDEMUX (PCM_F32LE, pcm_f32le); 144 REGISTER_MUXDEMUX (PCM_S32BE, pcm_s32be); 145 REGISTER_MUXDEMUX (PCM_S32LE, pcm_s32le); 146 REGISTER_MUXDEMUX (PCM_S24BE, pcm_s24be); 147 REGISTER_MUXDEMUX (PCM_S24LE, pcm_s24le); 148 REGISTER_MUXDEMUX (PCM_S16BE, pcm_s16be); 149 REGISTER_MUXDEMUX (PCM_S16LE, pcm_s16le); 150 REGISTER_MUXDEMUX (PCM_S8, pcm_s8); 151 REGISTER_MUXDEMUX (PCM_U32BE, pcm_u32be); 152 REGISTER_MUXDEMUX (PCM_U32LE, pcm_u32le); 153 REGISTER_MUXDEMUX (PCM_U24BE, pcm_u24be); 154 REGISTER_MUXDEMUX (PCM_U24LE, pcm_u24le); 155 REGISTER_MUXDEMUX (PCM_U16BE, pcm_u16be); 156 REGISTER_MUXDEMUX (PCM_U16LE, pcm_u16le); 157 REGISTER_MUXDEMUX (PCM_U8, pcm_u8); 158 REGISTER_MUXER (PSP, psp); 159 REGISTER_DEMUXER (PVA, pva); 160 REGISTER_DEMUXER (R3D, r3d); 161 REGISTER_MUXDEMUX (RAWVIDEO, rawvideo); 162 REGISTER_DEMUXER (REDIR, redir); 163 REGISTER_DEMUXER (RL2, rl2); 164 REGISTER_MUXDEMUX (RM, rm); 165 REGISTER_MUXDEMUX (ROQ, roq); 166 REGISTER_DEMUXER (RPL, rpl); 167 REGISTER_MUXER (RTP, rtp); 168 REGISTER_DEMUXER (RTSP, rtsp); 169 REGISTER_DEMUXER (SDP, sdp); 170#if CONFIG_SDP_DEMUXER 171 av_register_rtp_dynamic_payload_handlers(); 172 av_register_rdt_dynamic_payload_handlers(); 173#endif 174 REGISTER_DEMUXER (SEGAFILM, segafilm); 175 REGISTER_DEMUXER (SHORTEN, shorten); 176 REGISTER_DEMUXER (SIFF, siff); 177 REGISTER_DEMUXER (SMACKER, smacker); 178 REGISTER_DEMUXER (SOL, sol); 179 REGISTER_DEMUXER (STR, str); 180 REGISTER_MUXDEMUX (SWF, swf); 181 REGISTER_MUXER (TG2, tg2); 182 REGISTER_MUXER (TGP, tgp); 183 REGISTER_DEMUXER (THP, thp); 184 REGISTER_DEMUXER (TIERTEXSEQ, tiertexseq); 185 REGISTER_DEMUXER (TTA, tta); 186 REGISTER_DEMUXER (TXD, txd); 187 REGISTER_DEMUXER (VC1, vc1); 188 REGISTER_MUXDEMUX (VC1T, vc1t); 189 REGISTER_DEMUXER (VMD, vmd); 190 REGISTER_MUXDEMUX (VOC, voc); 191 REGISTER_MUXDEMUX (WAV, wav); 192 REGISTER_DEMUXER (WC3, wc3); 193 REGISTER_DEMUXER (WSAUD, wsaud); 194 REGISTER_DEMUXER (WSVQA, wsvqa); 195 REGISTER_DEMUXER (WV, wv); 196 REGISTER_DEMUXER (XA, xa); 197 REGISTER_MUXDEMUX (YUV4MPEGPIPE, yuv4mpegpipe); 198 199 /* external libraries */ 200 REGISTER_MUXDEMUX (LIBNUT, libnut); 201 202 /* protocols */ 203 REGISTER_PROTOCOL (FILE, file); 204 REGISTER_PROTOCOL (GOPHER, gopher); 205 REGISTER_PROTOCOL (HTTP, http); 206 REGISTER_PROTOCOL (PIPE, pipe); 207 REGISTER_PROTOCOL (RTP, rtp); 208 REGISTER_PROTOCOL (TCP, tcp); 209 REGISTER_PROTOCOL (UDP, udp); 210} 211