allformats.c
Go to the documentation of this file.
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 
22 #include "avformat.h"
23 #include "rtp.h"
24 #include "rdt.h"
25 #include "url.h"
26 #include "version.h"
27 
28 #define REGISTER_MUXER(X, x) \
29  { \
30  extern AVOutputFormat ff_##x##_muxer; \
31  if (CONFIG_##X##_MUXER) \
32  av_register_output_format(&ff_##x##_muxer); \
33  }
34 
35 #define REGISTER_DEMUXER(X, x) \
36  { \
37  extern AVInputFormat ff_##x##_demuxer; \
38  if (CONFIG_##X##_DEMUXER) \
39  av_register_input_format(&ff_##x##_demuxer); \
40  }
41 
42 #define REGISTER_MUXDEMUX(X, x) REGISTER_MUXER(X, x); REGISTER_DEMUXER(X, x)
43 
44 #define REGISTER_PROTOCOL(X, x) \
45  { \
46  extern URLProtocol ff_##x##_protocol; \
47  if (CONFIG_##X##_PROTOCOL) \
48  ffurl_register_protocol(&ff_##x##_protocol, \
49  sizeof(ff_##x##_protocol)); \
50  }
51 
52 void av_register_all(void)
53 {
54  static int initialized;
55 
56  if (initialized)
57  return;
58  initialized = 1;
59 
61 
62  /* (de)muxers */
63  REGISTER_MUXER (A64, a64);
64  REGISTER_DEMUXER (AAC, aac);
65  REGISTER_MUXDEMUX(AC3, ac3);
66  REGISTER_DEMUXER (ACT, act);
67  REGISTER_DEMUXER (ADF, adf);
68  REGISTER_MUXER (ADTS, adts);
69  REGISTER_MUXDEMUX(ADX, adx);
70  REGISTER_DEMUXER (AEA, aea);
71  REGISTER_DEMUXER (AFC, afc);
72  REGISTER_MUXDEMUX(AIFF, aiff);
73  REGISTER_MUXDEMUX(AMR, amr);
74  REGISTER_DEMUXER (ANM, anm);
75  REGISTER_DEMUXER (APC, apc);
76  REGISTER_DEMUXER (APE, ape);
77  REGISTER_DEMUXER (AQTITLE, aqtitle);
78  REGISTER_MUXDEMUX(ASF, asf);
79  REGISTER_MUXDEMUX(ASS, ass);
80  REGISTER_MUXDEMUX(AST, ast);
81  REGISTER_MUXER (ASF_STREAM, asf_stream);
82  REGISTER_MUXDEMUX(AU, au);
83  REGISTER_MUXDEMUX(AVI, avi);
84  REGISTER_DEMUXER (AVISYNTH, avisynth);
85  REGISTER_MUXER (AVM2, avm2);
86  REGISTER_DEMUXER (AVR, avr);
87  REGISTER_DEMUXER (AVS, avs);
88  REGISTER_DEMUXER (BETHSOFTVID, bethsoftvid);
89  REGISTER_DEMUXER (BFI, bfi);
90  REGISTER_DEMUXER (BINTEXT, bintext);
91  REGISTER_DEMUXER (BINK, bink);
92  REGISTER_MUXDEMUX(BIT, bit);
93  REGISTER_DEMUXER (BMV, bmv);
94  REGISTER_DEMUXER (BRSTM, brstm);
95  REGISTER_DEMUXER (C93, c93);
96  REGISTER_MUXDEMUX(CAF, caf);
97  REGISTER_MUXDEMUX(CAVSVIDEO, cavsvideo);
98  REGISTER_DEMUXER (CDG, cdg);
99  REGISTER_DEMUXER (CDXL, cdxl);
100  REGISTER_DEMUXER (CONCAT, concat);
101  REGISTER_MUXER (CRC, crc);
102  REGISTER_MUXDEMUX(DAUD, daud);
103  REGISTER_DEMUXER (DFA, dfa);
104  REGISTER_MUXDEMUX(DIRAC, dirac);
105  REGISTER_MUXDEMUX(DNXHD, dnxhd);
106  REGISTER_DEMUXER (DSICIN, dsicin);
107  REGISTER_MUXDEMUX(DTS, dts);
108  REGISTER_DEMUXER (DTSHD, dtshd);
109  REGISTER_MUXDEMUX(DV, dv);
110  REGISTER_DEMUXER (DXA, dxa);
111  REGISTER_DEMUXER (EA, ea);
112  REGISTER_DEMUXER (EA_CDATA, ea_cdata);
113  REGISTER_MUXDEMUX(EAC3, eac3);
114  REGISTER_DEMUXER (EPAF, epaf);
115  REGISTER_MUXER (F4V, f4v);
116  REGISTER_MUXDEMUX(FFM, ffm);
117  REGISTER_MUXDEMUX(FFMETADATA, ffmetadata);
118  REGISTER_MUXDEMUX(FILMSTRIP, filmstrip);
119  REGISTER_MUXDEMUX(FLAC, flac);
120  REGISTER_DEMUXER (FLIC, flic);
121  REGISTER_MUXDEMUX(FLV, flv);
122  REGISTER_DEMUXER (FOURXM, fourxm);
123  REGISTER_MUXER (FRAMECRC, framecrc);
124  REGISTER_MUXER (FRAMEMD5, framemd5);
125  REGISTER_DEMUXER (FRM, frm);
126  REGISTER_MUXDEMUX(G722, g722);
127  REGISTER_MUXDEMUX(G723_1, g723_1);
128  REGISTER_DEMUXER (G729, g729);
129  REGISTER_MUXDEMUX(GIF, gif);
130  REGISTER_DEMUXER (GSM, gsm);
131  REGISTER_MUXDEMUX(GXF, gxf);
132  REGISTER_MUXDEMUX(H261, h261);
133  REGISTER_MUXDEMUX(H263, h263);
134  REGISTER_MUXDEMUX(H264, h264);
135  REGISTER_MUXDEMUX(HLS, hls);
136  REGISTER_MUXDEMUX(ICO, ico);
137  REGISTER_DEMUXER (IDCIN, idcin);
138  REGISTER_DEMUXER (IDF, idf);
139  REGISTER_DEMUXER (IFF, iff);
140  REGISTER_MUXDEMUX(ILBC, ilbc);
141  REGISTER_MUXDEMUX(IMAGE2, image2);
142  REGISTER_MUXDEMUX(IMAGE2PIPE, image2pipe);
143  REGISTER_DEMUXER (INGENIENT, ingenient);
144  REGISTER_DEMUXER (IPMOVIE, ipmovie);
145  REGISTER_MUXER (IPOD, ipod);
146  REGISTER_MUXDEMUX(IRCAM, ircam);
147  REGISTER_MUXER (ISMV, ismv);
148  REGISTER_DEMUXER (ISS, iss);
149  REGISTER_DEMUXER (IV8, iv8);
150  REGISTER_MUXDEMUX(IVF, ivf);
151  REGISTER_MUXDEMUX(JACOSUB, jacosub);
152  REGISTER_DEMUXER (JV, jv);
153  REGISTER_MUXDEMUX(LATM, latm);
154  REGISTER_DEMUXER (LMLM4, lmlm4);
155  REGISTER_DEMUXER (LOAS, loas);
156  REGISTER_DEMUXER (LVF, lvf);
157  REGISTER_DEMUXER (LXF, lxf);
158  REGISTER_MUXDEMUX(M4V, m4v);
159  REGISTER_MUXER (MD5, md5);
160  REGISTER_MUXDEMUX(MATROSKA, matroska);
161  REGISTER_MUXER (MATROSKA_AUDIO, matroska_audio);
162  REGISTER_DEMUXER (MGSTS, mgsts);
163  REGISTER_MUXDEMUX(MICRODVD, microdvd);
164  REGISTER_MUXDEMUX(MJPEG, mjpeg);
165  REGISTER_MUXDEMUX(MLP, mlp);
166  REGISTER_DEMUXER (MM, mm);
167  REGISTER_MUXDEMUX(MMF, mmf);
168  REGISTER_MUXDEMUX(MOV, mov);
169  REGISTER_MUXER (MP2, mp2);
170  REGISTER_MUXDEMUX(MP3, mp3);
171  REGISTER_MUXER (MP4, mp4);
172  REGISTER_DEMUXER (MPC, mpc);
173  REGISTER_DEMUXER (MPC8, mpc8);
174  REGISTER_MUXER (MPEG1SYSTEM, mpeg1system);
175  REGISTER_MUXER (MPEG1VCD, mpeg1vcd);
176  REGISTER_MUXER (MPEG1VIDEO, mpeg1video);
177  REGISTER_MUXER (MPEG2DVD, mpeg2dvd);
178  REGISTER_MUXER (MPEG2SVCD, mpeg2svcd);
179  REGISTER_MUXER (MPEG2VIDEO, mpeg2video);
180  REGISTER_MUXER (MPEG2VOB, mpeg2vob);
181  REGISTER_DEMUXER (MPEGPS, mpegps);
182  REGISTER_MUXDEMUX(MPEGTS, mpegts);
183  REGISTER_DEMUXER (MPEGTSRAW, mpegtsraw);
184  REGISTER_DEMUXER (MPEGVIDEO, mpegvideo);
185  REGISTER_MUXER (MPJPEG, mpjpeg);
186  REGISTER_DEMUXER (MPL2, mpl2);
187  REGISTER_DEMUXER (MPSUB, mpsub);
188  REGISTER_DEMUXER (MSNWC_TCP, msnwc_tcp);
189  REGISTER_DEMUXER (MTV, mtv);
190  REGISTER_DEMUXER (MV, mv);
191  REGISTER_DEMUXER (MVI, mvi);
192  REGISTER_MUXDEMUX(MXF, mxf);
193  REGISTER_MUXER (MXF_D10, mxf_d10);
194  REGISTER_DEMUXER (MXG, mxg);
195  REGISTER_DEMUXER (NC, nc);
196  REGISTER_DEMUXER (NISTSPHERE, nistsphere);
197  REGISTER_DEMUXER (NSV, nsv);
198  REGISTER_MUXER (NULL, null);
199  REGISTER_MUXDEMUX(NUT, nut);
200  REGISTER_DEMUXER (NUV, nuv);
201  REGISTER_MUXDEMUX(OGG, ogg);
202  REGISTER_MUXDEMUX(OMA, oma);
203  REGISTER_DEMUXER (PAF, paf);
204  REGISTER_MUXDEMUX(PCM_ALAW, pcm_alaw);
205  REGISTER_MUXDEMUX(PCM_MULAW, pcm_mulaw);
206  REGISTER_MUXDEMUX(PCM_F64BE, pcm_f64be);
207  REGISTER_MUXDEMUX(PCM_F64LE, pcm_f64le);
208  REGISTER_MUXDEMUX(PCM_F32BE, pcm_f32be);
209  REGISTER_MUXDEMUX(PCM_F32LE, pcm_f32le);
210  REGISTER_MUXDEMUX(PCM_S32BE, pcm_s32be);
211  REGISTER_MUXDEMUX(PCM_S32LE, pcm_s32le);
212  REGISTER_MUXDEMUX(PCM_S24BE, pcm_s24be);
213  REGISTER_MUXDEMUX(PCM_S24LE, pcm_s24le);
214  REGISTER_MUXDEMUX(PCM_S16BE, pcm_s16be);
215  REGISTER_MUXDEMUX(PCM_S16LE, pcm_s16le);
216  REGISTER_MUXDEMUX(PCM_S8, pcm_s8);
217  REGISTER_MUXDEMUX(PCM_U32BE, pcm_u32be);
218  REGISTER_MUXDEMUX(PCM_U32LE, pcm_u32le);
219  REGISTER_MUXDEMUX(PCM_U24BE, pcm_u24be);
220  REGISTER_MUXDEMUX(PCM_U24LE, pcm_u24le);
221  REGISTER_MUXDEMUX(PCM_U16BE, pcm_u16be);
222  REGISTER_MUXDEMUX(PCM_U16LE, pcm_u16le);
223  REGISTER_MUXDEMUX(PCM_U8, pcm_u8);
224  REGISTER_DEMUXER (PJS, pjs);
225  REGISTER_DEMUXER (PMP, pmp);
226  REGISTER_MUXER (PSP, psp);
227  REGISTER_DEMUXER (PVA, pva);
228  REGISTER_DEMUXER (PVF, pvf);
229  REGISTER_DEMUXER (QCP, qcp);
230  REGISTER_DEMUXER (R3D, r3d);
231  REGISTER_MUXDEMUX(RAWVIDEO, rawvideo);
232  REGISTER_DEMUXER (REALTEXT, realtext);
233  REGISTER_DEMUXER (RL2, rl2);
234  REGISTER_MUXDEMUX(RM, rm);
235  REGISTER_MUXDEMUX(ROQ, roq);
236  REGISTER_DEMUXER (RPL, rpl);
237  REGISTER_MUXDEMUX(RSO, rso);
238  REGISTER_MUXDEMUX(RTP, rtp);
239  REGISTER_MUXDEMUX(RTSP, rtsp);
240  REGISTER_DEMUXER (SAMI, sami);
241  REGISTER_MUXDEMUX(SAP, sap);
242  REGISTER_DEMUXER (SBG, sbg);
243  REGISTER_DEMUXER (SDP, sdp);
244 #if CONFIG_RTPDEC
247 #endif
248  REGISTER_DEMUXER (SEGAFILM, segafilm);
249  REGISTER_MUXER (SEGMENT, segment);
250  REGISTER_MUXER (SEGMENT, stream_segment);
251  REGISTER_DEMUXER (SHORTEN, shorten);
252  REGISTER_DEMUXER (SIFF, siff);
253  REGISTER_DEMUXER (SMACKER, smacker);
254  REGISTER_MUXDEMUX(SMJPEG, smjpeg);
255  REGISTER_MUXER (SMOOTHSTREAMING, smoothstreaming);
256  REGISTER_DEMUXER (SMUSH, smush);
257  REGISTER_DEMUXER (SOL, sol);
258  REGISTER_MUXDEMUX(SOX, sox);
259  REGISTER_MUXDEMUX(SPDIF, spdif);
260  REGISTER_MUXDEMUX(SRT, srt);
261  REGISTER_DEMUXER (STR, str);
262  REGISTER_DEMUXER (SUBVIEWER1, subviewer1);
263  REGISTER_DEMUXER (SUBVIEWER, subviewer);
264  REGISTER_MUXDEMUX(SWF, swf);
265  REGISTER_DEMUXER (TAK, tak);
266  REGISTER_MUXER (TEE, tee);
267  REGISTER_DEMUXER (TEDCAPTIONS, tedcaptions);
268  REGISTER_MUXER (TG2, tg2);
269  REGISTER_MUXER (TGP, tgp);
270  REGISTER_DEMUXER (THP, thp);
271  REGISTER_DEMUXER (TIERTEXSEQ, tiertexseq);
272  REGISTER_MUXER (MKVTIMESTAMP_V2, mkvtimestamp_v2);
273  REGISTER_DEMUXER (TMV, tmv);
274  REGISTER_MUXDEMUX(TRUEHD, truehd);
275  REGISTER_DEMUXER (TTA, tta);
276  REGISTER_DEMUXER (TXD, txd);
277  REGISTER_DEMUXER (TTY, tty);
278  REGISTER_MUXDEMUX(VC1, vc1);
279  REGISTER_MUXDEMUX(VC1T, vc1t);
280  REGISTER_DEMUXER (VIVO, vivo);
281  REGISTER_DEMUXER (VMD, vmd);
282  REGISTER_DEMUXER (VOBSUB, vobsub);
283  REGISTER_MUXDEMUX(VOC, voc);
284  REGISTER_DEMUXER (VPLAYER, vplayer);
285  REGISTER_DEMUXER (VQF, vqf);
286  REGISTER_MUXDEMUX(W64, w64);
287  REGISTER_MUXDEMUX(WAV, wav);
288  REGISTER_DEMUXER (WC3, wc3);
289  REGISTER_MUXER (WEBM, webm);
290  REGISTER_DEMUXER (WEBVTT, webvtt);
291  REGISTER_DEMUXER (WSAUD, wsaud);
292  REGISTER_DEMUXER (WSVQA, wsvqa);
293  REGISTER_MUXDEMUX(WTV, wtv);
294  REGISTER_MUXDEMUX(WV, wv);
295  REGISTER_DEMUXER (XA, xa);
296  REGISTER_DEMUXER (XBIN, xbin);
297  REGISTER_DEMUXER (XMV, xmv);
298  REGISTER_DEMUXER (XWMA, xwma);
299  REGISTER_DEMUXER (YOP, yop);
300  REGISTER_MUXDEMUX(YUV4MPEGPIPE, yuv4mpegpipe);
301 
302  /* protocols */
303  REGISTER_PROTOCOL(BLURAY, bluray);
304  REGISTER_PROTOCOL(CACHE, cache);
305  REGISTER_PROTOCOL(CONCAT, concat);
306  REGISTER_PROTOCOL(CRYPTO, crypto);
307  REGISTER_PROTOCOL(DATA, data);
308  REGISTER_PROTOCOL(FFRTMPCRYPT, ffrtmpcrypt);
309  REGISTER_PROTOCOL(FFRTMPHTTP, ffrtmphttp);
310  REGISTER_PROTOCOL(FILE, file);
311  REGISTER_PROTOCOL(GOPHER, gopher);
312  REGISTER_PROTOCOL(HLS, hls);
313  REGISTER_PROTOCOL(HTTP, http);
314  REGISTER_PROTOCOL(HTTPPROXY, httpproxy);
315  REGISTER_PROTOCOL(HTTPS, https);
316  REGISTER_PROTOCOL(MMSH, mmsh);
317  REGISTER_PROTOCOL(MMST, mmst);
318  REGISTER_PROTOCOL(MD5, md5);
319  REGISTER_PROTOCOL(PIPE, pipe);
320  REGISTER_PROTOCOL(RTMP, rtmp);
321  REGISTER_PROTOCOL(RTMPE, rtmpe);
322  REGISTER_PROTOCOL(RTMPS, rtmps);
323  REGISTER_PROTOCOL(RTMPT, rtmpt);
324  REGISTER_PROTOCOL(RTMPTE, rtmpte);
325  REGISTER_PROTOCOL(RTMPTS, rtmpts);
326  REGISTER_PROTOCOL(RTP, rtp);
327  REGISTER_PROTOCOL(SCTP, sctp);
328  REGISTER_PROTOCOL(SRTP, srtp);
329  REGISTER_PROTOCOL(TCP, tcp);
330  REGISTER_PROTOCOL(TLS, tls);
331  REGISTER_PROTOCOL(UDP, udp);
332 
333  /* external libraries */
334  REGISTER_DEMUXER (LIBMODPLUG, libmodplug);
335  REGISTER_MUXDEMUX(LIBNUT, libnut);
336  REGISTER_DEMUXER (LIBQUVI, libquvi);
337  REGISTER_PROTOCOL(LIBRTMP, librtmp);
338  REGISTER_PROTOCOL(LIBRTMPE, librtmpe);
339  REGISTER_PROTOCOL(LIBRTMPS, librtmps);
340  REGISTER_PROTOCOL(LIBRTMPT, librtmpt);
341  REGISTER_PROTOCOL(LIBRTMPTE, librtmpte);
342 }
#define STR(s)
void av_register_rtp_dynamic_payload_handlers(void)
Definition: rtpdec.c:61
structure containing the whole split ASS data
Definition: ass_split.h:69
void avcodec_register_all(void)
Register all the codecs, parsers and bitstream filters which were enabled at configuration time...
Definition: allcodecs.c:67
#define MM
#define REGISTER_MUXDEMUX(X, x)
Definition: allformats.c:42
Spectrum Plot time data
About Git write you should know how to use GIT properly Luckily Git comes with excellent documentation git help man git shows you the available git< command > help man git< command > shows information about the subcommand< command > The most comprehensive manual is the website Git Reference http
Definition: git-howto.txt:5
Definition: hls.c:58
FFmpeg Automated Testing Environment ************************************Table of Contents *****************FFmpeg Automated Testing Environment Introduction Using FATE from your FFmpeg source directory Submitting the results to the FFmpeg result aggregation server FATE makefile targets and variables Makefile targets Makefile variables Examples Introduction **************FATE is an extended regression suite on the client side and a means for results aggregation and presentation on the server side The first part of this document explains how you can use FATE from your FFmpeg source directory to test your ffmpeg binary The second part describes how you can run FATE to submit the results to FFmpeg s FATE server In any way you can have a look at the publicly viewable FATE results by visiting this as it can be seen if some test on some platform broke with their recent contribution This usually happens on the platforms the developers could not test on The second part of this document describes how you can run FATE to submit your results to FFmpeg s FATE server If you want to submit your results be sure to check that your combination of OS and compiler is not already listed on the above mentioned website In the third part you can find a comprehensive listing of FATE makefile targets and variables Using FATE from your FFmpeg source directory **********************************************If you want to run FATE on your machine you need to have the samples in place You can get the samples via the build target fate rsync Use this command from the top level source this will cause FATE to fail NOTE To use a custom wrapper to run the pass target exec to configure or set the TARGET_EXEC Make variable Submitting the results to the FFmpeg result aggregation server ****************************************************************To submit your results to the server you should run fate through the shell script tests fate sh from the FFmpeg sources This script needs to be invoked with a configuration file as its first argument tests fate sh path to fate_config A configuration file template with comments describing the individual configuration variables can be found at doc fate_config sh template Create a configuration that suits your based on the configuration template The slot configuration variable can be any string that is not yet but it is suggested that you name it adhering to the following pattern< arch >< os >< compiler >< compiler version > The configuration file itself will be sourced in a shell therefore all shell features may be used This enables you to setup the environment as you need it for your build For your first test runs the fate_recv variable should be empty or commented out This will run everything as normal except that it will omit the submission of the results to the server The following files should be present in $workdir as specified in the configuration file
Definition: fate.txt:34
#define REGISTER_PROTOCOL(X, x)
Definition: allformats.c:44
Libavformat version macros.
static const int8_t mv[256][2]
NULL
Definition: eval.c:55
AVS_VideoFrame ** pvf
Definition: avisynth_c.h:711
Main libavformat public API header.
#define AIFF
Definition: aiffdec.c:33
Definition: oggdec.h:98
#define REGISTER_MUXER(X, x)
Definition: allformats.c:28
unbuffered private I/O API
void av_register_rdt_dynamic_payload_handlers(void)
Register RDT-related dynamic payload handlers with our cache.
Definition: rdt.c:566
void av_register_all(void)
Initialize libavformat and register all the muxers, demuxers and protocols.
Definition: allformats.c:52
#define REGISTER_DEMUXER(X, x)
Definition: allformats.c:35