]> git.sesse.net Git - ffmpeg/blob - libavfilter/allfilters.c
avfilter: add vif filter
[ffmpeg] / libavfilter / allfilters.c
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 "libavutil/thread.h"
23 #include "avfilter.h"
24 #include "config.h"
25
26 extern AVFilter ff_af_abench;
27 extern AVFilter ff_af_acompressor;
28 extern AVFilter ff_af_acontrast;
29 extern AVFilter ff_af_acopy;
30 extern AVFilter ff_af_acue;
31 extern AVFilter ff_af_acrossfade;
32 extern AVFilter ff_af_acrossover;
33 extern AVFilter ff_af_acrusher;
34 extern AVFilter ff_af_adeclick;
35 extern AVFilter ff_af_adeclip;
36 extern AVFilter ff_af_adelay;
37 extern AVFilter ff_af_adenorm;
38 extern AVFilter ff_af_aderivative;
39 extern AVFilter ff_af_aecho;
40 extern AVFilter ff_af_aemphasis;
41 extern AVFilter ff_af_aeval;
42 extern AVFilter ff_af_aexciter;
43 extern AVFilter ff_af_afade;
44 extern AVFilter ff_af_afftdn;
45 extern AVFilter ff_af_afftfilt;
46 extern AVFilter ff_af_afir;
47 extern AVFilter ff_af_aformat;
48 extern AVFilter ff_af_afreqshift;
49 extern AVFilter ff_af_agate;
50 extern AVFilter ff_af_aiir;
51 extern AVFilter ff_af_aintegral;
52 extern AVFilter ff_af_ainterleave;
53 extern AVFilter ff_af_alimiter;
54 extern AVFilter ff_af_allpass;
55 extern AVFilter ff_af_aloop;
56 extern AVFilter ff_af_amerge;
57 extern AVFilter ff_af_ametadata;
58 extern AVFilter ff_af_amix;
59 extern AVFilter ff_af_amultiply;
60 extern AVFilter ff_af_anequalizer;
61 extern AVFilter ff_af_anlmdn;
62 extern AVFilter ff_af_anlms;
63 extern AVFilter ff_af_anull;
64 extern AVFilter ff_af_apad;
65 extern AVFilter ff_af_aperms;
66 extern AVFilter ff_af_aphaser;
67 extern AVFilter ff_af_aphaseshift;
68 extern AVFilter ff_af_apulsator;
69 extern AVFilter ff_af_arealtime;
70 extern AVFilter ff_af_aresample;
71 extern AVFilter ff_af_areverse;
72 extern AVFilter ff_af_arnndn;
73 extern AVFilter ff_af_aselect;
74 extern AVFilter ff_af_asendcmd;
75 extern AVFilter ff_af_asetnsamples;
76 extern AVFilter ff_af_asetpts;
77 extern AVFilter ff_af_asetrate;
78 extern AVFilter ff_af_asettb;
79 extern AVFilter ff_af_ashowinfo;
80 extern AVFilter ff_af_asidedata;
81 extern AVFilter ff_af_asoftclip;
82 extern AVFilter ff_af_asplit;
83 extern AVFilter ff_af_asr;
84 extern AVFilter ff_af_astats;
85 extern AVFilter ff_af_astreamselect;
86 extern AVFilter ff_af_asubboost;
87 extern AVFilter ff_af_asubcut;
88 extern AVFilter ff_af_asupercut;
89 extern AVFilter ff_af_asuperpass;
90 extern AVFilter ff_af_asuperstop;
91 extern AVFilter ff_af_atempo;
92 extern AVFilter ff_af_atrim;
93 extern AVFilter ff_af_axcorrelate;
94 extern AVFilter ff_af_azmq;
95 extern AVFilter ff_af_bandpass;
96 extern AVFilter ff_af_bandreject;
97 extern AVFilter ff_af_bass;
98 extern AVFilter ff_af_biquad;
99 extern AVFilter ff_af_bs2b;
100 extern AVFilter ff_vf_chromaber_vulkan;
101 extern AVFilter ff_af_channelmap;
102 extern AVFilter ff_af_channelsplit;
103 extern AVFilter ff_af_chorus;
104 extern AVFilter ff_af_compand;
105 extern AVFilter ff_af_compensationdelay;
106 extern AVFilter ff_af_crossfeed;
107 extern AVFilter ff_af_crystalizer;
108 extern AVFilter ff_af_dcshift;
109 extern AVFilter ff_af_deesser;
110 extern AVFilter ff_af_drmeter;
111 extern AVFilter ff_af_dynaudnorm;
112 extern AVFilter ff_af_earwax;
113 extern AVFilter ff_af_ebur128;
114 extern AVFilter ff_af_equalizer;
115 extern AVFilter ff_af_extrastereo;
116 extern AVFilter ff_af_firequalizer;
117 extern AVFilter ff_af_flanger;
118 extern AVFilter ff_af_haas;
119 extern AVFilter ff_af_hdcd;
120 extern AVFilter ff_af_headphone;
121 extern AVFilter ff_af_highpass;
122 extern AVFilter ff_af_highshelf;
123 extern AVFilter ff_af_join;
124 extern AVFilter ff_af_ladspa;
125 extern AVFilter ff_af_loudnorm;
126 extern AVFilter ff_af_lowpass;
127 extern AVFilter ff_af_lowshelf;
128 extern AVFilter ff_af_lv2;
129 extern AVFilter ff_af_mcompand;
130 extern AVFilter ff_af_pan;
131 extern AVFilter ff_af_replaygain;
132 extern AVFilter ff_af_resample;
133 extern AVFilter ff_af_rubberband;
134 extern AVFilter ff_af_sidechaincompress;
135 extern AVFilter ff_af_sidechaingate;
136 extern AVFilter ff_af_silencedetect;
137 extern AVFilter ff_af_silenceremove;
138 extern AVFilter ff_af_sofalizer;
139 extern AVFilter ff_af_speechnorm;
140 extern AVFilter ff_af_stereotools;
141 extern AVFilter ff_af_stereowiden;
142 extern AVFilter ff_af_superequalizer;
143 extern AVFilter ff_af_surround;
144 extern AVFilter ff_af_treble;
145 extern AVFilter ff_af_tremolo;
146 extern AVFilter ff_af_vibrato;
147 extern AVFilter ff_af_volume;
148 extern AVFilter ff_af_volumedetect;
149
150 extern AVFilter ff_asrc_aevalsrc;
151 extern AVFilter ff_asrc_afirsrc;
152 extern AVFilter ff_asrc_anoisesrc;
153 extern AVFilter ff_asrc_anullsrc;
154 extern AVFilter ff_asrc_flite;
155 extern AVFilter ff_asrc_hilbert;
156 extern AVFilter ff_asrc_sinc;
157 extern AVFilter ff_asrc_sine;
158
159 extern AVFilter ff_asink_anullsink;
160
161 extern AVFilter ff_vf_addroi;
162 extern AVFilter ff_vf_alphaextract;
163 extern AVFilter ff_vf_alphamerge;
164 extern AVFilter ff_vf_amplify;
165 extern AVFilter ff_vf_ass;
166 extern AVFilter ff_vf_atadenoise;
167 extern AVFilter ff_vf_avgblur;
168 extern AVFilter ff_vf_avgblur_opencl;
169 extern AVFilter ff_vf_avgblur_vulkan;
170 extern AVFilter ff_vf_bbox;
171 extern AVFilter ff_vf_bench;
172 extern AVFilter ff_vf_bilateral;
173 extern AVFilter ff_vf_bitplanenoise;
174 extern AVFilter ff_vf_blackdetect;
175 extern AVFilter ff_vf_blackframe;
176 extern AVFilter ff_vf_blend;
177 extern AVFilter ff_vf_bm3d;
178 extern AVFilter ff_vf_boxblur;
179 extern AVFilter ff_vf_boxblur_opencl;
180 extern AVFilter ff_vf_bwdif;
181 extern AVFilter ff_vf_cas;
182 extern AVFilter ff_vf_chromahold;
183 extern AVFilter ff_vf_chromakey;
184 extern AVFilter ff_vf_chromanr;
185 extern AVFilter ff_vf_chromashift;
186 extern AVFilter ff_vf_ciescope;
187 extern AVFilter ff_vf_codecview;
188 extern AVFilter ff_vf_colorbalance;
189 extern AVFilter ff_vf_colorchannelmixer;
190 extern AVFilter ff_vf_colorcontrast;
191 extern AVFilter ff_vf_colorcorrect;
192 extern AVFilter ff_vf_colorize;
193 extern AVFilter ff_vf_colorkey;
194 extern AVFilter ff_vf_colorkey_opencl;
195 extern AVFilter ff_vf_colorhold;
196 extern AVFilter ff_vf_colorlevels;
197 extern AVFilter ff_vf_colormatrix;
198 extern AVFilter ff_vf_colorspace;
199 extern AVFilter ff_vf_colortemperature;
200 extern AVFilter ff_vf_convolution;
201 extern AVFilter ff_vf_convolution_opencl;
202 extern AVFilter ff_vf_convolve;
203 extern AVFilter ff_vf_copy;
204 extern AVFilter ff_vf_coreimage;
205 extern AVFilter ff_vf_cover_rect;
206 extern AVFilter ff_vf_crop;
207 extern AVFilter ff_vf_cropdetect;
208 extern AVFilter ff_vf_cue;
209 extern AVFilter ff_vf_curves;
210 extern AVFilter ff_vf_datascope;
211 extern AVFilter ff_vf_dblur;
212 extern AVFilter ff_vf_dctdnoiz;
213 extern AVFilter ff_vf_deband;
214 extern AVFilter ff_vf_deblock;
215 extern AVFilter ff_vf_decimate;
216 extern AVFilter ff_vf_deconvolve;
217 extern AVFilter ff_vf_dedot;
218 extern AVFilter ff_vf_deflate;
219 extern AVFilter ff_vf_deflicker;
220 extern AVFilter ff_vf_deinterlace_qsv;
221 extern AVFilter ff_vf_deinterlace_vaapi;
222 extern AVFilter ff_vf_dejudder;
223 extern AVFilter ff_vf_delogo;
224 extern AVFilter ff_vf_denoise_vaapi;
225 extern AVFilter ff_vf_derain;
226 extern AVFilter ff_vf_deshake;
227 extern AVFilter ff_vf_deshake_opencl;
228 extern AVFilter ff_vf_despill;
229 extern AVFilter ff_vf_detelecine;
230 extern AVFilter ff_vf_dilation;
231 extern AVFilter ff_vf_dilation_opencl;
232 extern AVFilter ff_vf_displace;
233 extern AVFilter ff_vf_dnn_processing;
234 extern AVFilter ff_vf_doubleweave;
235 extern AVFilter ff_vf_drawbox;
236 extern AVFilter ff_vf_drawgraph;
237 extern AVFilter ff_vf_drawgrid;
238 extern AVFilter ff_vf_drawtext;
239 extern AVFilter ff_vf_edgedetect;
240 extern AVFilter ff_vf_elbg;
241 extern AVFilter ff_vf_entropy;
242 extern AVFilter ff_vf_epx;
243 extern AVFilter ff_vf_eq;
244 extern AVFilter ff_vf_erosion;
245 extern AVFilter ff_vf_erosion_opencl;
246 extern AVFilter ff_vf_estdif;
247 extern AVFilter ff_vf_exposure;
248 extern AVFilter ff_vf_extractplanes;
249 extern AVFilter ff_vf_fade;
250 extern AVFilter ff_vf_fftdnoiz;
251 extern AVFilter ff_vf_fftfilt;
252 extern AVFilter ff_vf_field;
253 extern AVFilter ff_vf_fieldhint;
254 extern AVFilter ff_vf_fieldmatch;
255 extern AVFilter ff_vf_fieldorder;
256 extern AVFilter ff_vf_fillborders;
257 extern AVFilter ff_vf_find_rect;
258 extern AVFilter ff_vf_floodfill;
259 extern AVFilter ff_vf_format;
260 extern AVFilter ff_vf_fps;
261 extern AVFilter ff_vf_framepack;
262 extern AVFilter ff_vf_framerate;
263 extern AVFilter ff_vf_framestep;
264 extern AVFilter ff_vf_freezedetect;
265 extern AVFilter ff_vf_freezeframes;
266 extern AVFilter ff_vf_frei0r;
267 extern AVFilter ff_vf_fspp;
268 extern AVFilter ff_vf_gblur;
269 extern AVFilter ff_vf_geq;
270 extern AVFilter ff_vf_gradfun;
271 extern AVFilter ff_vf_graphmonitor;
272 extern AVFilter ff_vf_greyedge;
273 extern AVFilter ff_vf_haldclut;
274 extern AVFilter ff_vf_hflip;
275 extern AVFilter ff_vf_histeq;
276 extern AVFilter ff_vf_histogram;
277 extern AVFilter ff_vf_hqdn3d;
278 extern AVFilter ff_vf_hqx;
279 extern AVFilter ff_vf_hstack;
280 extern AVFilter ff_vf_hue;
281 extern AVFilter ff_vf_hwdownload;
282 extern AVFilter ff_vf_hwmap;
283 extern AVFilter ff_vf_hwupload;
284 extern AVFilter ff_vf_hwupload_cuda;
285 extern AVFilter ff_vf_hysteresis;
286 extern AVFilter ff_vf_idet;
287 extern AVFilter ff_vf_il;
288 extern AVFilter ff_vf_inflate;
289 extern AVFilter ff_vf_interlace;
290 extern AVFilter ff_vf_interleave;
291 extern AVFilter ff_vf_kerndeint;
292 extern AVFilter ff_vf_kirsch;
293 extern AVFilter ff_vf_lagfun;
294 extern AVFilter ff_vf_lenscorrection;
295 extern AVFilter ff_vf_lensfun;
296 extern AVFilter ff_vf_libvmaf;
297 extern AVFilter ff_vf_limiter;
298 extern AVFilter ff_vf_loop;
299 extern AVFilter ff_vf_lumakey;
300 extern AVFilter ff_vf_lut;
301 extern AVFilter ff_vf_lut1d;
302 extern AVFilter ff_vf_lut2;
303 extern AVFilter ff_vf_lut3d;
304 extern AVFilter ff_vf_lutrgb;
305 extern AVFilter ff_vf_lutyuv;
306 extern AVFilter ff_vf_maskedclamp;
307 extern AVFilter ff_vf_maskedmax;
308 extern AVFilter ff_vf_maskedmerge;
309 extern AVFilter ff_vf_maskedmin;
310 extern AVFilter ff_vf_maskedthreshold;
311 extern AVFilter ff_vf_maskfun;
312 extern AVFilter ff_vf_mcdeint;
313 extern AVFilter ff_vf_median;
314 extern AVFilter ff_vf_mergeplanes;
315 extern AVFilter ff_vf_mestimate;
316 extern AVFilter ff_vf_metadata;
317 extern AVFilter ff_vf_midequalizer;
318 extern AVFilter ff_vf_minterpolate;
319 extern AVFilter ff_vf_mix;
320 extern AVFilter ff_vf_monochrome;
321 extern AVFilter ff_vf_mpdecimate;
322 extern AVFilter ff_vf_negate;
323 extern AVFilter ff_vf_nlmeans;
324 extern AVFilter ff_vf_nlmeans_opencl;
325 extern AVFilter ff_vf_nnedi;
326 extern AVFilter ff_vf_noformat;
327 extern AVFilter ff_vf_noise;
328 extern AVFilter ff_vf_normalize;
329 extern AVFilter ff_vf_null;
330 extern AVFilter ff_vf_ocr;
331 extern AVFilter ff_vf_ocv;
332 extern AVFilter ff_vf_oscilloscope;
333 extern AVFilter ff_vf_overlay;
334 extern AVFilter ff_vf_overlay_opencl;
335 extern AVFilter ff_vf_overlay_qsv;
336 extern AVFilter ff_vf_overlay_vulkan;
337 extern AVFilter ff_vf_overlay_cuda;
338 extern AVFilter ff_vf_owdenoise;
339 extern AVFilter ff_vf_pad;
340 extern AVFilter ff_vf_pad_opencl;
341 extern AVFilter ff_vf_palettegen;
342 extern AVFilter ff_vf_paletteuse;
343 extern AVFilter ff_vf_perms;
344 extern AVFilter ff_vf_perspective;
345 extern AVFilter ff_vf_phase;
346 extern AVFilter ff_vf_photosensitivity;
347 extern AVFilter ff_vf_pixdesctest;
348 extern AVFilter ff_vf_pixscope;
349 extern AVFilter ff_vf_pp;
350 extern AVFilter ff_vf_pp7;
351 extern AVFilter ff_vf_premultiply;
352 extern AVFilter ff_vf_prewitt;
353 extern AVFilter ff_vf_prewitt_opencl;
354 extern AVFilter ff_vf_procamp_vaapi;
355 extern AVFilter ff_vf_program_opencl;
356 extern AVFilter ff_vf_pseudocolor;
357 extern AVFilter ff_vf_psnr;
358 extern AVFilter ff_vf_pullup;
359 extern AVFilter ff_vf_qp;
360 extern AVFilter ff_vf_random;
361 extern AVFilter ff_vf_readeia608;
362 extern AVFilter ff_vf_readvitc;
363 extern AVFilter ff_vf_realtime;
364 extern AVFilter ff_vf_remap;
365 extern AVFilter ff_vf_removegrain;
366 extern AVFilter ff_vf_removelogo;
367 extern AVFilter ff_vf_repeatfields;
368 extern AVFilter ff_vf_reverse;
369 extern AVFilter ff_vf_rgbashift;
370 extern AVFilter ff_vf_roberts;
371 extern AVFilter ff_vf_roberts_opencl;
372 extern AVFilter ff_vf_rotate;
373 extern AVFilter ff_vf_sab;
374 extern AVFilter ff_vf_scale;
375 extern AVFilter ff_vf_scale_cuda;
376 extern AVFilter ff_vf_scale_npp;
377 extern AVFilter ff_vf_scale_qsv;
378 extern AVFilter ff_vf_scale_vaapi;
379 extern AVFilter ff_vf_scale_vulkan;
380 extern AVFilter ff_vf_scale2ref;
381 extern AVFilter ff_vf_scdet;
382 extern AVFilter ff_vf_scroll;
383 extern AVFilter ff_vf_select;
384 extern AVFilter ff_vf_selectivecolor;
385 extern AVFilter ff_vf_sendcmd;
386 extern AVFilter ff_vf_separatefields;
387 extern AVFilter ff_vf_setdar;
388 extern AVFilter ff_vf_setfield;
389 extern AVFilter ff_vf_setparams;
390 extern AVFilter ff_vf_setpts;
391 extern AVFilter ff_vf_setrange;
392 extern AVFilter ff_vf_setsar;
393 extern AVFilter ff_vf_settb;
394 extern AVFilter ff_vf_sharpness_vaapi;
395 extern AVFilter ff_vf_shear;
396 extern AVFilter ff_vf_showinfo;
397 extern AVFilter ff_vf_showpalette;
398 extern AVFilter ff_vf_shuffleframes;
399 extern AVFilter ff_vf_shufflepixels;
400 extern AVFilter ff_vf_shuffleplanes;
401 extern AVFilter ff_vf_sidedata;
402 extern AVFilter ff_vf_signalstats;
403 extern AVFilter ff_vf_signature;
404 extern AVFilter ff_vf_smartblur;
405 extern AVFilter ff_vf_sobel;
406 extern AVFilter ff_vf_sobel_opencl;
407 extern AVFilter ff_vf_split;
408 extern AVFilter ff_vf_spp;
409 extern AVFilter ff_vf_sr;
410 extern AVFilter ff_vf_ssim;
411 extern AVFilter ff_vf_stereo3d;
412 extern AVFilter ff_vf_streamselect;
413 extern AVFilter ff_vf_subtitles;
414 extern AVFilter ff_vf_super2xsai;
415 extern AVFilter ff_vf_swaprect;
416 extern AVFilter ff_vf_swapuv;
417 extern AVFilter ff_vf_tblend;
418 extern AVFilter ff_vf_telecine;
419 extern AVFilter ff_vf_thistogram;
420 extern AVFilter ff_vf_threshold;
421 extern AVFilter ff_vf_thumbnail;
422 extern AVFilter ff_vf_thumbnail_cuda;
423 extern AVFilter ff_vf_tile;
424 extern AVFilter ff_vf_tinterlace;
425 extern AVFilter ff_vf_tlut2;
426 extern AVFilter ff_vf_tmedian;
427 extern AVFilter ff_vf_tmidequalizer;
428 extern AVFilter ff_vf_tmix;
429 extern AVFilter ff_vf_tonemap;
430 extern AVFilter ff_vf_tonemap_opencl;
431 extern AVFilter ff_vf_tonemap_vaapi;
432 extern AVFilter ff_vf_tpad;
433 extern AVFilter ff_vf_transpose;
434 extern AVFilter ff_vf_transpose_npp;
435 extern AVFilter ff_vf_transpose_opencl;
436 extern AVFilter ff_vf_transpose_vaapi;
437 extern AVFilter ff_vf_trim;
438 extern AVFilter ff_vf_unpremultiply;
439 extern AVFilter ff_vf_unsharp;
440 extern AVFilter ff_vf_unsharp_opencl;
441 extern AVFilter ff_vf_untile;
442 extern AVFilter ff_vf_uspp;
443 extern AVFilter ff_vf_v360;
444 extern AVFilter ff_vf_vaguedenoiser;
445 extern AVFilter ff_vf_vectorscope;
446 extern AVFilter ff_vf_vflip;
447 extern AVFilter ff_vf_vfrdet;
448 extern AVFilter ff_vf_vibrance;
449 extern AVFilter ff_vf_vidstabdetect;
450 extern AVFilter ff_vf_vidstabtransform;
451 extern AVFilter ff_vf_vif;
452 extern AVFilter ff_vf_vignette;
453 extern AVFilter ff_vf_vmafmotion;
454 extern AVFilter ff_vf_vpp_qsv;
455 extern AVFilter ff_vf_vstack;
456 extern AVFilter ff_vf_w3fdif;
457 extern AVFilter ff_vf_waveform;
458 extern AVFilter ff_vf_weave;
459 extern AVFilter ff_vf_xbr;
460 extern AVFilter ff_vf_xfade;
461 extern AVFilter ff_vf_xfade_opencl;
462 extern AVFilter ff_vf_xmedian;
463 extern AVFilter ff_vf_xstack;
464 extern AVFilter ff_vf_yadif;
465 extern AVFilter ff_vf_yadif_cuda;
466 extern AVFilter ff_vf_yaepblur;
467 extern AVFilter ff_vf_zmq;
468 extern AVFilter ff_vf_zoompan;
469 extern AVFilter ff_vf_zscale;
470
471 extern AVFilter ff_vsrc_allrgb;
472 extern AVFilter ff_vsrc_allyuv;
473 extern AVFilter ff_vsrc_cellauto;
474 extern AVFilter ff_vsrc_color;
475 extern AVFilter ff_vsrc_coreimagesrc;
476 extern AVFilter ff_vsrc_frei0r_src;
477 extern AVFilter ff_vsrc_gradients;
478 extern AVFilter ff_vsrc_haldclutsrc;
479 extern AVFilter ff_vsrc_life;
480 extern AVFilter ff_vsrc_mandelbrot;
481 extern AVFilter ff_vsrc_mptestsrc;
482 extern AVFilter ff_vsrc_nullsrc;
483 extern AVFilter ff_vsrc_openclsrc;
484 extern AVFilter ff_vsrc_pal75bars;
485 extern AVFilter ff_vsrc_pal100bars;
486 extern AVFilter ff_vsrc_rgbtestsrc;
487 extern AVFilter ff_vsrc_sierpinski;
488 extern AVFilter ff_vsrc_smptebars;
489 extern AVFilter ff_vsrc_smptehdbars;
490 extern AVFilter ff_vsrc_testsrc;
491 extern AVFilter ff_vsrc_testsrc2;
492 extern AVFilter ff_vsrc_yuvtestsrc;
493
494 extern AVFilter ff_vsink_nullsink;
495
496 /* multimedia filters */
497 extern AVFilter ff_avf_abitscope;
498 extern AVFilter ff_avf_adrawgraph;
499 extern AVFilter ff_avf_agraphmonitor;
500 extern AVFilter ff_avf_ahistogram;
501 extern AVFilter ff_avf_aphasemeter;
502 extern AVFilter ff_avf_avectorscope;
503 extern AVFilter ff_avf_concat;
504 extern AVFilter ff_avf_showcqt;
505 extern AVFilter ff_avf_showfreqs;
506 extern AVFilter ff_avf_showspatial;
507 extern AVFilter ff_avf_showspectrum;
508 extern AVFilter ff_avf_showspectrumpic;
509 extern AVFilter ff_avf_showvolume;
510 extern AVFilter ff_avf_showwaves;
511 extern AVFilter ff_avf_showwavespic;
512 extern AVFilter ff_vaf_spectrumsynth;
513
514 /* multimedia sources */
515 extern AVFilter ff_avsrc_amovie;
516 extern AVFilter ff_avsrc_movie;
517
518 /* those filters are part of public or internal API,
519  * they are formatted to not be found by the grep
520  * as they are manually added again (due to their 'names'
521  * being the same while having different 'types'). */
522 extern  AVFilter ff_asrc_abuffer;
523 extern  AVFilter ff_vsrc_buffer;
524 extern  AVFilter ff_asink_abuffer;
525 extern  AVFilter ff_vsink_buffer;
526 extern AVFilter ff_af_afifo;
527 extern AVFilter ff_vf_fifo;
528
529 #include "libavfilter/filter_list.c"
530
531
532 const AVFilter *av_filter_iterate(void **opaque)
533 {
534     uintptr_t i = (uintptr_t)*opaque;
535     const AVFilter *f = filter_list[i];
536
537     if (f)
538         *opaque = (void*)(i + 1);
539
540     return f;
541 }
542
543 const AVFilter *avfilter_get_by_name(const char *name)
544 {
545     const AVFilter *f = NULL;
546     void *opaque = 0;
547
548     if (!name)
549         return NULL;
550
551     while ((f = av_filter_iterate(&opaque)))
552         if (!strcmp(f->name, name))
553             return f;
554
555     return NULL;
556 }
557
558
559 #if FF_API_NEXT
560 FF_DISABLE_DEPRECATION_WARNINGS
561 static AVOnce av_filter_next_init = AV_ONCE_INIT;
562
563 static void av_filter_init_next(void)
564 {
565     AVFilter *prev = NULL, *p;
566     void *i = 0;
567     while ((p = (AVFilter*)av_filter_iterate(&i))) {
568         if (prev)
569             prev->next = p;
570         prev = p;
571     }
572 }
573
574 void avfilter_register_all(void)
575 {
576     ff_thread_once(&av_filter_next_init, av_filter_init_next);
577 }
578
579 int avfilter_register(AVFilter *filter)
580 {
581     ff_thread_once(&av_filter_next_init, av_filter_init_next);
582
583     return 0;
584 }
585
586 const AVFilter *avfilter_next(const AVFilter *prev)
587 {
588     ff_thread_once(&av_filter_next_init, av_filter_init_next);
589
590     return prev ? prev->next : filter_list[0];
591 }
592
593 FF_ENABLE_DEPRECATION_WARNINGS
594 #endif