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 #include "opencl_allkernels.h"
25 
26 
27 #define REGISTER_FILTER(X, x, y) \
28  { \
29  extern AVFilter avfilter_##y##_##x; \
30  if (CONFIG_##X##_FILTER) \
31  avfilter_register(&avfilter_##y##_##x); \
32  }
33 
34 #define REGISTER_FILTER_UNCONDITIONAL(x) \
35  { \
36  extern AVFilter avfilter_##x; \
37  avfilter_register(&avfilter_##x); \
38  }
39 
41 {
42  static int initialized;
43 
44  if (initialized)
45  return;
46  initialized = 1;
47 
48 #if FF_API_ACONVERT_FILTER
49  REGISTER_FILTER(ACONVERT, aconvert, af);
50 #endif
51  REGISTER_FILTER(AFADE, afade, af);
52  REGISTER_FILTER(AFORMAT, aformat, af);
53  REGISTER_FILTER(ALLPASS, allpass, af);
54  REGISTER_FILTER(AMERGE, amerge, af);
55  REGISTER_FILTER(AMIX, amix, af);
56  REGISTER_FILTER(ANULL, anull, af);
57  REGISTER_FILTER(APAD, apad, af);
58  REGISTER_FILTER(APERMS, aperms, af);
59  REGISTER_FILTER(APHASER, aphaser, af);
60  REGISTER_FILTER(ARESAMPLE, aresample, af);
61  REGISTER_FILTER(ASELECT, aselect, af);
62  REGISTER_FILTER(ASENDCMD, asendcmd, af);
63  REGISTER_FILTER(ASETNSAMPLES, asetnsamples, af);
64  REGISTER_FILTER(ASETPTS, asetpts, af);
65  REGISTER_FILTER(ASETTB, asettb, af);
66  REGISTER_FILTER(ASHOWINFO, ashowinfo, af);
67  REGISTER_FILTER(ASPLIT, asplit, af);
68  REGISTER_FILTER(ASTREAMSYNC, astreamsync, af);
69  REGISTER_FILTER(ASYNCTS, asyncts, af);
70  REGISTER_FILTER(ATEMPO, atempo, af);
71  REGISTER_FILTER(BANDPASS, bandpass, af);
72  REGISTER_FILTER(BANDREJECT, bandreject, af);
73  REGISTER_FILTER(BASS, bass, af);
74  REGISTER_FILTER(BIQUAD, biquad, af);
75  REGISTER_FILTER(CHANNELMAP, channelmap, af);
76  REGISTER_FILTER(CHANNELSPLIT, channelsplit, af);
77  REGISTER_FILTER(EARWAX, earwax, af);
78  REGISTER_FILTER(EBUR128, ebur128, af);
79  REGISTER_FILTER(EQUALIZER, equalizer, af);
80  REGISTER_FILTER(HIGHPASS, highpass, af);
81  REGISTER_FILTER(JOIN, join, af);
83  REGISTER_FILTER(PAN, pan, af);
84  REGISTER_FILTER(RESAMPLE, resample, af);
85  REGISTER_FILTER(SILENCEDETECT, silencedetect, af);
86  REGISTER_FILTER(TREBLE, treble, af);
87  REGISTER_FILTER(VOLUME, volume, af);
88  REGISTER_FILTER(VOLUMEDETECT, volumedetect, af);
89 
90  REGISTER_FILTER(AEVALSRC, aevalsrc, asrc);
91  REGISTER_FILTER(ANULLSRC, anullsrc, asrc);
92  REGISTER_FILTER(FLITE, flite, asrc);
93  REGISTER_FILTER(SINE, sine, asrc);
94 
95  REGISTER_FILTER(ANULLSINK, anullsink, asink);
96 
97  REGISTER_FILTER(ALPHAEXTRACT, alphaextract, vf);
98  REGISTER_FILTER(ALPHAMERGE, alphamerge, vf);
99  REGISTER_FILTER(ASS, ass, vf);
100  REGISTER_FILTER(BBOX, bbox, vf);
101  REGISTER_FILTER(BLACKDETECT, blackdetect, vf);
102  REGISTER_FILTER(BLACKFRAME, blackframe, vf);
103  REGISTER_FILTER(BLEND, blend, vf);
104  REGISTER_FILTER(BOXBLUR, boxblur, vf);
105  REGISTER_FILTER(COLORBALANCE, colorbalance, vf);
106  REGISTER_FILTER(COLORCHANNELMIXER, colorchannelmixer, vf);
107  REGISTER_FILTER(COLORMATRIX, colormatrix, vf);
108  REGISTER_FILTER(COPY, copy, vf);
109  REGISTER_FILTER(CROP, crop, vf);
110  REGISTER_FILTER(CROPDETECT, cropdetect, vf);
111  REGISTER_FILTER(CURVES, curves, vf);
112  REGISTER_FILTER(DECIMATE, decimate, vf);
113  REGISTER_FILTER(DELOGO, delogo, vf);
114  REGISTER_FILTER(DESHAKE, deshake, vf);
115  REGISTER_FILTER(DRAWBOX, drawbox, vf);
116  REGISTER_FILTER(DRAWTEXT, drawtext, vf);
117  REGISTER_FILTER(EDGEDETECT, edgedetect, vf);
118  REGISTER_FILTER(FADE, fade, vf);
119  REGISTER_FILTER(FIELD, field, vf);
120  REGISTER_FILTER(FIELDMATCH, fieldmatch, vf);
121  REGISTER_FILTER(FIELDORDER, fieldorder, vf);
122  REGISTER_FILTER(FORMAT, format, vf);
123  REGISTER_FILTER(FPS, fps, vf);
124  REGISTER_FILTER(FRAMESTEP, framestep, vf);
125  REGISTER_FILTER(FREI0R, frei0r, vf);
126  REGISTER_FILTER(GEQ, geq, vf);
127  REGISTER_FILTER(GRADFUN, gradfun, vf);
128  REGISTER_FILTER(HFLIP, hflip, vf);
129  REGISTER_FILTER(HISTEQ, histeq, vf);
130  REGISTER_FILTER(HISTOGRAM, histogram, vf);
131  REGISTER_FILTER(HQDN3D, hqdn3d, vf);
132  REGISTER_FILTER(HUE, hue, vf);
133  REGISTER_FILTER(IDET, idet, vf);
134  REGISTER_FILTER(IL, il, vf);
135  REGISTER_FILTER(INTERLACE, interlace, vf);
136  REGISTER_FILTER(KERNDEINT, kerndeint, vf);
137  REGISTER_FILTER(LUT, lut, vf);
138  REGISTER_FILTER(LUTRGB, lutrgb, vf);
139  REGISTER_FILTER(LUTYUV, lutyuv, vf);
140  REGISTER_FILTER(MP, mp, vf);
141  REGISTER_FILTER(MPDECIMATE, mpdecimate, vf);
142  REGISTER_FILTER(NEGATE, negate, vf);
143  REGISTER_FILTER(NOFORMAT, noformat, vf);
144  REGISTER_FILTER(NOISE, noise, vf);
145  REGISTER_FILTER(NULL, null, vf);
146  REGISTER_FILTER(OCV, ocv, vf);
147  REGISTER_FILTER(OVERLAY, overlay, vf);
148  REGISTER_FILTER(PAD, pad, vf);
149  REGISTER_FILTER(PERMS, perms, vf);
150  REGISTER_FILTER(PIXDESCTEST, pixdesctest, vf);
151  REGISTER_FILTER(PP, pp, vf);
152  REGISTER_FILTER(REMOVELOGO, removelogo, vf);
153  REGISTER_FILTER(SCALE, scale, vf);
154  REGISTER_FILTER(SELECT, select, vf);
155  REGISTER_FILTER(SENDCMD, sendcmd, vf);
156  REGISTER_FILTER(SEPARATEFIELDS, separatefields, vf);
157  REGISTER_FILTER(SETDAR, setdar, vf);
158  REGISTER_FILTER(SETFIELD, setfield, vf);
159  REGISTER_FILTER(SETPTS, setpts, vf);
160  REGISTER_FILTER(SETSAR, setsar, vf);
161  REGISTER_FILTER(SETTB, settb, vf);
162  REGISTER_FILTER(SHOWINFO, showinfo, vf);
163  REGISTER_FILTER(SMARTBLUR, smartblur, vf);
165  REGISTER_FILTER(STEREO3D, stereo3d, vf);
166  REGISTER_FILTER(SUBTITLES, subtitles, vf);
167  REGISTER_FILTER(SUPER2XSAI, super2xsai, vf);
168  REGISTER_FILTER(SWAPUV, swapuv, vf);
169  REGISTER_FILTER(TELECINE, telecine, vf);
170  REGISTER_FILTER(THUMBNAIL, thumbnail, vf);
171  REGISTER_FILTER(TILE, tile, vf);
172  REGISTER_FILTER(TINTERLACE, tinterlace, vf);
174  REGISTER_FILTER(UNSHARP, unsharp, vf);
175  REGISTER_FILTER(VFLIP, vflip, vf);
176  REGISTER_FILTER(YADIF, yadif, vf);
177 
178  REGISTER_FILTER(CELLAUTO, cellauto, vsrc);
179  REGISTER_FILTER(COLOR, color, vsrc);
180  REGISTER_FILTER(FREI0R, frei0r_src, vsrc);
181  REGISTER_FILTER(LIFE, life, vsrc);
182  REGISTER_FILTER(MANDELBROT, mandelbrot, vsrc);
183  REGISTER_FILTER(MPTESTSRC, mptestsrc, vsrc);
184  REGISTER_FILTER(NULLSRC, nullsrc, vsrc);
185  REGISTER_FILTER(RGBTESTSRC, rgbtestsrc, vsrc);
186  REGISTER_FILTER(SMPTEBARS, smptebars, vsrc);
187  REGISTER_FILTER(SMPTEHDBARS, smptehdbars, vsrc);
188  REGISTER_FILTER(TESTSRC, testsrc, vsrc);
189 
190  REGISTER_FILTER(NULLSINK, nullsink, vsink);
191 
192  /* multimedia filters */
193  REGISTER_FILTER(CONCAT, concat, avf);
194  REGISTER_FILTER(SHOWSPECTRUM, showspectrum, avf);
195  REGISTER_FILTER(SHOWWAVES, showwaves, avf);
196 
197  /* multimedia sources */
198  REGISTER_FILTER(AMOVIE, amovie, avsrc);
199  REGISTER_FILTER(MOVIE, movie, avsrc);
200 
201 #if FF_API_AVFILTERBUFFER
202  REGISTER_FILTER_UNCONDITIONAL(vsink_ffbuffersink);
203  REGISTER_FILTER_UNCONDITIONAL(asink_ffabuffersink);
204 #endif
205 
206  /* those filters are part of public or internal API => registered
207  * unconditionally */
208  REGISTER_FILTER_UNCONDITIONAL(asrc_abuffer);
209  REGISTER_FILTER_UNCONDITIONAL(vsrc_buffer);
210  REGISTER_FILTER_UNCONDITIONAL(asink_abuffer);
211  REGISTER_FILTER_UNCONDITIONAL(vsink_buffer);
215 }
external API header
structure containing the whole split ASS data
Definition: ass_split.h:69
static void super2xsai(AVFilterContext *ctx, uint8_t *src, int src_linesize, uint8_t *dst, int dst_linesize, int width, int height)
Definition: vf_super2xsai.c:56
static void drawtext(AVFrame *pic, int x, int y, int ftid, const uint8_t *color, const char *fmt,...)
Definition: f_ebur128.c:186
static const uint32_t color[16+AV_CLASS_CATEGORY_NB]
Definition: log.c:77
void avfilter_register_all(void)
Initialize the filter system.
Definition: allfilters.c:40
#define COPY(condition)
static void copy(LZOContext *c, int cnt)
Copies bytes from input to output buffer with checking.
Definition: lzo.c:79
#define OVERLAY
Definition: vf_overlay.c:77
static int resample(ResampleContext *c, void *dst, const void *src, int *consumed, int src_size, int dst_size, int update_ctx)
#define TRANSPOSE
#define transpose(x)
#define REGISTER_FILTER(X, x, y)
Definition: allfilters.c:27
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFilterBuffer structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample format(the sample packing is implied by the sample format) and sample rate.The lists are not just lists
void ff_opencl_register_filter_kernel_code_all(void)
Note except for filters that can have queued request_frame does not push and as a the filter_frame method will be called and do the work Legacy the filter_frame method was split
NULL
Definition: eval.c:55
static int noise(AVBitStreamFilterContext *bsfc, AVCodecContext *avctx, const char *args, uint8_t **poutbuf, int *poutbuf_size, const uint8_t *buf, int buf_size, int keyframe)
Definition: noise_bsf.c:28
#define LOWPASS(ARRAY, INDEX)
Definition: cavs.c:293
#define REGISTER_FILTER_UNCONDITIONAL(x)
Definition: allfilters.c:34
#define SPLIT(dst, sf, n)
Definition: mpegaudiodec.c:761
Same thing on a dB scale
#define PAD
#define FADE(name, type)
Definition: af_afade.c:177
#define COLOR(x)