FFmpeg
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
allfilters.c
Go to the documentation of this file.
1 /*
2  * filter registration
3  * Copyright (c) 2008 Vitor Sessak
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 "avfilter.h"
23 #include "config.h"
24 
25 
26 #define REGISTER_FILTER(X, x, y) \
27  { \
28  extern AVFilter avfilter_##y##_##x; \
29  if (CONFIG_##X##_FILTER) \
30  avfilter_register(&avfilter_##y##_##x); \
31  }
32 
33 #define REGISTER_FILTER_UNCONDITIONAL(x) \
34  { \
35  extern AVFilter avfilter_##x; \
36  avfilter_register(&avfilter_##x); \
37  }
38 
40 {
41  static int initialized;
42 
43  if (initialized)
44  return;
45  initialized = 1;
46 
47  REGISTER_FILTER(ACONVERT, aconvert, af);
48  REGISTER_FILTER(AFORMAT, aformat, af);
49  REGISTER_FILTER(AMERGE, amerge, af);
50  REGISTER_FILTER(AMIX, amix, af);
51  REGISTER_FILTER(ANULL, anull, af);
52  REGISTER_FILTER(APAD, apad, af);
53  REGISTER_FILTER(ARESAMPLE, aresample, af);
54  REGISTER_FILTER(ASELECT, aselect, af);
55  REGISTER_FILTER(ASENDCMD, asendcmd, af);
56  REGISTER_FILTER(ASETNSAMPLES, asetnsamples, af);
57  REGISTER_FILTER(ASETPTS, asetpts, af);
58  REGISTER_FILTER(ASETTB, asettb, af);
59  REGISTER_FILTER(ASHOWINFO, ashowinfo, af);
60  REGISTER_FILTER(ASPLIT, asplit, af);
61  REGISTER_FILTER(ASTREAMSYNC, astreamsync, af);
62  REGISTER_FILTER(ASYNCTS, asyncts, af);
63  REGISTER_FILTER(ATEMPO, atempo, af);
64  REGISTER_FILTER(CHANNELMAP, channelmap, af);
65  REGISTER_FILTER(CHANNELSPLIT, channelsplit, af);
66  REGISTER_FILTER(EARWAX, earwax, af);
67  REGISTER_FILTER(EBUR128, ebur128, af);
68  REGISTER_FILTER(JOIN, join, af);
69  REGISTER_FILTER(PAN, pan, af);
70  REGISTER_FILTER(RESAMPLE, resample, af);
71  REGISTER_FILTER(SILENCEDETECT, silencedetect, af);
72  REGISTER_FILTER(VOLUME, volume, af);
73  REGISTER_FILTER(VOLUMEDETECT, volumedetect, af);
74 
75  REGISTER_FILTER(AEVALSRC, aevalsrc, asrc);
76  REGISTER_FILTER(ANULLSRC, anullsrc, asrc);
77  REGISTER_FILTER(FLITE, flite, asrc);
78 
79  REGISTER_FILTER(ANULLSINK, anullsink, asink);
80 
81  REGISTER_FILTER(ALPHAEXTRACT, alphaextract, vf);
82  REGISTER_FILTER(ALPHAMERGE, alphamerge, vf);
83  REGISTER_FILTER(ASS, ass, vf);
84  REGISTER_FILTER(BBOX, bbox, vf);
85  REGISTER_FILTER(BLACKDETECT, blackdetect, vf);
86  REGISTER_FILTER(BLACKFRAME, blackframe, vf);
87  REGISTER_FILTER(BOXBLUR, boxblur, vf);
88  REGISTER_FILTER(COLORMATRIX, colormatrix, vf);
90  REGISTER_FILTER(CROP, crop, vf);
91  REGISTER_FILTER(CROPDETECT, cropdetect, vf);
92  REGISTER_FILTER(DECIMATE, decimate, vf);
93  REGISTER_FILTER(DELOGO, delogo, vf);
94  REGISTER_FILTER(DESHAKE, deshake, vf);
95  REGISTER_FILTER(DRAWBOX, drawbox, vf);
96  REGISTER_FILTER(DRAWTEXT, drawtext, vf);
97  REGISTER_FILTER(EDGEDETECT, edgedetect, vf);
98  REGISTER_FILTER(FADE, fade, vf);
99  REGISTER_FILTER(FIELD, field, vf);
100  REGISTER_FILTER(FIELDORDER, fieldorder, vf);
101  REGISTER_FILTER(FORMAT, format, vf);
102  REGISTER_FILTER(FPS, fps, vf);
103  REGISTER_FILTER(FRAMESTEP, framestep, vf);
104  REGISTER_FILTER(FREI0R, frei0r, vf);
105  REGISTER_FILTER(GEQ, geq, vf);
106  REGISTER_FILTER(GRADFUN, gradfun, vf);
107  REGISTER_FILTER(HFLIP, hflip, vf);
108  REGISTER_FILTER(HISTEQ, histeq, vf);
109  REGISTER_FILTER(HQDN3D, hqdn3d, vf);
110  REGISTER_FILTER(HUE, hue, vf);
111  REGISTER_FILTER(IDET, idet, vf);
112  REGISTER_FILTER(KERNDEINT, kerndeint, vf);
113  REGISTER_FILTER(LUT, lut, vf);
114  REGISTER_FILTER(LUTRGB, lutrgb, vf);
115  REGISTER_FILTER(LUTYUV, lutyuv, vf);
116  REGISTER_FILTER(MP, mp, vf);
117  REGISTER_FILTER(NEGATE, negate, vf);
118  REGISTER_FILTER(NOFORMAT, noformat, vf);
119  REGISTER_FILTER(NULL, null, vf);
120  REGISTER_FILTER(OCV, ocv, vf);
121  REGISTER_FILTER(OVERLAY, overlay, vf);
122  REGISTER_FILTER(PAD, pad, vf);
123  REGISTER_FILTER(PIXDESCTEST, pixdesctest, vf);
124  REGISTER_FILTER(PP, pp, vf);
125  REGISTER_FILTER(REMOVELOGO, removelogo, vf);
126  REGISTER_FILTER(SCALE, scale, vf);
127  REGISTER_FILTER(SELECT, select, vf);
128  REGISTER_FILTER(SENDCMD, sendcmd, vf);
129  REGISTER_FILTER(SETDAR, setdar, vf);
130  REGISTER_FILTER(SETFIELD, setfield, vf);
131  REGISTER_FILTER(SETPTS, setpts, vf);
132  REGISTER_FILTER(SETSAR, setsar, vf);
133  REGISTER_FILTER(SETTB, settb, vf);
134  REGISTER_FILTER(SHOWINFO, showinfo, vf);
135  REGISTER_FILTER(SMARTBLUR, smartblur, vf);
137  REGISTER_FILTER(SUBTITLES, subtitles, vf);
138  REGISTER_FILTER(SUPER2XSAI, super2xsai, vf);
139  REGISTER_FILTER(SWAPUV, swapuv, vf);
140  REGISTER_FILTER(THUMBNAIL, thumbnail, vf);
141  REGISTER_FILTER(TILE, tile, vf);
142  REGISTER_FILTER(TINTERLACE, tinterlace, vf);
144  REGISTER_FILTER(UNSHARP, unsharp, vf);
145  REGISTER_FILTER(VFLIP, vflip, vf);
146  REGISTER_FILTER(YADIF, yadif, vf);
147 
148  REGISTER_FILTER(CELLAUTO, cellauto, vsrc);
149  REGISTER_FILTER(COLOR, color, vsrc);
150  REGISTER_FILTER(FREI0R, frei0r_src, vsrc);
151  REGISTER_FILTER(LIFE, life, vsrc);
152  REGISTER_FILTER(MANDELBROT, mandelbrot, vsrc);
153  REGISTER_FILTER(MPTESTSRC, mptestsrc, vsrc);
154  REGISTER_FILTER(NULLSRC, nullsrc, vsrc);
155  REGISTER_FILTER(RGBTESTSRC, rgbtestsrc, vsrc);
156  REGISTER_FILTER(SMPTEBARS, smptebars, vsrc);
157  REGISTER_FILTER(TESTSRC, testsrc, vsrc);
158 
159  REGISTER_FILTER(NULLSINK, nullsink, vsink);
160 
161  /* multimedia filters */
162  REGISTER_FILTER(CONCAT, concat, avf);
163  REGISTER_FILTER(SHOWSPECTRUM, showspectrum, avf);
164  REGISTER_FILTER(SHOWWAVES, showwaves, avf);
165 
166  /* multimedia sources */
167  REGISTER_FILTER(AMOVIE, amovie, avsrc);
168  REGISTER_FILTER(MOVIE, movie, avsrc);
169 
170  REGISTER_FILTER_UNCONDITIONAL(vsink_ffbuffersink);
171  REGISTER_FILTER_UNCONDITIONAL(asink_ffabuffersink);
172 #if !AV_HAVE_INCOMPATIBLE_FORK_ABI
173  REGISTER_FILTER_UNCONDITIONAL(vsink_buffersink);
174  REGISTER_FILTER_UNCONDITIONAL(asink_abuffersink);
175 #endif
176 
177  /* those filters are part of public or internal API => registered
178  * unconditionally */
179  REGISTER_FILTER_UNCONDITIONAL(asrc_abuffer);
180  REGISTER_FILTER_UNCONDITIONAL(vsrc_buffer);
181  REGISTER_FILTER_UNCONDITIONAL(asink_abuffer);
182  REGISTER_FILTER_UNCONDITIONAL(vsink_buffer);
185 }