History

avfilter/avfilter: Add numbers of (in|out)pads directly to AVFilter

Up until now, an AVFilter's lists of input and output AVFilterPads were terminated by a sentinel and the only way to get the length of these lists was by using avfilter_pad_count(). This has two drawbacks: first, sizeof(AVFilterPad) is not negligible (i.e. 64B on 64bit systems); second, getting the size involves a function call instead of just reading the data. This commit therefore changes this. The sentinels are removed and new private fields nb_inputs and nb_outputs are added to AVFilter that contain the number of elements of the respective AVFilterPad array. Given that AVFilter.(in|out)puts are the only arrays of zero-terminated AVFilterPads an API user has access to (AVFilterContext.(in|out)put_pads are not zero-terminated and they already have a size field) the argument to avfilter_pad_count() is always one of these lists, so it just has to find the filter the list belongs to and read said number. This is slower than before, but a replacement function that just reads the internal numbers that users are expected to switch to will be added soon; and furthermore, avfilter_pad_count() is probably never called in hot loops anyway. This saves about 49KiB from the binary; notice that these sentinels are not in .bss despite being zeroed: they are in .data.rel.ro due to the non-sentinels.

Andreas Rheinhardt committed 5 years ago

Commit 8be701d1 parent d53d48c389 files · +906 −1696Browse files

Unified · Split

389 files
  1. libavfilter/aeval.c +3 −6
  2. libavfilter/af_acontrast.c +2 −4
  3. libavfilter/af_acopy.c +2 −4
  4. libavfilter/af_acrossover.c +1 −2
  5. libavfilter/af_acrusher.c +2 −4
  6. libavfilter/af_adeclick.c +4 −6
  7. libavfilter/af_adelay.c +2 −4
  8. libavfilter/af_adenorm.c +2 −4
  9. libavfilter/af_aderivative.c +4 −6
  10. libavfilter/af_aecho.c +2 −4
  11. libavfilter/af_aemphasis.c +2 −4
  12. libavfilter/af_aexciter.c +2 −4
  13. libavfilter/af_afade.c +4 −8
  14. libavfilter/af_afftdn.c +2 −4
  15. libavfilter/af_afftfilt.c +2 −4
  16. libavfilter/af_aformat.c +2 −4
  17. libavfilter/af_afreqshift.c +4 −6
  18. libavfilter/af_afwtdn.c +2 −4
  19. libavfilter/af_agate.c +4 −8
  20. libavfilter/af_aiir.c +1 −2
  21. libavfilter/af_alimiter.c +2 −4
  22. libavfilter/af_amerge.c +1 −2
  23. libavfilter/af_amix.c +1 −2
  24. libavfilter/af_amultiply.c +2 −4
  25. libavfilter/af_anequalizer.c +1 −2
  26. libavfilter/af_anlmdn.c +2 −4
  27. libavfilter/af_anlms.c +2 −4
  28. libavfilter/af_anull.c +2 −4
  29. libavfilter/af_apad.c +2 −4
  30. libavfilter/af_aphaser.c +2 −4
  31. libavfilter/af_apulsator.c +2 −4
  32. libavfilter/af_aresample.c +2 −4
  33. libavfilter/af_arnndn.c +2 −4
  34. libavfilter/af_asetnsamples.c +2 −4
  35. libavfilter/af_asetrate.c +2 −4
  36. libavfilter/af_ashowinfo.c +2 −4
  37. libavfilter/af_asoftclip.c +2 −4
  38. libavfilter/af_asr.c +2 −4
  39. libavfilter/af_astats.c +2 −4
  40. libavfilter/af_asubboost.c +2 −4
  41. libavfilter/af_asupercut.c +8 −10
  42. libavfilter/af_atempo.c +2 −4
  43. libavfilter/af_axcorrelate.c +2 −4
  44. libavfilter/af_biquads.c +2 −4
  45. libavfilter/af_bs2b.c +2 −4
  46. libavfilter/af_channelmap.c +2 −4
  47. libavfilter/af_channelsplit.c +1 −2
  48. libavfilter/af_chorus.c +2 −4
  49. libavfilter/af_compand.c +2 −4
  50. libavfilter/af_compensationdelay.c +2 −4
  51. libavfilter/af_crossfeed.c +2 −4
  52. libavfilter/af_crystalizer.c +2 −4
  53. libavfilter/af_dcshift.c +2 −4
  54. libavfilter/af_deesser.c +2 −4
  55. libavfilter/af_drmeter.c +2 −4
  56. libavfilter/af_dynaudnorm.c +2 −4
  57. libavfilter/af_earwax.c +2 −4
  58. libavfilter/af_extrastereo.c +2 −4
  59. libavfilter/af_firequalizer.c +2 −4
  60. libavfilter/af_flanger.c +2 −4
  61. libavfilter/af_haas.c +2 −4
  62. libavfilter/af_hdcd.c +2 −4
  63. libavfilter/af_headphone.c +1 −2
  64. libavfilter/af_join.c +1 −2
  65. libavfilter/af_ladspa.c +1 −2
  66. libavfilter/af_loudnorm.c +2 −4
  67. libavfilter/af_lv2.c +1 −2
  68. libavfilter/af_mcompand.c +2 −4
  69. libavfilter/af_pan.c +2 −4
  70. libavfilter/af_replaygain.c +2 −4
  71. libavfilter/af_rubberband.c +2 −4
  72. libavfilter/af_sidechaincompress.c +4 −8
  73. libavfilter/af_silencedetect.c +2 −4
  74. libavfilter/af_silenceremove.c +2 −4
  75. libavfilter/af_sofalizer.c +2 −4
  76. libavfilter/af_speechnorm.c +2 −4
  77. libavfilter/af_stereotools.c +2 −4
  78. libavfilter/af_stereowiden.c +2 −4
  79. libavfilter/af_superequalizer.c +2 −4
  80. libavfilter/af_surround.c +2 −4
  81. libavfilter/af_tremolo.c +2 −4
  82. libavfilter/af_vibrato.c +2 −4
  83. libavfilter/af_volume.c +2 −4
  84. libavfilter/af_volumedetect.c +2 −4
  85. libavfilter/asink_anullsink.c +1 −2
  86. libavfilter/asrc_afirsrc.c +1 −2
  87. libavfilter/asrc_anoisesrc.c +1 −2
  88. libavfilter/asrc_anullsrc.c +1 −2
  89. libavfilter/asrc_flite.c +1 −2
  90. libavfilter/asrc_hilbert.c +1 −2
  91. libavfilter/asrc_sinc.c +1 −2
  92. libavfilter/asrc_sine.c +1 −2
  93. libavfilter/avf_abitscope.c +2 −4
  94. libavfilter/avf_ahistogram.c +2 −4
  95. libavfilter/avf_aphasemeter.c +1 −2
  96. libavfilter/avf_avectorscope.c +2 −4
  97. libavfilter/avf_showcqt.c +2 −4
  98. libavfilter/avf_showfreqs.c +2 −4
  99. libavfilter/avf_showspatial.c +2 −4
  100. libavfilter/avf_showspectrum.c +4 −8
  101. libavfilter/avf_showvolume.c +2 −4
  102. libavfilter/avf_showwaves.c +4 −8
  103. libavfilter/avfilter.c +12 −6
  104. libavfilter/avfilter.h +14 −4
  105. libavfilter/buffersink.c +2 −4
  106. libavfilter/buffersrc.c +2 −4
  107. libavfilter/f_bench.c +4 −8
  108. libavfilter/f_cue.c +4 −8
  109. libavfilter/f_drawgraph.c +4 −8
  110. libavfilter/f_ebur128.c +1 −2
  111. libavfilter/f_graphmonitor.c +4 −8
  112. libavfilter/f_interleave.c +2 −4
  113. libavfilter/f_loop.c +4 −8
  114. libavfilter/f_metadata.c +4 −8
  115. libavfilter/f_perms.c +4 −8
  116. libavfilter/f_realtime.c +4 −8
  117. libavfilter/f_reverse.c +4 −8
  118. libavfilter/f_segment.c +2 −4
  119. libavfilter/f_select.c +2 −4
  120. libavfilter/f_sendcmd.c +4 −8
  121. libavfilter/f_sidedata.c +4 −8
  122. libavfilter/f_zmq.c +4 −8
  123. libavfilter/fifo.c +4 −8
  124. libavfilter/internal.h +6 −0
  125. libavfilter/setpts.c +4 −8
  126. libavfilter/settb.c +4 −8
  127. libavfilter/split.c +2 −4
  128. libavfilter/trim.c +4 −8
  129. libavfilter/vaf_spectrumsynth.c +2 −4
  130. libavfilter/vf_addroi.c +2 −4
  131. libavfilter/vf_alphamerge.c +2 −4
  132. libavfilter/vf_amplify.c +2 −4
  133. libavfilter/vf_aspect.c +4 −8
  134. libavfilter/vf_atadenoise.c +2 −4
  135. libavfilter/vf_avgblur.c +2 −4
  136. libavfilter/vf_avgblur_opencl.c +4 −6
  137. libavfilter/vf_avgblur_vulkan.c +2 −4
  138. libavfilter/vf_bbox.c +2 −4
  139. libavfilter/vf_bilateral.c +2 −4
  140. libavfilter/vf_bitplanenoise.c +2 −4
  141. libavfilter/vf_blackdetect.c +2 −4
  142. libavfilter/vf_blackframe.c +2 −4
  143. libavfilter/vf_blend.c +4 −8
  144. libavfilter/vf_bm3d.c +1 −2
  145. libavfilter/vf_boxblur.c +2 −4
  146. libavfilter/vf_bwdif.c +2 −4
  147. libavfilter/vf_cas.c +2 −4
  148. libavfilter/vf_chromaber_vulkan.c +2 −4
  149. libavfilter/vf_chromakey.c +4 −8
  150. libavfilter/vf_chromanr.c +2 −4
  151. libavfilter/vf_chromashift.c +4 −6
  152. libavfilter/vf_ciescope.c +2 −4
  153. libavfilter/vf_codecview.c +2 −4
  154. libavfilter/vf_colorbalance.c +2 −4
  155. libavfilter/vf_colorchannelmixer.c +2 −4
  156. libavfilter/vf_colorconstancy.c +2 −4
  157. libavfilter/vf_colorcontrast.c +2 −4
  158. libavfilter/vf_colorcorrect.c +2 −4
  159. libavfilter/vf_colorize.c +2 −4
  160. libavfilter/vf_colorkey.c +4 −6
  161. libavfilter/vf_colorkey_opencl.c +2 −4
  162. libavfilter/vf_colorlevels.c +2 −4
  163. libavfilter/vf_colormatrix.c +2 −4
  164. libavfilter/vf_colorspace.c +2 −4
  165. libavfilter/vf_colortemperature.c +2 −4
  166. libavfilter/vf_convolution.c +10 −12
  167. libavfilter/vf_convolution_opencl.c +8 −10
  168. libavfilter/vf_convolve.c +4 −6
  169. libavfilter/vf_copy.c +2 −4
  170. libavfilter/vf_coreimage.m +3 −6
  171. libavfilter/vf_cover_rect.c +2 −4
  172. libavfilter/vf_crop.c +2 −4
  173. libavfilter/vf_cropdetect.c +2 −4
  174. libavfilter/vf_curves.c +2 −4
  175. libavfilter/vf_datascope.c +6 −12
  176. libavfilter/vf_dblur.c +2 −4
  177. libavfilter/vf_dctdnoiz.c +2 −4
  178. libavfilter/vf_deband.c +2 −4
  179. libavfilter/vf_deblock.c +2 −4
  180. libavfilter/vf_decimate.c +1 −2
  181. libavfilter/vf_dedot.c +2 −4
  182. libavfilter/vf_deflicker.c +2 −4
  183. libavfilter/vf_deinterlace_qsv.c +2 −4
  184. libavfilter/vf_deinterlace_vaapi.c +2 −4
  185. libavfilter/vf_dejudder.c +2 −4
  186. libavfilter/vf_delogo.c +2 −4
  187. libavfilter/vf_derain.c +2 −4
  188. libavfilter/vf_deshake.c +2 −4
  189. libavfilter/vf_deshake_opencl.c +2 −4
  190. libavfilter/vf_despill.c +2 −4
  191. libavfilter/vf_detelecine.c +2 −4
  192. libavfilter/vf_displace.c +2 −4
  193. libavfilter/vf_dnn_classify.c +2 −4
  194. libavfilter/vf_dnn_detect.c +2 −4
  195. libavfilter/vf_dnn_processing.c +2 −4
  196. libavfilter/vf_drawbox.c +4 −8
  197. libavfilter/vf_drawtext.c +2 −4
  198. libavfilter/vf_edgedetect.c +2 −4
  199. libavfilter/vf_elbg.c +2 −4
  200. libavfilter/vf_entropy.c +2 −4
  201. libavfilter/vf_epx.c +2 −4
  202. libavfilter/vf_eq.c +2 −4
  203. libavfilter/vf_estdif.c +2 −4
  204. libavfilter/vf_exposure.c +2 −4
  205. libavfilter/vf_extractplanes.c +2 −3
  206. libavfilter/vf_fade.c +2 −4
  207. libavfilter/vf_fftdnoiz.c +2 −4
  208. libavfilter/vf_fftfilt.c +2 −4
  209. libavfilter/vf_field.c +2 −4
  210. libavfilter/vf_fieldhint.c +2 −4
  211. libavfilter/vf_fieldmatch.c +1 −2
  212. libavfilter/vf_fieldorder.c +2 −4
  213. libavfilter/vf_fillborders.c +2 −4
  214. libavfilter/vf_find_rect.c +2 −4
  215. libavfilter/vf_floodfill.c +2 −4
  216. libavfilter/vf_format.c +4 −8
  217. libavfilter/vf_fps.c +2 −4
  218. libavfilter/vf_framepack.c +2 −4
  219. libavfilter/vf_framerate.c +2 −4
  220. libavfilter/vf_framestep.c +2 −4
  221. libavfilter/vf_freezedetect.c +2 −4
  222. libavfilter/vf_freezeframes.c +2 −4
  223. libavfilter/vf_frei0r.c +3 −6
  224. libavfilter/vf_fspp.c +2 −4
  225. libavfilter/vf_gblur.c +2 −4
  226. libavfilter/vf_geq.c +2 −4
  227. libavfilter/vf_gradfun.c +2 −4
  228. libavfilter/vf_guided.c +1 −2
  229. libavfilter/vf_hflip.c +2 −4
  230. libavfilter/vf_histeq.c +2 −4
  231. libavfilter/vf_histogram.c +4 −6
  232. libavfilter/vf_hqdn3d.c +2 −4
  233. libavfilter/vf_hqx.c +2 −4
  234. libavfilter/vf_hue.c +2 −4
  235. libavfilter/vf_hwdownload.c +2 −4
  236. libavfilter/vf_hwmap.c +2 −4
  237. libavfilter/vf_hwupload.c +2 −4
  238. libavfilter/vf_hwupload_cuda.c +2 −4
  239. libavfilter/vf_hysteresis.c +2 −4
  240. libavfilter/vf_identity.c +4 −6
  241. libavfilter/vf_idet.c +2 −4
  242. libavfilter/vf_il.c +2 −4
  243. libavfilter/vf_kerndeint.c +2 −4
  244. libavfilter/vf_lagfun.c +2 −4
  245. libavfilter/vf_lenscorrection.c +2 −4
  246. libavfilter/vf_lensfun.c +2 −4
  247. libavfilter/vf_libopencv.c +2 −4
  248. libavfilter/vf_libvmaf.c +2 −4
  249. libavfilter/vf_limiter.c +2 −4
  250. libavfilter/vf_lumakey.c +2 −4
  251. libavfilter/vf_lut.c +2 −4
  252. libavfilter/vf_lut2.c +4 −8
  253. libavfilter/vf_lut3d.c +6 −12
  254. libavfilter/vf_maskedclamp.c +2 −4
  255. libavfilter/vf_maskedmerge.c +2 −4
  256. libavfilter/vf_maskedminmax.c +4 −6
  257. libavfilter/vf_maskedthreshold.c +2 −4
  258. libavfilter/vf_maskfun.c +2 −4
  259. libavfilter/vf_mcdeint.c +2 −4
  260. libavfilter/vf_median.c +2 −4
  261. libavfilter/vf_mergeplanes.c +1 −2
  262. libavfilter/vf_mestimate.c +2 −4
  263. libavfilter/vf_midequalizer.c +2 −4
  264. libavfilter/vf_minterpolate.c +2 −4
  265. libavfilter/vf_misc_vaapi.c +4 −6
  266. libavfilter/vf_mix.c +3 −5
  267. libavfilter/vf_monochrome.c +2 −4
  268. libavfilter/vf_mpdecimate.c +2 −4
  269. libavfilter/vf_neighbor.c +2 −4
  270. libavfilter/vf_neighbor_opencl.c +4 −6
  271. libavfilter/vf_nlmeans.c +2 −4
  272. libavfilter/vf_nlmeans_opencl.c +2 −4
  273. libavfilter/vf_nnedi.c +2 −4
  274. libavfilter/vf_noise.c +2 −4
  275. libavfilter/vf_normalize.c +2 −4
  276. libavfilter/vf_null.c +2 −4
  277. libavfilter/vf_ocr.c +2 −4
  278. libavfilter/vf_overlay.c +2 −4
  279. libavfilter/vf_overlay_cuda.c +2 −4
  280. libavfilter/vf_overlay_opencl.c +2 −4
  281. libavfilter/vf_overlay_qsv.c +2 −4
  282. libavfilter/vf_overlay_vulkan.c +2 −4
  283. libavfilter/vf_owdenoise.c +2 −4
  284. libavfilter/vf_pad.c +2 −4
  285. libavfilter/vf_pad_opencl.c +2 −4
  286. libavfilter/vf_palettegen.c +2 −4
  287. libavfilter/vf_paletteuse.c +2 −4
  288. libavfilter/vf_perspective.c +2 −4
  289. libavfilter/vf_phase.c +2 −4
  290. libavfilter/vf_photosensitivity.c +2 −4
  291. libavfilter/vf_pixdesctest.c +2 −4
  292. libavfilter/vf_pp.c +2 −4
  293. libavfilter/vf_pp7.c +2 −4
  294. libavfilter/vf_premultiply.c +2 −3
  295. libavfilter/vf_procamp_vaapi.c +2 −4
  296. libavfilter/vf_program_opencl.c +2 −4
  297. libavfilter/vf_pseudocolor.c +2 −4
  298. libavfilter/vf_psnr.c +2 −4
  299. libavfilter/vf_pullup.c +2 −4
  300. libavfilter/vf_qp.c +2 −4
  301. libavfilter/vf_random.c +2 −4
  302. libavfilter/vf_readeia608.c +2 −4
  303. libavfilter/vf_readvitc.c +2 −4
  304. libavfilter/vf_remap.c +2 −4
  305. libavfilter/vf_removegrain.c +2 −4
  306. libavfilter/vf_removelogo.c +2 −4
  307. libavfilter/vf_repeatfields.c +2 −4
  308. libavfilter/vf_rotate.c +2 −4
  309. libavfilter/vf_sab.c +2 −4
  310. libavfilter/vf_scale.c +4 −8
  311. libavfilter/vf_scale_cuda.c +2 −4
  312. libavfilter/vf_scale_npp.c +2 −4
  313. libavfilter/vf_scale_qsv.c +2 −4
  314. libavfilter/vf_scale_vaapi.c +2 −4
  315. libavfilter/vf_scale_vulkan.c +2 −4
  316. libavfilter/vf_scdet.c +2 −4
  317. libavfilter/vf_scroll.c +2 −4
  318. libavfilter/vf_selectivecolor.c +2 −4
  319. libavfilter/vf_separatefields.c +2 −4
  320. libavfilter/vf_setparams.c +6 −8
  321. libavfilter/vf_shear.c +2 −4
  322. libavfilter/vf_showinfo.c +2 −4
  323. libavfilter/vf_showpalette.c +2 −4
  324. libavfilter/vf_shuffleframes.c +2 −4
  325. libavfilter/vf_shufflepixels.c +2 −4
  326. libavfilter/vf_shuffleplanes.c +2 −4
  327. libavfilter/vf_signalstats.c +2 −4
  328. libavfilter/vf_signature.c +1 −2
  329. libavfilter/vf_smartblur.c +2 −4
  330. libavfilter/vf_spp.c +2 −4
  331. libavfilter/vf_sr.c +2 −4
  332. libavfilter/vf_ssim.c +2 −4
  333. libavfilter/vf_stack.c +3 −4
  334. libavfilter/vf_stereo3d.c +2 −4
  335. libavfilter/vf_subtitles.c +4 −6
  336. libavfilter/vf_super2xsai.c +2 −4
  337. libavfilter/vf_swaprect.c +2 −4
  338. libavfilter/vf_swapuv.c +2 −4
  339. libavfilter/vf_telecine.c +2 −4
  340. libavfilter/vf_threshold.c +2 −4
  341. libavfilter/vf_thumbnail.c +2 −4
  342. libavfilter/vf_thumbnail_cuda.c +2 −4
  343. libavfilter/vf_tile.c +2 −4
  344. libavfilter/vf_tinterlace.c +4 −6
  345. libavfilter/vf_tmidequalizer.c +2 −4
  346. libavfilter/vf_tonemap.c +2 −4
  347. libavfilter/vf_tonemap_opencl.c +2 −4
  348. libavfilter/vf_tonemap_vaapi.c +2 −4
  349. libavfilter/vf_tpad.c +2 −4
  350. libavfilter/vf_transpose.c +2 −4
  351. libavfilter/vf_transpose_npp.c +2 −4
  352. libavfilter/vf_transpose_opencl.c +2 −4
  353. libavfilter/vf_transpose_vaapi.c +2 −4
  354. libavfilter/vf_unsharp.c +2 −4
  355. libavfilter/vf_unsharp_opencl.c +2 −4
  356. libavfilter/vf_untile.c +2 −4
  357. libavfilter/vf_uspp.c +2 −4
  358. libavfilter/vf_v360.c +2 −4
  359. libavfilter/vf_vaguedenoiser.c +2 −4
  360. libavfilter/vf_vectorscope.c +2 −4
  361. libavfilter/vf_vflip.c +2 −4
  362. libavfilter/vf_vfrdet.c +2 −4
  363. libavfilter/vf_vibrance.c +2 −4
  364. libavfilter/vf_vidstabdetect.c +2 −4
  365. libavfilter/vf_vidstabtransform.c +2 −4
  366. libavfilter/vf_vif.c +2 −4
  367. libavfilter/vf_vignette.c +2 −4
  368. libavfilter/vf_vmafmotion.c +2 −4
  369. libavfilter/vf_vpp_qsv.c +2 −4
  370. libavfilter/vf_w3fdif.c +2 −4
  371. libavfilter/vf_waveform.c +2 −4
  372. libavfilter/vf_weave.c +4 −6
  373. libavfilter/vf_xbr.c +2 −4
  374. libavfilter/vf_xfade.c +2 −4
  375. libavfilter/vf_xfade_opencl.c +2 −4
  376. libavfilter/vf_xmedian.c +3 −6
  377. libavfilter/vf_yadif.c +2 −4
  378. libavfilter/vf_yadif_cuda.c +2 −4
  379. libavfilter/vf_yaepblur.c +2 −4
  380. libavfilter/vf_zoompan.c +2 −4
  381. libavfilter/vf_zscale.c +2 −4
  382. libavfilter/vsink_nullsink.c +1 −2
  383. libavfilter/vsrc_cellauto.c +1 −2
  384. libavfilter/vsrc_gradients.c +1 −2
  385. libavfilter/vsrc_life.c +1 −2
  386. libavfilter/vsrc_mandelbrot.c +1 −2
  387. libavfilter/vsrc_mptestsrc.c +1 −2
  388. libavfilter/vsrc_sierpinski.c +1 −2
  389. libavfilter/vsrc_testsrc.c +13 −23
libavfilter/aeval.c+3−6
@@ -307,7 +307,6 @@ static const AVFilterPad aevalsrc_outputs[] = { · 306 unmodified lines
307307 .config_props = config_props,
308308 .request_frame = request_frame,
309309 },
310− { NULL }
311310 };
312311
313312 const AVFilter ff_asrc_aevalsrc = {
@@ -318,7 +317,7 @@ const AVFilter ff_asrc_aevalsrc = { · 4 unmodified lines
318317 .uninit = uninit,
319318 .priv_size = sizeof(EvalContext),
320319 .inputs = NULL,
321− .outputs = aevalsrc_outputs,
320+ FILTER_OUTPUTS(aevalsrc_outputs),
322321 .priv_class = &aevalsrc_class,
323322 };
324323
@@ -445,7 +444,6 @@ static const AVFilterPad aeval_inputs[] = { · 120 unmodified lines
445444 .type = AVMEDIA_TYPE_AUDIO,
446445 .filter_frame = filter_frame,
447446 },
448− { NULL }
449447 };
450448
451449 static const AVFilterPad aeval_outputs[] = {
@@ -454,7 +452,6 @@ static const AVFilterPad aeval_outputs[] = { · 2 unmodified lines
454452 .type = AVMEDIA_TYPE_AUDIO,
455453 .config_props = aeval_config_output,
456454 },
457− { NULL }
458455 };
459456
460457 const AVFilter ff_af_aeval = {
@@ -464,8 +461,8 @@ const AVFilter ff_af_aeval = { · 3 unmodified lines
464461 .init = init,
465462 .uninit = uninit,
466463 .priv_size = sizeof(EvalContext),
467− .inputs = aeval_inputs,
468− .outputs = aeval_outputs,
464+ FILTER_INPUTS(aeval_inputs),
465+ FILTER_OUTPUTS(aeval_outputs),
469466 .priv_class = &aeval_class,
470467 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
471468 };
libavfilter/af_acontrast.c+2−4
@@ -187,7 +187,6 @@ static const AVFilterPad inputs[] = { · 186 unmodified lines
187187 .filter_frame = filter_frame,
188188 .config_props = config_input,
189189 },
190− { NULL }
191190 };
192191
193192 static const AVFilterPad outputs[] = {
@@ -195,7 +194,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
195194 .name = "default",
196195 .type = AVMEDIA_TYPE_AUDIO,
197196 },
198− { NULL }
199197 };
200198
201199 const AVFilter ff_af_acontrast = {
@@ -204,6 +202,6 @@ const AVFilter ff_af_acontrast = { · 2 unmodified lines
204202 .query_formats = query_formats,
205203 .priv_size = sizeof(AudioContrastContext),
206204 .priv_class = &acontrast_class,
207− .inputs = inputs,
208− .outputs = outputs,
205+ FILTER_INPUTS(inputs),
206+ FILTER_OUTPUTS(outputs),
209207 };
libavfilter/af_acopy.c+2−4
@@ -51,7 +51,6 @@ static const AVFilterPad acopy_inputs[] = { · 50 unmodified lines
5151 .type = AVMEDIA_TYPE_AUDIO,
5252 .filter_frame = filter_frame,
5353 },
54− { NULL }
5554 };
5655
5756 static const AVFilterPad acopy_outputs[] = {
@@ -59,12 +58,11 @@ static const AVFilterPad acopy_outputs[] = { · 1 unmodified line
5958 .name = "default",
6059 .type = AVMEDIA_TYPE_AUDIO,
6160 },
62− { NULL }
6361 };
6462
6563 const AVFilter ff_af_acopy = {
6664 .name = "acopy",
6765 .description = NULL_IF_CONFIG_SMALL("Copy the input audio unchanged to the output."),
68− .inputs = acopy_inputs,
69− .outputs = acopy_outputs,
66+ FILTER_INPUTS(acopy_inputs),
67+ FILTER_OUTPUTS(acopy_outputs),
7068 };
libavfilter/af_acrossover.c+1−2
@@ -555,7 +555,6 @@ static const AVFilterPad inputs[] = { · 554 unmodified lines
555555 .filter_frame = filter_frame,
556556 .config_props = config_input,
557557 },
558− { NULL }
559558 };
560559
561560 const AVFilter ff_af_acrossover = {
@@ -566,7 +565,7 @@ const AVFilter ff_af_acrossover = { · 4 unmodified lines
566565 .init = init,
567566 .uninit = uninit,
568567 .query_formats = query_formats,
569− .inputs = inputs,
568+ FILTER_INPUTS(inputs),
570569 .outputs = NULL,
571570 .flags = AVFILTER_FLAG_DYNAMIC_OUTPUTS |
572571 AVFILTER_FLAG_SLICE_THREADS,
libavfilter/af_acrusher.c+2−4
@@ -342,7 +342,6 @@ static const AVFilterPad avfilter_af_acrusher_inputs[] = { · 341 unmodified lines
342342 .config_props = config_input,
343343 .filter_frame = filter_frame,
344344 },
345− { NULL }
346345 };
347346
348347 static const AVFilterPad avfilter_af_acrusher_outputs[] = {
@@ -350,7 +349,6 @@ static const AVFilterPad avfilter_af_acrusher_outputs[] = { · 1 unmodified line
350349 .name = "default",
351350 .type = AVMEDIA_TYPE_AUDIO,
352351 },
353− { NULL }
354352 };
355353
356354 const AVFilter ff_af_acrusher = {
@@ -360,7 +358,7 @@ const AVFilter ff_af_acrusher = { · 3 unmodified lines
360358 .priv_class = &acrusher_class,
361359 .uninit = uninit,
362360 .query_formats = query_formats,
363− .inputs = avfilter_af_acrusher_inputs,
364− .outputs = avfilter_af_acrusher_outputs,
361+ FILTER_INPUTS(avfilter_af_acrusher_inputs),
362+ FILTER_OUTPUTS(avfilter_af_acrusher_outputs),
365363 .process_command = process_command,
366364 };
libavfilter/af_adeclick.c+4−6
@@ -741,7 +741,6 @@ static const AVFilterPad inputs[] = { · 740 unmodified lines
741741 .type = AVMEDIA_TYPE_AUDIO,
742742 .config_props = config_input,
743743 },
744− { NULL }
745744 };
746745
747746 static const AVFilterPad outputs[] = {
@@ -749,7 +748,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
749748 .name = "default",
750749 .type = AVMEDIA_TYPE_AUDIO,
751750 },
752− { NULL }
753751 };
754752
755753 const AVFilter ff_af_adeclick = {
@@ -761,8 +759,8 @@ const AVFilter ff_af_adeclick = { · 5 unmodified lines
761759 .init = init,
762760 .activate = activate,
763761 .uninit = uninit,
764− .inputs = inputs,
765− .outputs = outputs,
762+ FILTER_INPUTS(inputs),
763+ FILTER_OUTPUTS(outputs),
766764 .flags = AVFILTER_FLAG_SLICE_THREADS | AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
767765 };
768766
@@ -797,7 +795,7 @@ const AVFilter ff_af_adeclip = { · 28 unmodified lines
797795 .init = init,
798796 .activate = activate,
799797 .uninit = uninit,
800− .inputs = inputs,
801− .outputs = outputs,
798+ FILTER_INPUTS(inputs),
799+ FILTER_OUTPUTS(outputs),
802800 .flags = AVFILTER_FLAG_SLICE_THREADS | AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
803801 };
libavfilter/af_adelay.c+2−4
@@ -326,7 +326,6 @@ static const AVFilterPad adelay_inputs[] = { · 325 unmodified lines
326326 .type = AVMEDIA_TYPE_AUDIO,
327327 .config_props = config_input,
328328 },
329− { NULL }
330329 };
331330
332331 static const AVFilterPad adelay_outputs[] = {
@@ -334,7 +333,6 @@ static const AVFilterPad adelay_outputs[] = { · 1 unmodified line
334333 .name = "default",
335334 .type = AVMEDIA_TYPE_AUDIO,
336335 },
337− { NULL }
338336 };
339337
340338 const AVFilter ff_af_adelay = {
@@ -345,7 +343,7 @@ const AVFilter ff_af_adelay = { · 4 unmodified lines
345343 .priv_class = &adelay_class,
346344 .activate = activate,
347345 .uninit = uninit,
348− .inputs = adelay_inputs,
349− .outputs = adelay_outputs,
346+ FILTER_INPUTS(adelay_inputs),
347+ FILTER_OUTPUTS(adelay_outputs),
350348 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
351349 };
libavfilter/af_adenorm.c+2−4
@@ -279,7 +279,6 @@ static const AVFilterPad adenorm_inputs[] = { · 278 unmodified lines
279279 .type = AVMEDIA_TYPE_AUDIO,
280280 .filter_frame = filter_frame,
281281 },
282− { NULL }
283282 };
284283
285284 static const AVFilterPad adenorm_outputs[] = {
@@ -288,7 +287,6 @@ static const AVFilterPad adenorm_outputs[] = { · 2 unmodified lines
288287 .type = AVMEDIA_TYPE_AUDIO,
289288 .config_props = config_output,
290289 },
291− { NULL }
292290 };
293291
294292 #define OFFSET(x) offsetof(ADenormContext, x)
@@ -311,8 +309,8 @@ const AVFilter ff_af_adenorm = { · 16 unmodified lines
311309 .description = NULL_IF_CONFIG_SMALL("Remedy denormals by adding extremely low-level noise."),
312310 .query_formats = query_formats,
313311 .priv_size = sizeof(ADenormContext),
314− .inputs = adenorm_inputs,
315− .outputs = adenorm_outputs,
312+ FILTER_INPUTS(adenorm_inputs),
313+ FILTER_OUTPUTS(adenorm_outputs),
316314 .priv_class = &adenorm_class,
317315 .process_command = process_command,
318316 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
libavfilter/af_aderivative.c+4−6
@@ -163,7 +163,6 @@ static const AVFilterPad aderivative_inputs[] = { · 162 unmodified lines
163163 .filter_frame = filter_frame,
164164 .config_props = config_input,
165165 },
166− { NULL }
167166 };
168167
169168 static const AVFilterPad aderivative_outputs[] = {
@@ -171,7 +170,6 @@ static const AVFilterPad aderivative_outputs[] = { · 1 unmodified line
171170 .name = "default",
172171 .type = AVMEDIA_TYPE_AUDIO,
173172 },
174− { NULL }
175173 };
176174
177175 const AVFilter ff_af_aderivative = {
@@ -180,8 +178,8 @@ const AVFilter ff_af_aderivative = { · 2 unmodified lines
180178 .query_formats = query_formats,
181179 .priv_size = sizeof(ADerivativeContext),
182180 .uninit = uninit,
183− .inputs = aderivative_inputs,
184− .outputs = aderivative_outputs,
181+ FILTER_INPUTS(aderivative_inputs),
182+ FILTER_OUTPUTS(aderivative_outputs),
185183 };
186184
187185 const AVFilter ff_af_aintegral = {
@@ -190,6 +188,6 @@ const AVFilter ff_af_aintegral = { · 2 unmodified lines
190188 .query_formats = query_formats,
191189 .priv_size = sizeof(ADerivativeContext),
192190 .uninit = uninit,
193− .inputs = aderivative_inputs,
194− .outputs = aderivative_outputs,
191+ FILTER_INPUTS(aderivative_inputs),
192+ FILTER_OUTPUTS(aderivative_outputs),
195193 };
libavfilter/af_aecho.c+2−4
@@ -351,7 +351,6 @@ static const AVFilterPad aecho_inputs[] = { · 350 unmodified lines
351351 .name = "default",
352352 .type = AVMEDIA_TYPE_AUDIO,
353353 },
354− { NULL }
355354 };
356355
357356 static const AVFilterPad aecho_outputs[] = {
@@ -360,7 +359,6 @@ static const AVFilterPad aecho_outputs[] = { · 2 unmodified lines
360359 .config_props = config_output,
361360 .type = AVMEDIA_TYPE_AUDIO,
362361 },
363− { NULL }
364362 };
365363
366364 const AVFilter ff_af_aecho = {
@@ -372,6 +370,6 @@ const AVFilter ff_af_aecho = { · 5 unmodified lines
372370 .init = init,
373371 .activate = activate,
374372 .uninit = uninit,
375− .inputs = aecho_inputs,
376− .outputs = aecho_outputs,
373+ FILTER_INPUTS(aecho_inputs),
374+ FILTER_OUTPUTS(aecho_outputs),
377375 };
libavfilter/af_aemphasis.c+2−4
@@ -376,7 +376,6 @@ static const AVFilterPad avfilter_af_aemphasis_inputs[] = { · 375 unmodified lines
376376 .config_props = config_input,
377377 .filter_frame = filter_frame,
378378 },
379− { NULL }
380379 };
381380
382381 static const AVFilterPad avfilter_af_aemphasis_outputs[] = {
@@ -384,7 +383,6 @@ static const AVFilterPad avfilter_af_aemphasis_outputs[] = { · 1 unmodified line
384383 .name = "default",
385384 .type = AVMEDIA_TYPE_AUDIO,
386385 },
387− { NULL }
388386 };
389387
390388 const AVFilter ff_af_aemphasis = {
@@ -394,8 +392,8 @@ const AVFilter ff_af_aemphasis = { · 3 unmodified lines
394392 .priv_class = &aemphasis_class,
395393 .uninit = uninit,
396394 .query_formats = query_formats,
397− .inputs = avfilter_af_aemphasis_inputs,
398− .outputs = avfilter_af_aemphasis_outputs,
395+ FILTER_INPUTS(avfilter_af_aemphasis_inputs),
396+ FILTER_OUTPUTS(avfilter_af_aemphasis_outputs),
399397 .process_command = process_command,
400398 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
401399 AVFILTER_FLAG_SLICE_THREADS,
libavfilter/af_aexciter.c+2−4
@@ -279,7 +279,6 @@ static const AVFilterPad avfilter_af_aexciter_inputs[] = { · 278 unmodified lines
279279 .config_props = config_input,
280280 .filter_frame = filter_frame,
281281 },
282− { NULL }
283282 };
284283
285284 static const AVFilterPad avfilter_af_aexciter_outputs[] = {
@@ -287,7 +286,6 @@ static const AVFilterPad avfilter_af_aexciter_outputs[] = { · 1 unmodified line
287286 .name = "default",
288287 .type = AVMEDIA_TYPE_AUDIO,
289288 },
290− { NULL }
291289 };
292290
293291 const AVFilter ff_af_aexciter = {
@@ -297,8 +295,8 @@ const AVFilter ff_af_aexciter = { · 3 unmodified lines
297295 .priv_class = &aexciter_class,
298296 .uninit = uninit,
299297 .query_formats = query_formats,
300− .inputs = avfilter_af_aexciter_inputs,
301− .outputs = avfilter_af_aexciter_outputs,
298+ FILTER_INPUTS(avfilter_af_aexciter_inputs),
299+ FILTER_OUTPUTS(avfilter_af_aexciter_outputs),
302300 .process_command = process_command,
303301 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
304302 };
libavfilter/af_afade.c+4−8
@@ -340,7 +340,6 @@ static const AVFilterPad avfilter_af_afade_inputs[] = { · 339 unmodified lines
340340 .type = AVMEDIA_TYPE_AUDIO,
341341 .filter_frame = filter_frame,
342342 },
343− { NULL }
344343 };
345344
346345 static const AVFilterPad avfilter_af_afade_outputs[] = {
@@ -349,7 +348,6 @@ static const AVFilterPad avfilter_af_afade_outputs[] = { · 2 unmodified lines
349348 .type = AVMEDIA_TYPE_AUDIO,
350349 .config_props = config_output,
351350 },
352− { NULL }
353351 };
354352
355353 const AVFilter ff_af_afade = {
@@ -358,8 +356,8 @@ const AVFilter ff_af_afade = { · 2 unmodified lines
358356 .query_formats = query_formats,
359357 .priv_size = sizeof(AudioFadeContext),
360358 .init = init,
361− .inputs = avfilter_af_afade_inputs,
362− .outputs = avfilter_af_afade_outputs,
359+ FILTER_INPUTS(avfilter_af_afade_inputs),
360+ FILTER_OUTPUTS(avfilter_af_afade_outputs),
363361 .priv_class = &afade_class,
364362 .process_command = process_command,
365363 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
@@ -628,7 +626,6 @@ static const AVFilterPad avfilter_af_acrossfade_inputs[] = { · 262 unmodified lines
628626 .name = "crossfade1",
629627 .type = AVMEDIA_TYPE_AUDIO,
630628 },
631− { NULL }
632629 };
633630
634631 static const AVFilterPad avfilter_af_acrossfade_outputs[] = {
@@ -637,7 +634,6 @@ static const AVFilterPad avfilter_af_acrossfade_outputs[] = { · 2 unmodified lines
637634 .type = AVMEDIA_TYPE_AUDIO,
638635 .config_props = acrossfade_config_output,
639636 },
640− { NULL }
641637 };
642638
643639 const AVFilter ff_af_acrossfade = {
@@ -647,8 +643,8 @@ const AVFilter ff_af_acrossfade = { · 3 unmodified lines
647643 .priv_size = sizeof(AudioFadeContext),
648644 .activate = activate,
649645 .priv_class = &acrossfade_class,
650− .inputs = avfilter_af_acrossfade_inputs,
651− .outputs = avfilter_af_acrossfade_outputs,
646+ FILTER_INPUTS(avfilter_af_acrossfade_inputs),
647+ FILTER_OUTPUTS(avfilter_af_acrossfade_outputs),
652648 };
653649
654650 #endif /* CONFIG_ACROSSFADE_FILTER */
libavfilter/af_afftdn.c+2−4
@@ -1400,7 +1400,6 @@ static const AVFilterPad inputs[] = { · 1399 unmodified lines
14001400 .type = AVMEDIA_TYPE_AUDIO,
14011401 .config_props = config_input,
14021402 },
1403− { NULL }
14041403 };
14051404
14061405 static const AVFilterPad outputs[] = {
@@ -1408,7 +1407,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
14081407 .name = "default",
14091408 .type = AVMEDIA_TYPE_AUDIO,
14101409 },
1411− { NULL }
14121410 };
14131411
14141412 const AVFilter ff_af_afftdn = {
@@ -1419,8 +1417,8 @@ const AVFilter ff_af_afftdn = { · 4 unmodified lines
14191417 .priv_class = &afftdn_class,
14201418 .activate = activate,
14211419 .uninit = uninit,
1422− .inputs = inputs,
1423− .outputs = outputs,
1420+ FILTER_INPUTS(inputs),
1421+ FILTER_OUTPUTS(outputs),
14241422 .process_command = process_command,
14251423 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
14261424 AVFILTER_FLAG_SLICE_THREADS,
libavfilter/af_afftfilt.c+2−4
@@ -466,7 +466,6 @@ static const AVFilterPad inputs[] = { · 465 unmodified lines
466466 .type = AVMEDIA_TYPE_AUDIO,
467467 .config_props = config_input,
468468 },
469− { NULL }
470469 };
471470
472471 static const AVFilterPad outputs[] = {
@@ -474,7 +473,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
474473 .name = "default",
475474 .type = AVMEDIA_TYPE_AUDIO,
476475 },
477− { NULL }
478476 };
479477
480478 const AVFilter ff_af_afftfilt = {
@@ -482,8 +480,8 @@ const AVFilter ff_af_afftfilt = { · 1 unmodified line
482480 .description = NULL_IF_CONFIG_SMALL("Apply arbitrary expressions to samples in frequency domain."),
483481 .priv_size = sizeof(AFFTFiltContext),
484482 .priv_class = &afftfilt_class,
485− .inputs = inputs,
486− .outputs = outputs,
483+ FILTER_INPUTS(inputs),
484+ FILTER_OUTPUTS(outputs),
487485 .activate = activate,
488486 .query_formats = query_formats,
489487 .uninit = uninit,
libavfilter/af_aformat.c+2−4
@@ -146,7 +146,6 @@ static const AVFilterPad avfilter_af_aformat_inputs[] = { · 145 unmodified lines
146146 .name = "default",
147147 .type = AVMEDIA_TYPE_AUDIO,
148148 },
149− { NULL }
150149 };
151150
152151 static const AVFilterPad avfilter_af_aformat_outputs[] = {
@@ -154,7 +153,6 @@ static const AVFilterPad avfilter_af_aformat_outputs[] = { · 1 unmodified line
154153 .name = "default",
155154 .type = AVMEDIA_TYPE_AUDIO
156155 },
157− { NULL }
158156 };
159157
160158 const AVFilter ff_af_aformat = {
@@ -165,6 +163,6 @@ const AVFilter ff_af_aformat = { · 4 unmodified lines
165163 .query_formats = query_formats,
166164 .priv_size = sizeof(AFormatContext),
167165 .priv_class = &aformat_class,
168− .inputs = avfilter_af_aformat_inputs,
169− .outputs = avfilter_af_aformat_outputs,
166+ FILTER_INPUTS(avfilter_af_aformat_inputs),
167+ FILTER_OUTPUTS(avfilter_af_aformat_outputs),
170168 };
libavfilter/af_afreqshift.c+4−6
@@ -367,7 +367,6 @@ static const AVFilterPad inputs[] = { · 366 unmodified lines
367367 .filter_frame = filter_frame,
368368 .config_props = config_input,
369369 },
370− { NULL }
371370 };
372371
373372 static const AVFilterPad outputs[] = {
@@ -375,7 +374,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
375374 .name = "default",
376375 .type = AVMEDIA_TYPE_AUDIO,
377376 },
378− { NULL }
379377 };
380378
381379 const AVFilter ff_af_afreqshift = {
@@ -385,8 +383,8 @@ const AVFilter ff_af_afreqshift = { · 3 unmodified lines
385383 .priv_size = sizeof(AFreqShift),
386384 .priv_class = &afreqshift_class,
387385 .uninit = uninit,
388− .inputs = inputs,
389− .outputs = outputs,
386+ FILTER_INPUTS(inputs),
387+ FILTER_OUTPUTS(outputs),
390388 .process_command = ff_filter_process_command,
391389 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
392390 AVFILTER_FLAG_SLICE_THREADS,
@@ -407,8 +405,8 @@ const AVFilter ff_af_aphaseshift = { · 14 unmodified lines
407405 .priv_size = sizeof(AFreqShift),
408406 .priv_class = &aphaseshift_class,
409407 .uninit = uninit,
410− .inputs = inputs,
411− .outputs = outputs,
408+ FILTER_INPUTS(inputs),
409+ FILTER_OUTPUTS(outputs),
412410 .process_command = ff_filter_process_command,
413411 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
414412 AVFILTER_FLAG_SLICE_THREADS,
libavfilter/af_afwtdn.c+2−4
@@ -1311,7 +1311,6 @@ static const AVFilterPad inputs[] = { · 1310 unmodified lines
13111311 .name = "default",
13121312 .type = AVMEDIA_TYPE_AUDIO,
13131313 },
1314− { NULL }
13151314 };
13161315
13171316 static const AVFilterPad outputs[] = {
@@ -1320,7 +1319,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
13201319 .type = AVMEDIA_TYPE_AUDIO,
13211320 .config_props = config_output,
13221321 },
1323− { NULL }
13241322 };
13251323
13261324 const AVFilter ff_af_afwtdn = {
@@ -1331,8 +1329,8 @@ const AVFilter ff_af_afwtdn = { · 4 unmodified lines
13311329 .priv_class = &afwtdn_class,
13321330 .activate = activate,
13331331 .uninit = uninit,
1334− .inputs = inputs,
1335− .outputs = outputs,
1332+ FILTER_INPUTS(inputs),
1333+ FILTER_OUTPUTS(outputs),
13361334 .process_command = process_command,
13371335 .flags = AVFILTER_FLAG_SLICE_THREADS,
13381336 };
libavfilter/af_agate.c+4−8
@@ -240,7 +240,6 @@ static const AVFilterPad inputs[] = { · 239 unmodified lines
240240 .filter_frame = filter_frame,
241241 .config_props = agate_config_input,
242242 },
243− { NULL }
244243 };
245244
246245 static const AVFilterPad outputs[] = {
@@ -248,7 +247,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
248247 .name = "default",
249248 .type = AVMEDIA_TYPE_AUDIO,
250249 },
251− { NULL }
252250 };
253251
254252 const AVFilter ff_af_agate = {
@@ -257,8 +255,8 @@ const AVFilter ff_af_agate = { · 2 unmodified lines
257255 .query_formats = query_formats,
258256 .priv_size = sizeof(AudioGateContext),
259257 .priv_class = &agate_class,
260− .inputs = inputs,
261− .outputs = outputs,
258+ FILTER_INPUTS(inputs),
259+ FILTER_OUTPUTS(outputs),
262260 .process_command = ff_filter_process_command,
263261 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
264262 };
@@ -413,7 +411,6 @@ static const AVFilterPad sidechaingate_inputs[] = { · 148 unmodified lines
413411 .name = "sidechain",
414412 .type = AVMEDIA_TYPE_AUDIO,
415413 },
416− { NULL }
417414 };
418415
419416 static const AVFilterPad sidechaingate_outputs[] = {
@@ -422,7 +419,6 @@ static const AVFilterPad sidechaingate_outputs[] = { · 2 unmodified lines
422419 .type = AVMEDIA_TYPE_AUDIO,
423420 .config_props = scconfig_output,
424421 },
425− { NULL }
426422 };
427423
428424 const AVFilter ff_af_sidechaingate = {
@@ -433,8 +429,8 @@ const AVFilter ff_af_sidechaingate = { · 4 unmodified lines
433429 .query_formats = scquery_formats,
434430 .activate = activate,
435431 .uninit = uninit,
436− .inputs = sidechaingate_inputs,
437− .outputs = sidechaingate_outputs,
432+ FILTER_INPUTS(sidechaingate_inputs),
433+ FILTER_OUTPUTS(sidechaingate_outputs),
438434 .process_command = ff_filter_process_command,
439435 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
440436 };
libavfilter/af_aiir.c+1−2
@@ -1518,7 +1518,6 @@ static const AVFilterPad inputs[] = { · 1517 unmodified lines
15181518 .type = AVMEDIA_TYPE_AUDIO,
15191519 .filter_frame = filter_frame,
15201520 },
1521− { NULL }
15221521 };
15231522
15241523 #define OFFSET(x) offsetof(AudioIIRContext, x)
@@ -1574,7 +1573,7 @@ const AVFilter ff_af_aiir = { · 49 unmodified lines
15741573 .init = init,
15751574 .uninit = uninit,
15761575 .query_formats = query_formats,
1577− .inputs = inputs,
1576+ FILTER_INPUTS(inputs),
15781577 .flags = AVFILTER_FLAG_DYNAMIC_OUTPUTS |
15791578 AVFILTER_FLAG_SLICE_THREADS,
15801579 };
libavfilter/af_alimiter.c+2−4
@@ -337,7 +337,6 @@ static const AVFilterPad alimiter_inputs[] = { · 336 unmodified lines
337337 .filter_frame = filter_frame,
338338 .config_props = config_input,
339339 },
340− { NULL }
341340 };
342341
343342 static const AVFilterPad alimiter_outputs[] = {
@@ -345,7 +344,6 @@ static const AVFilterPad alimiter_outputs[] = { · 1 unmodified line
345344 .name = "default",
346345 .type = AVMEDIA_TYPE_AUDIO,
347346 },
348− { NULL }
349347 };
350348
351349 const AVFilter ff_af_alimiter = {
@@ -356,6 +354,6 @@ const AVFilter ff_af_alimiter = { · 4 unmodified lines
356354 .init = init,
357355 .uninit = uninit,
358356 .query_formats = query_formats,
359− .inputs = alimiter_inputs,
360− .outputs = alimiter_outputs,
357+ FILTER_INPUTS(alimiter_inputs),
358+ FILTER_OUTPUTS(alimiter_outputs),
361359 };
libavfilter/af_amerge.c+1−2
@@ -342,7 +342,6 @@ static const AVFilterPad amerge_outputs[] = { · 341 unmodified lines
342342 .type = AVMEDIA_TYPE_AUDIO,
343343 .config_props = config_output,
344344 },
345− { NULL }
346345 };
347346
348347 const AVFilter ff_af_amerge = {
@@ -355,7 +354,7 @@ const AVFilter ff_af_amerge = { · 6 unmodified lines
355354 .query_formats = query_formats,
356355 .activate = activate,
357356 .inputs = NULL,
358− .outputs = amerge_outputs,
357+ FILTER_OUTPUTS(amerge_outputs),
359358 .priv_class = &amerge_class,
360359 .flags = AVFILTER_FLAG_DYNAMIC_INPUTS,
361360 };
libavfilter/af_amix.c+1−2
@@ -634,7 +634,6 @@ static const AVFilterPad avfilter_af_amix_outputs[] = { · 633 unmodified lines
634634 .type = AVMEDIA_TYPE_AUDIO,
635635 .config_props = config_output,
636636 },
637− { NULL }
638637 };
639638
640639 const AVFilter ff_af_amix = {
@@ -647,7 +646,7 @@ const AVFilter ff_af_amix = { · 6 unmodified lines
647646 .activate = activate,
648647 .query_formats = query_formats,
649648 .inputs = NULL,
650− .outputs = avfilter_af_amix_outputs,
649+ FILTER_OUTPUTS(avfilter_af_amix_outputs),
651650 .process_command = process_command,
652651 .flags = AVFILTER_FLAG_DYNAMIC_INPUTS,
653652 };
libavfilter/af_amultiply.c+2−4
@@ -179,7 +179,6 @@ static const AVFilterPad inputs[] = { · 178 unmodified lines
179179 .name = "multiply1",
180180 .type = AVMEDIA_TYPE_AUDIO,
181181 },
182− { NULL }
183182 };
184183
185184 static const AVFilterPad outputs[] = {
@@ -188,7 +187,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
188187 .type = AVMEDIA_TYPE_AUDIO,
189188 .config_props = config_output,
190189 },
191− { NULL }
192190 };
193191
194192 const AVFilter ff_af_amultiply = {
@@ -199,6 +197,6 @@ const AVFilter ff_af_amultiply = { · 4 unmodified lines
199197 .uninit = uninit,
200198 .activate = activate,
201199 .query_formats = query_formats,
202− .inputs = inputs,
203− .outputs = outputs,
200+ FILTER_INPUTS(inputs),
201+ FILTER_OUTPUTS(outputs),
204202 };
libavfilter/af_anequalizer.c+1−2
@@ -761,7 +761,6 @@ static const AVFilterPad inputs[] = { · 760 unmodified lines
761761 .config_props = config_input,
762762 .filter_frame = filter_frame,
763763 },
764− { NULL }
765764 };
766765
767766 const AVFilter ff_af_anequalizer = {
@@ -772,7 +771,7 @@ const AVFilter ff_af_anequalizer = { · 4 unmodified lines
772771 .init = init,
773772 .uninit = uninit,
774773 .query_formats = query_formats,
775− .inputs = inputs,
774+ FILTER_INPUTS(inputs),
776775 .outputs = NULL,
777776 .process_command = process_command,
778777 .flags = AVFILTER_FLAG_DYNAMIC_OUTPUTS |
libavfilter/af_anlmdn.c+2−4
@@ -388,7 +388,6 @@ static const AVFilterPad inputs[] = { · 387 unmodified lines
388388 .type = AVMEDIA_TYPE_AUDIO,
389389 .filter_frame = filter_frame,
390390 },
391− { NULL }
392391 };
393392
394393 static const AVFilterPad outputs[] = {
@@ -398,7 +397,6 @@ static const AVFilterPad outputs[] = { · 3 unmodified lines
398397 .config_props = config_output,
399398 .request_frame = request_frame,
400399 },
401− { NULL }
402400 };
403401
404402 const AVFilter ff_af_anlmdn = {
@@ -408,8 +406,8 @@ const AVFilter ff_af_anlmdn = { · 3 unmodified lines
408406 .priv_size = sizeof(AudioNLMeansContext),
409407 .priv_class = &anlmdn_class,
410408 .uninit = uninit,
411− .inputs = inputs,
412− .outputs = outputs,
409+ FILTER_INPUTS(inputs),
410+ FILTER_OUTPUTS(outputs),
413411 .process_command = process_command,
414412 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL |
415413 AVFILTER_FLAG_SLICE_THREADS,
libavfilter/af_anlms.c+2−4
@@ -288,7 +288,6 @@ static const AVFilterPad inputs[] = { · 287 unmodified lines
288288 .name = "desired",
289289 .type = AVMEDIA_TYPE_AUDIO,
290290 },
291− { NULL }
292291 };
293292
294293 static const AVFilterPad outputs[] = {
@@ -297,7 +296,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
297296 .type = AVMEDIA_TYPE_AUDIO,
298297 .config_props = config_output,
299298 },
300− { NULL }
301299 };
302300
303301 const AVFilter ff_af_anlms = {
@@ -309,8 +307,8 @@ const AVFilter ff_af_anlms = { · 5 unmodified lines
309307 .uninit = uninit,
310308 .activate = activate,
311309 .query_formats = query_formats,
312− .inputs = inputs,
313− .outputs = outputs,
310+ FILTER_INPUTS(inputs),
311+ FILTER_OUTPUTS(outputs),
314312 .flags = AVFILTER_FLAG_SLICE_THREADS,
315313 .process_command = ff_filter_process_command,
316314 };
libavfilter/af_anull.c+2−4
@@ -32,7 +32,6 @@ static const AVFilterPad avfilter_af_anull_inputs[] = { · 31 unmodified lines
3232 .name = "default",
3333 .type = AVMEDIA_TYPE_AUDIO,
3434 },
35− { NULL }
3635 };
3736
3837 static const AVFilterPad avfilter_af_anull_outputs[] = {
@@ -40,12 +39,11 @@ static const AVFilterPad avfilter_af_anull_outputs[] = { · 1 unmodified line
4039 .name = "default",
4140 .type = AVMEDIA_TYPE_AUDIO,
4241 },
43− { NULL }
4442 };
4543
4644 const AVFilter ff_af_anull = {
4745 .name = "anull",
4846 .description = NULL_IF_CONFIG_SMALL("Pass the source unchanged to the output."),
49− .inputs = avfilter_af_anull_inputs,
50− .outputs = avfilter_af_anull_outputs,
47+ FILTER_INPUTS(avfilter_af_anull_inputs),
48+ FILTER_OUTPUTS(avfilter_af_anull_outputs),
5149 };
libavfilter/af_apad.c+2−4
@@ -155,7 +155,6 @@ static const AVFilterPad apad_inputs[] = { · 154 unmodified lines
155155 .type = AVMEDIA_TYPE_AUDIO,
156156 .filter_frame = filter_frame,
157157 },
158− { NULL }
159158 };
160159
161160 static const AVFilterPad apad_outputs[] = {
@@ -165,7 +164,6 @@ static const AVFilterPad apad_outputs[] = { · 3 unmodified lines
165164 .config_props = config_output,
166165 .type = AVMEDIA_TYPE_AUDIO,
167166 },
168− { NULL }
169167 };
170168
171169 const AVFilter ff_af_apad = {
@@ -173,8 +171,8 @@ const AVFilter ff_af_apad = { · 1 unmodified line
173171 .description = NULL_IF_CONFIG_SMALL("Pad audio with silence."),
174172 .init = init,
175173 .priv_size = sizeof(APadContext),
176− .inputs = apad_inputs,
177− .outputs = apad_outputs,
174+ FILTER_INPUTS(apad_inputs),
175+ FILTER_OUTPUTS(apad_outputs),
178176 .priv_class = &apad_class,
179177 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
180178 };
libavfilter/af_aphaser.c+2−4
@@ -265,7 +265,6 @@ static const AVFilterPad aphaser_inputs[] = { · 264 unmodified lines
265265 .type = AVMEDIA_TYPE_AUDIO,
266266 .filter_frame = filter_frame,
267267 },
268− { NULL }
269268 };
270269
271270 static const AVFilterPad aphaser_outputs[] = {
@@ -274,7 +273,6 @@ static const AVFilterPad aphaser_outputs[] = { · 2 unmodified lines
274273 .type = AVMEDIA_TYPE_AUDIO,
275274 .config_props = config_output,
276275 },
277− { NULL }
278276 };
279277
280278 const AVFilter ff_af_aphaser = {
@@ -284,7 +282,7 @@ const AVFilter ff_af_aphaser = { · 3 unmodified lines
284282 .priv_size = sizeof(AudioPhaserContext),
285283 .init = init,
286284 .uninit = uninit,
287− .inputs = aphaser_inputs,
288− .outputs = aphaser_outputs,
285+ FILTER_INPUTS(aphaser_inputs),
286+ FILTER_OUTPUTS(aphaser_outputs),
289287 .priv_class = &aphaser_class,
290288 };
libavfilter/af_apulsator.c+2−4
@@ -235,7 +235,6 @@ static const AVFilterPad inputs[] = { · 234 unmodified lines
235235 .config_props = config_input,
236236 .filter_frame = filter_frame,
237237 },
238− { NULL }
239238 };
240239
241240 static const AVFilterPad outputs[] = {
@@ -243,7 +242,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
243242 .name = "default",
244243 .type = AVMEDIA_TYPE_AUDIO,
245244 },
246− { NULL }
247245 };
248246
249247 const AVFilter ff_af_apulsator = {
@@ -252,6 +250,6 @@ const AVFilter ff_af_apulsator = { · 2 unmodified lines
252250 .priv_size = sizeof(AudioPulsatorContext),
253251 .priv_class = &apulsator_class,
254252 .query_formats = query_formats,
255− .inputs = inputs,
256− .outputs = outputs,
253+ FILTER_INPUTS(inputs),
254+ FILTER_OUTPUTS(outputs),
257255 };
libavfilter/af_aresample.c+2−4
@@ -329,7 +329,6 @@ static const AVFilterPad aresample_inputs[] = { · 328 unmodified lines
329329 .type = AVMEDIA_TYPE_AUDIO,
330330 .filter_frame = filter_frame,
331331 },
332− { NULL }
333332 };
334333
335334 static const AVFilterPad aresample_outputs[] = {
@@ -339,7 +338,6 @@ static const AVFilterPad aresample_outputs[] = { · 3 unmodified lines
339338 .request_frame = request_frame,
340339 .type = AVMEDIA_TYPE_AUDIO,
341340 },
342− { NULL }
343341 };
344342
345343 const AVFilter ff_af_aresample = {
@@ -350,6 +348,6 @@ const AVFilter ff_af_aresample = { · 4 unmodified lines
350348 .query_formats = query_formats,
351349 .priv_size = sizeof(AResampleContext),
352350 .priv_class = &aresample_class,
353− .inputs = aresample_inputs,
354− .outputs = aresample_outputs,
351+ FILTER_INPUTS(aresample_inputs),
352+ FILTER_OUTPUTS(aresample_outputs),
355353 };
libavfilter/af_arnndn.c+2−4
@@ -1584,7 +1584,6 @@ static const AVFilterPad inputs[] = { · 1583 unmodified lines
15841584 .type = AVMEDIA_TYPE_AUDIO,
15851585 .config_props = config_input,
15861586 },
1587− { NULL }
15881587 };
15891588
15901589 static const AVFilterPad outputs[] = {
@@ -1592,7 +1591,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
15921591 .name = "default",
15931592 .type = AVMEDIA_TYPE_AUDIO,
15941593 },
1595− { NULL }
15961594 };
15971595
15981596 #define OFFSET(x) offsetof(AudioRNNContext, x)
@@ -1616,8 +1614,8 @@ const AVFilter ff_af_arnndn = { · 17 unmodified lines
16161614 .activate = activate,
16171615 .init = init,
16181616 .uninit = uninit,
1619− .inputs = inputs,
1620− .outputs = outputs,
1617+ FILTER_INPUTS(inputs),
1618+ FILTER_OUTPUTS(outputs),
16211619 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL |
16221620 AVFILTER_FLAG_SLICE_THREADS,
16231621 .process_command = process_command,
libavfilter/af_asetnsamples.c+2−4
@@ -106,7 +106,6 @@ static const AVFilterPad asetnsamples_inputs[] = { · 105 unmodified lines
106106 .name = "default",
107107 .type = AVMEDIA_TYPE_AUDIO,
108108 },
109− { NULL }
110109 };
111110
112111 static const AVFilterPad asetnsamples_outputs[] = {
@@ -114,7 +113,6 @@ static const AVFilterPad asetnsamples_outputs[] = { · 1 unmodified line
114113 .name = "default",
115114 .type = AVMEDIA_TYPE_AUDIO,
116115 },
117− { NULL }
118116 };
119117
120118 const AVFilter ff_af_asetnsamples = {
@@ -122,7 +120,7 @@ const AVFilter ff_af_asetnsamples = { · 1 unmodified line
122120 .description = NULL_IF_CONFIG_SMALL("Set the number of samples for each output audio frames."),
123121 .priv_size = sizeof(ASNSContext),
124122 .priv_class = &asetnsamples_class,
125− .inputs = asetnsamples_inputs,
126− .outputs = asetnsamples_outputs,
123+ FILTER_INPUTS(asetnsamples_inputs),
124+ FILTER_OUTPUTS(asetnsamples_outputs),
127125 .activate = activate,
128126 };
libavfilter/af_asetrate.c+2−4
@@ -94,7 +94,6 @@ static const AVFilterPad asetrate_inputs[] = { · 93 unmodified lines
9494 .type = AVMEDIA_TYPE_AUDIO,
9595 .filter_frame = filter_frame,
9696 },
97− { NULL }
9897 };
9998
10099 static const AVFilterPad asetrate_outputs[] = {
@@ -103,7 +102,6 @@ static const AVFilterPad asetrate_outputs[] = { · 2 unmodified lines
103102 .type = AVMEDIA_TYPE_AUDIO,
104103 .config_props = config_props,
105104 },
106− { NULL }
107105 };
108106
109107 const AVFilter ff_af_asetrate = {
@@ -112,7 +110,7 @@ const AVFilter ff_af_asetrate = { · 2 unmodified lines
112110 "altering the data."),
113111 .query_formats = query_formats,
114112 .priv_size = sizeof(ASetRateContext),
115− .inputs = asetrate_inputs,
116− .outputs = asetrate_outputs,
113+ FILTER_INPUTS(asetrate_inputs),
114+ FILTER_OUTPUTS(asetrate_outputs),
117115 .priv_class = &asetrate_class,
118116 };
libavfilter/af_ashowinfo.c+2−4
@@ -243,7 +243,6 @@ static const AVFilterPad inputs[] = { · 242 unmodified lines
243243 .type = AVMEDIA_TYPE_AUDIO,
244244 .filter_frame = filter_frame,
245245 },
246− { NULL }
247246 };
248247
249248 static const AVFilterPad outputs[] = {
@@ -251,7 +250,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
251250 .name = "default",
252251 .type = AVMEDIA_TYPE_AUDIO,
253252 },
254− { NULL }
255253 };
256254
257255 const AVFilter ff_af_ashowinfo = {
@@ -259,6 +257,6 @@ const AVFilter ff_af_ashowinfo = { · 1 unmodified line
259257 .description = NULL_IF_CONFIG_SMALL("Show textual information for each audio frame."),
260258 .priv_size = sizeof(AShowInfoContext),
261259 .uninit = uninit,
262− .inputs = inputs,
263− .outputs = outputs,
260+ FILTER_INPUTS(inputs),
261+ FILTER_OUTPUTS(outputs),
264262 };
libavfilter/af_asoftclip.c+2−4
@@ -451,7 +451,6 @@ static const AVFilterPad inputs[] = { · 450 unmodified lines
451451 .filter_frame = filter_frame,
452452 .config_props = config_input,
453453 },
454− { NULL }
455454 };
456455
457456 static const AVFilterPad outputs[] = {
@@ -459,7 +458,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
459458 .name = "default",
460459 .type = AVMEDIA_TYPE_AUDIO,
461460 },
462− { NULL }
463461 };
464462
465463 const AVFilter ff_af_asoftclip = {
@@ -468,8 +466,8 @@ const AVFilter ff_af_asoftclip = { · 2 unmodified lines
468466 .query_formats = query_formats,
469467 .priv_size = sizeof(ASoftClipContext),
470468 .priv_class = &asoftclip_class,
471− .inputs = inputs,
472− .outputs = outputs,
469+ FILTER_INPUTS(inputs),
470+ FILTER_OUTPUTS(outputs),
473471 .uninit = uninit,
474472 .process_command = ff_filter_process_command,
475473 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
libavfilter/af_asr.c+2−4
@@ -156,7 +156,6 @@ static const AVFilterPad asr_inputs[] = { · 155 unmodified lines
156156 .filter_frame = filter_frame,
157157 .config_props = config_input,
158158 },
159− { NULL }
160159 };
161160
162161 static const AVFilterPad asr_outputs[] = {
@@ -164,7 +163,6 @@ static const AVFilterPad asr_outputs[] = { · 1 unmodified line
164163 .name = "default",
165164 .type = AVMEDIA_TYPE_AUDIO,
166165 },
167− { NULL }
168166 };
169167
170168 const AVFilter ff_af_asr = {
@@ -175,6 +173,6 @@ const AVFilter ff_af_asr = { · 4 unmodified lines
175173 .init = asr_init,
176174 .uninit = asr_uninit,
177175 .query_formats = query_formats,
178− .inputs = asr_inputs,
179− .outputs = asr_outputs,
176+ FILTER_INPUTS(asr_inputs),
177+ FILTER_OUTPUTS(asr_outputs),
180178 };
libavfilter/af_astats.c+2−4
@@ -815,7 +815,6 @@ static const AVFilterPad astats_inputs[] = { · 814 unmodified lines
815815 .type = AVMEDIA_TYPE_AUDIO,
816816 .filter_frame = filter_frame,
817817 },
818− { NULL }
819818 };
820819
821820 static const AVFilterPad astats_outputs[] = {
@@ -824,7 +823,6 @@ static const AVFilterPad astats_outputs[] = { · 2 unmodified lines
824823 .type = AVMEDIA_TYPE_AUDIO,
825824 .config_props = config_output,
826825 },
827− { NULL }
828826 };
829827
830828 const AVFilter ff_af_astats = {
@@ -834,7 +832,7 @@ const AVFilter ff_af_astats = { · 3 unmodified lines
834832 .priv_size = sizeof(AudioStatsContext),
835833 .priv_class = &astats_class,
836834 .uninit = uninit,
837− .inputs = astats_inputs,
838− .outputs = astats_outputs,
835+ FILTER_INPUTS(astats_inputs),
836+ FILTER_OUTPUTS(astats_outputs),
839837 .flags = AVFILTER_FLAG_SLICE_THREADS,
840838 };
libavfilter/af_asubboost.c+2−4
@@ -221,7 +221,6 @@ static const AVFilterPad inputs[] = { · 220 unmodified lines
221221 .filter_frame = filter_frame,
222222 .config_props = config_input,
223223 },
224− { NULL }
225224 };
226225
227226 static const AVFilterPad outputs[] = {
@@ -229,7 +228,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
229228 .name = "default",
230229 .type = AVMEDIA_TYPE_AUDIO,
231230 },
232− { NULL }
233231 };
234232
235233 const AVFilter ff_af_asubboost = {
@@ -239,8 +237,8 @@ const AVFilter ff_af_asubboost = { · 3 unmodified lines
239237 .priv_size = sizeof(ASubBoostContext),
240238 .priv_class = &asubboost_class,
241239 .uninit = uninit,
242− .inputs = inputs,
243− .outputs = outputs,
240+ FILTER_INPUTS(inputs),
241+ FILTER_OUTPUTS(outputs),
244242 .process_command = process_command,
245243 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL |
246244 AVFILTER_FLAG_SLICE_THREADS,
libavfilter/af_asupercut.c+8−10
@@ -345,7 +345,6 @@ static const AVFilterPad inputs[] = { · 344 unmodified lines
345345 .filter_frame = filter_frame,
346346 .config_props = config_input,
347347 },
348− { NULL }
349348 };
350349
351350 static const AVFilterPad outputs[] = {
@@ -353,7 +352,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
353352 .name = "default",
354353 .type = AVMEDIA_TYPE_AUDIO,
355354 },
356− { NULL }
357355 };
358356
359357 const AVFilter ff_af_asupercut = {
@@ -363,8 +361,8 @@ const AVFilter ff_af_asupercut = { · 3 unmodified lines
363361 .priv_size = sizeof(ASuperCutContext),
364362 .priv_class = &asupercut_class,
365363 .uninit = uninit,
366− .inputs = inputs,
367− .outputs = outputs,
364+ FILTER_INPUTS(inputs),
365+ FILTER_OUTPUTS(outputs),
368366 .process_command = process_command,
369367 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
370368 AVFILTER_FLAG_SLICE_THREADS,
@@ -386,8 +384,8 @@ const AVFilter ff_af_asubcut = { · 15 unmodified lines
386384 .priv_size = sizeof(ASuperCutContext),
387385 .priv_class = &asubcut_class,
388386 .uninit = uninit,
389− .inputs = inputs,
390− .outputs = outputs,
387+ FILTER_INPUTS(inputs),
388+ FILTER_OUTPUTS(outputs),
391389 .process_command = process_command,
392390 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
393391 AVFILTER_FLAG_SLICE_THREADS,
@@ -411,8 +409,8 @@ const AVFilter ff_af_asuperpass = { · 17 unmodified lines
411409 .priv_size = sizeof(ASuperCutContext),
412410 .priv_class = &asuperpass_class,
413411 .uninit = uninit,
414− .inputs = inputs,
415− .outputs = outputs,
412+ FILTER_INPUTS(inputs),
413+ FILTER_OUTPUTS(outputs),
416414 .process_command = process_command,
417415 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
418416 AVFILTER_FLAG_SLICE_THREADS,
@@ -428,8 +426,8 @@ const AVFilter ff_af_asuperstop = { · 9 unmodified lines
428426 .priv_size = sizeof(ASuperCutContext),
429427 .priv_class = &asuperstop_class,
430428 .uninit = uninit,
431− .inputs = inputs,
432− .outputs = outputs,
429+ FILTER_INPUTS(inputs),
430+ FILTER_OUTPUTS(outputs),
433431 .process_command = process_command,
434432 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
435433 AVFILTER_FLAG_SLICE_THREADS,
libavfilter/af_atempo.c+2−4
@@ -1173,7 +1173,6 @@ static const AVFilterPad atempo_inputs[] = { · 1172 unmodified lines
11731173 .filter_frame = filter_frame,
11741174 .config_props = config_props,
11751175 },
1176− { NULL }
11771176 };
11781177
11791178 static const AVFilterPad atempo_outputs[] = {
@@ -1182,7 +1181,6 @@ static const AVFilterPad atempo_outputs[] = { · 2 unmodified lines
11821181 .request_frame = request_frame,
11831182 .type = AVMEDIA_TYPE_AUDIO,
11841183 },
1185− { NULL }
11861184 };
11871185
11881186 const AVFilter ff_af_atempo = {
@@ -1194,6 +1192,6 @@ const AVFilter ff_af_atempo = { · 5 unmodified lines
11941192 .process_command = process_command,
11951193 .priv_size = sizeof(ATempoContext),
11961194 .priv_class = &atempo_class,
1197− .inputs = atempo_inputs,
1198− .outputs = atempo_outputs,
1195+ FILTER_INPUTS(atempo_inputs),
1196+ FILTER_OUTPUTS(atempo_outputs),
11991197 };
libavfilter/af_axcorrelate.c+2−4
@@ -326,7 +326,6 @@ static const AVFilterPad inputs[] = { · 325 unmodified lines
326326 .name = "axcorrelate1",
327327 .type = AVMEDIA_TYPE_AUDIO,
328328 },
329− { NULL }
330329 };
331330
332331 static const AVFilterPad outputs[] = {
@@ -335,7 +334,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
335334 .type = AVMEDIA_TYPE_AUDIO,
336335 .config_props = config_output,
337336 },
338− { NULL }
339337 };
340338
341339 #define AF AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
@@ -359,6 +357,6 @@ const AVFilter ff_af_axcorrelate = { · 17 unmodified lines
359357 .query_formats = query_formats,
360358 .activate = activate,
361359 .uninit = uninit,
362− .inputs = inputs,
363− .outputs = outputs,
360+ FILTER_INPUTS(inputs),
361+ FILTER_OUTPUTS(outputs),
364362 };
libavfilter/af_biquads.c+2−4
@@ -839,7 +839,6 @@ static const AVFilterPad inputs[] = { · 838 unmodified lines
839839 .type = AVMEDIA_TYPE_AUDIO,
840840 .filter_frame = filter_frame,
841841 },
842− { NULL }
843842 };
844843
845844 static const AVFilterPad outputs[] = {
@@ -848,7 +847,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
848847 .type = AVMEDIA_TYPE_AUDIO,
849848 .config_props = config_output,
850849 },
851− { NULL }
852850 };
853851
854852 #define OFFSET(x) offsetof(BiquadsContext, x)
@@ -871,8 +869,8 @@ const AVFilter ff_af_##name_ = { \ · 16 unmodified lines
871869 .init = name_##_init, \
872870 .uninit = uninit, \
873871 .query_formats = query_formats, \
874− .inputs = inputs, \
875− .outputs = outputs, \
872+ FILTER_INPUTS(inputs), \
873+ FILTER_OUTPUTS(outputs), \
876874 .priv_class = &name_##_class, \
877875 .process_command = process_command, \
878876 .flags = AVFILTER_FLAG_SLICE_THREADS | AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL, \
libavfilter/af_bs2b.c+2−4
@@ -192,7 +192,6 @@ static const AVFilterPad bs2b_inputs[] = { · 191 unmodified lines
192192 .type = AVMEDIA_TYPE_AUDIO,
193193 .filter_frame = filter_frame,
194194 },
195− { NULL }
196195 };
197196
198197 static const AVFilterPad bs2b_outputs[] = {
@@ -201,7 +200,6 @@ static const AVFilterPad bs2b_outputs[] = { · 2 unmodified lines
201200 .type = AVMEDIA_TYPE_AUDIO,
202201 .config_props = config_output,
203202 },
204− { NULL }
205203 };
206204
207205 const AVFilter ff_af_bs2b = {
@@ -212,6 +210,6 @@ const AVFilter ff_af_bs2b = { · 4 unmodified lines
212210 .priv_class = &bs2b_class,
213211 .init = init,
214212 .uninit = uninit,
215− .inputs = bs2b_inputs,
216− .outputs = bs2b_outputs,
213+ FILTER_INPUTS(bs2b_inputs),
214+ FILTER_OUTPUTS(bs2b_outputs),
217215 };
libavfilter/af_channelmap.c+2−4
@@ -387,7 +387,6 @@ static const AVFilterPad avfilter_af_channelmap_inputs[] = { · 386 unmodified lines
387387 .filter_frame = channelmap_filter_frame,
388388 .config_props = channelmap_config_input,
389389 },
390− { NULL }
391390 };
392391
393392 static const AVFilterPad avfilter_af_channelmap_outputs[] = {
@@ -395,7 +394,6 @@ static const AVFilterPad avfilter_af_channelmap_outputs[] = { · 1 unmodified line
395394 .name = "default",
396395 .type = AVMEDIA_TYPE_AUDIO
397396 },
398− { NULL }
399397 };
400398
401399 const AVFilter ff_af_channelmap = {
@@ -405,6 +403,6 @@ const AVFilter ff_af_channelmap = { · 3 unmodified lines
405403 .query_formats = channelmap_query_formats,
406404 .priv_size = sizeof(ChannelMapContext),
407405 .priv_class = &channelmap_class,
408− .inputs = avfilter_af_channelmap_inputs,
409− .outputs = avfilter_af_channelmap_outputs,
406+ FILTER_INPUTS(avfilter_af_channelmap_inputs),
407+ FILTER_OUTPUTS(avfilter_af_channelmap_outputs),
410408 };
libavfilter/af_channelsplit.c+1−2
@@ -164,7 +164,6 @@ static const AVFilterPad avfilter_af_channelsplit_inputs[] = { · 163 unmodified lines
164164 .type = AVMEDIA_TYPE_AUDIO,
165165 .filter_frame = filter_frame,
166166 },
167− { NULL }
168167 };
169168
170169 const AVFilter ff_af_channelsplit = {
@@ -174,7 +173,7 @@ const AVFilter ff_af_channelsplit = { · 3 unmodified lines
174173 .priv_class = &channelsplit_class,
175174 .init = init,
176175 .query_formats = query_formats,
177− .inputs = avfilter_af_channelsplit_inputs,
176+ FILTER_INPUTS(avfilter_af_channelsplit_inputs),
178177 .outputs = NULL,
179178 .flags = AVFILTER_FLAG_DYNAMIC_OUTPUTS,
180179 };
libavfilter/af_chorus.c+2−4
@@ -343,7 +343,6 @@ static const AVFilterPad chorus_inputs[] = { · 342 unmodified lines
343343 .type = AVMEDIA_TYPE_AUDIO,
344344 .filter_frame = filter_frame,
345345 },
346− { NULL }
347346 };
348347
349348 static const AVFilterPad chorus_outputs[] = {
@@ -353,7 +352,6 @@ static const AVFilterPad chorus_outputs[] = { · 3 unmodified lines
353352 .request_frame = request_frame,
354353 .config_props = config_output,
355354 },
356− { NULL }
357355 };
358356
359357 const AVFilter ff_af_chorus = {
@@ -364,6 +362,6 @@ const AVFilter ff_af_chorus = { · 4 unmodified lines
364362 .priv_class = &chorus_class,
365363 .init = init,
366364 .uninit = uninit,
367− .inputs = chorus_inputs,
368− .outputs = chorus_outputs,
365+ FILTER_INPUTS(chorus_inputs),
366+ FILTER_OUTPUTS(chorus_outputs),
369367 };
libavfilter/af_compand.c+2−4
@@ -558,7 +558,6 @@ static const AVFilterPad compand_inputs[] = { · 557 unmodified lines
558558 .type = AVMEDIA_TYPE_AUDIO,
559559 .filter_frame = filter_frame,
560560 },
561− { NULL }
562561 };
563562
564563 static const AVFilterPad compand_outputs[] = {
@@ -568,7 +567,6 @@ static const AVFilterPad compand_outputs[] = { · 3 unmodified lines
568567 .config_props = config_output,
569568 .type = AVMEDIA_TYPE_AUDIO,
570569 },
571− { NULL }
572570 };
573571
574572
@@ -581,6 +579,6 @@ const AVFilter ff_af_compand = { · 6 unmodified lines
581579 .priv_class = &compand_class,
582580 .init = init,
583581 .uninit = uninit,
584− .inputs = compand_inputs,
585− .outputs = compand_outputs,
582+ FILTER_INPUTS(compand_inputs),
583+ FILTER_OUTPUTS(compand_outputs),
586584 };
libavfilter/af_compensationdelay.c+2−4
@@ -162,7 +162,6 @@ static const AVFilterPad compensationdelay_inputs[] = { · 161 unmodified lines
162162 .config_props = config_input,
163163 .filter_frame = filter_frame,
164164 },
165− { NULL }
166165 };
167166
168167 static const AVFilterPad compensationdelay_outputs[] = {
@@ -170,7 +169,6 @@ static const AVFilterPad compensationdelay_outputs[] = { · 1 unmodified line
170169 .name = "default",
171170 .type = AVMEDIA_TYPE_AUDIO,
172171 },
173− { NULL }
174172 };
175173
176174 const AVFilter ff_af_compensationdelay = {
@@ -180,6 +178,6 @@ const AVFilter ff_af_compensationdelay = { · 3 unmodified lines
180178 .priv_size = sizeof(CompensationDelayContext),
181179 .priv_class = &compensationdelay_class,
182180 .uninit = uninit,
183− .inputs = compensationdelay_inputs,
184− .outputs = compensationdelay_outputs,
181+ FILTER_INPUTS(compensationdelay_inputs),
182+ FILTER_OUTPUTS(compensationdelay_outputs),
185183 };
libavfilter/af_crossfeed.c+2−4
@@ -164,7 +164,6 @@ static const AVFilterPad inputs[] = { · 163 unmodified lines
164164 .filter_frame = filter_frame,
165165 .config_props = config_input,
166166 },
167− { NULL }
168167 };
169168
170169 static const AVFilterPad outputs[] = {
@@ -172,7 +171,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
172171 .name = "default",
173172 .type = AVMEDIA_TYPE_AUDIO,
174173 },
175− { NULL }
176174 };
177175
178176 const AVFilter ff_af_crossfeed = {
@@ -181,8 +179,8 @@ const AVFilter ff_af_crossfeed = { · 2 unmodified lines
181179 .query_formats = query_formats,
182180 .priv_size = sizeof(CrossfeedContext),
183181 .priv_class = &crossfeed_class,
184− .inputs = inputs,
185− .outputs = outputs,
182+ FILTER_INPUTS(inputs),
183+ FILTER_OUTPUTS(outputs),
186184 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
187185 .process_command = process_command,
188186 };
libavfilter/af_crystalizer.c+2−4
@@ -433,7 +433,6 @@ static const AVFilterPad inputs[] = { · 432 unmodified lines
433433 .filter_frame = filter_frame,
434434 .config_props = config_input,
435435 },
436− { NULL }
437436 };
438437
439438 static const AVFilterPad outputs[] = {
@@ -441,7 +440,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
441440 .name = "default",
442441 .type = AVMEDIA_TYPE_AUDIO,
443442 },
444− { NULL }
445443 };
446444
447445 const AVFilter ff_af_crystalizer = {
@@ -451,8 +449,8 @@ const AVFilter ff_af_crystalizer = { · 3 unmodified lines
451449 .priv_size = sizeof(CrystalizerContext),
452450 .priv_class = &crystalizer_class,
453451 .uninit = uninit,
454− .inputs = inputs,
455− .outputs = outputs,
452+ FILTER_INPUTS(inputs),
453+ FILTER_OUTPUTS(outputs),
456454 .process_command = process_command,
457455 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL |
458456 AVFILTER_FLAG_SLICE_THREADS,
libavfilter/af_dcshift.c+2−4
@@ -136,7 +136,6 @@ static const AVFilterPad dcshift_inputs[] = { · 135 unmodified lines
136136 .type = AVMEDIA_TYPE_AUDIO,
137137 .filter_frame = filter_frame,
138138 },
139− { NULL }
140139 };
141140
142141 static const AVFilterPad dcshift_outputs[] = {
@@ -144,7 +143,6 @@ static const AVFilterPad dcshift_outputs[] = { · 1 unmodified line
144143 .name = "default",
145144 .type = AVMEDIA_TYPE_AUDIO,
146145 },
147− { NULL }
148146 };
149147
150148 const AVFilter ff_af_dcshift = {
@@ -154,7 +152,7 @@ const AVFilter ff_af_dcshift = { · 3 unmodified lines
154152 .priv_size = sizeof(DCShiftContext),
155153 .priv_class = &dcshift_class,
156154 .init = init,
157− .inputs = dcshift_inputs,
158− .outputs = dcshift_outputs,
155+ FILTER_INPUTS(dcshift_inputs),
156+ FILTER_OUTPUTS(dcshift_outputs),
159157 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
160158 };
libavfilter/af_deesser.c+2−4
@@ -208,7 +208,6 @@ static const AVFilterPad inputs[] = { · 207 unmodified lines
208208 .filter_frame = filter_frame,
209209 .config_props = config_input,
210210 },
211− { NULL }
212211 };
213212
214213 static const AVFilterPad outputs[] = {
@@ -216,7 +215,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
216215 .name = "default",
217216 .type = AVMEDIA_TYPE_AUDIO,
218217 },
219− { NULL }
220218 };
221219
222220 const AVFilter ff_af_deesser = {
@@ -226,7 +224,7 @@ const AVFilter ff_af_deesser = { · 3 unmodified lines
226224 .priv_size = sizeof(DeesserContext),
227225 .priv_class = &deesser_class,
228226 .uninit = uninit,
229− .inputs = inputs,
230− .outputs = outputs,
227+ FILTER_INPUTS(inputs),
228+ FILTER_OUTPUTS(outputs),
231229 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
232230 };
libavfilter/af_drmeter.c+2−4
@@ -201,7 +201,6 @@ static const AVFilterPad drmeter_inputs[] = { · 200 unmodified lines
201201 .type = AVMEDIA_TYPE_AUDIO,
202202 .filter_frame = filter_frame,
203203 },
204− { NULL }
205204 };
206205
207206 static const AVFilterPad drmeter_outputs[] = {
@@ -210,7 +209,6 @@ static const AVFilterPad drmeter_outputs[] = { · 2 unmodified lines
210209 .type = AVMEDIA_TYPE_AUDIO,
211210 .config_props = config_output,
212211 },
213− { NULL }
214212 };
215213
216214 const AVFilter ff_af_drmeter = {
@@ -220,6 +218,6 @@ const AVFilter ff_af_drmeter = { · 3 unmodified lines
220218 .priv_size = sizeof(DRMeterContext),
221219 .priv_class = &drmeter_class,
222220 .uninit = uninit,
223− .inputs = drmeter_inputs,
224− .outputs = drmeter_outputs,
221+ FILTER_INPUTS(drmeter_inputs),
222+ FILTER_OUTPUTS(drmeter_outputs),
225223 };
libavfilter/af_dynaudnorm.c+2−4
@@ -844,7 +844,6 @@ static const AVFilterPad avfilter_af_dynaudnorm_inputs[] = { · 843 unmodified lines
844844 .type = AVMEDIA_TYPE_AUDIO,
845845 .config_props = config_input,
846846 },
847− { NULL }
848847 };
849848
850849 static const AVFilterPad avfilter_af_dynaudnorm_outputs[] = {
@@ -852,7 +851,6 @@ static const AVFilterPad avfilter_af_dynaudnorm_outputs[] = { · 1 unmodified line
852851 .name = "default",
853852 .type = AVMEDIA_TYPE_AUDIO,
854853 },
855− { NULL }
856854 };
857855
858856 const AVFilter ff_af_dynaudnorm = {
@@ -863,8 +861,8 @@ const AVFilter ff_af_dynaudnorm = { · 4 unmodified lines
863861 .init = init,
864862 .uninit = uninit,
865863 .activate = activate,
866− .inputs = avfilter_af_dynaudnorm_inputs,
867− .outputs = avfilter_af_dynaudnorm_outputs,
864+ FILTER_INPUTS(avfilter_af_dynaudnorm_inputs),
865+ FILTER_OUTPUTS(avfilter_af_dynaudnorm_outputs),
868866 .priv_class = &dynaudnorm_class,
869867 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
870868 .process_command = process_command,
libavfilter/af_earwax.c+2−4
@@ -220,7 +220,6 @@ static const AVFilterPad earwax_inputs[] = { · 219 unmodified lines
220220 .filter_frame = filter_frame,
221221 .config_props = config_input,
222222 },
223− { NULL }
224223 };
225224
226225 static const AVFilterPad earwax_outputs[] = {
@@ -228,7 +227,6 @@ static const AVFilterPad earwax_outputs[] = { · 1 unmodified line
228227 .name = "default",
229228 .type = AVMEDIA_TYPE_AUDIO,
230229 },
231− { NULL }
232230 };
233231
234232 const AVFilter ff_af_earwax = {
@@ -237,6 +235,6 @@ const AVFilter ff_af_earwax = { · 2 unmodified lines
237235 .query_formats = query_formats,
238236 .priv_size = sizeof(EarwaxContext),
239237 .uninit = uninit,
240− .inputs = earwax_inputs,
241− .outputs = earwax_outputs,
238+ FILTER_INPUTS(earwax_inputs),
239+ FILTER_OUTPUTS(earwax_outputs),
242240 };
libavfilter/af_extrastereo.c+2−4
@@ -108,7 +108,6 @@ static const AVFilterPad inputs[] = { · 107 unmodified lines
108108 .type = AVMEDIA_TYPE_AUDIO,
109109 .filter_frame = filter_frame,
110110 },
111− { NULL }
112111 };
113112
114113 static const AVFilterPad outputs[] = {
@@ -116,7 +115,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
116115 .name = "default",
117116 .type = AVMEDIA_TYPE_AUDIO,
118117 },
119− { NULL }
120118 };
121119
122120 const AVFilter ff_af_extrastereo = {
@@ -125,8 +123,8 @@ const AVFilter ff_af_extrastereo = { · 2 unmodified lines
125123 .query_formats = query_formats,
126124 .priv_size = sizeof(ExtraStereoContext),
127125 .priv_class = &extrastereo_class,
128− .inputs = inputs,
129− .outputs = outputs,
126+ FILTER_INPUTS(inputs),
127+ FILTER_OUTPUTS(outputs),
130128 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
131129 .process_command = ff_filter_process_command,
132130 };
libavfilter/af_firequalizer.c+2−4
@@ -944,7 +944,6 @@ static const AVFilterPad firequalizer_inputs[] = { · 943 unmodified lines
944944 .filter_frame = filter_frame,
945945 .type = AVMEDIA_TYPE_AUDIO,
946946 },
947− { NULL }
948947 };
949948
950949 static const AVFilterPad firequalizer_outputs[] = {
@@ -953,7 +952,6 @@ static const AVFilterPad firequalizer_outputs[] = { · 2 unmodified lines
953952 .request_frame = request_frame,
954953 .type = AVMEDIA_TYPE_AUDIO,
955954 },
956− { NULL }
957955 };
958956
959957 const AVFilter ff_af_firequalizer = {
@@ -963,7 +961,7 @@ const AVFilter ff_af_firequalizer = { · 3 unmodified lines
963961 .query_formats = query_formats,
964962 .process_command = process_command,
965963 .priv_size = sizeof(FIREqualizerContext),
966− .inputs = firequalizer_inputs,
967− .outputs = firequalizer_outputs,
964+ FILTER_INPUTS(firequalizer_inputs),
965+ FILTER_OUTPUTS(firequalizer_outputs),
968966 .priv_class = &firequalizer_class,
969967 };
libavfilter/af_flanger.c+2−4
@@ -209,7 +209,6 @@ static const AVFilterPad flanger_inputs[] = { · 208 unmodified lines
209209 .config_props = config_input,
210210 .filter_frame = filter_frame,
211211 },
212− { NULL }
213212 };
214213
215214 static const AVFilterPad flanger_outputs[] = {
@@ -217,7 +216,6 @@ static const AVFilterPad flanger_outputs[] = { · 1 unmodified line
217216 .name = "default",
218217 .type = AVMEDIA_TYPE_AUDIO,
219218 },
220− { NULL }
221219 };
222220
223221 const AVFilter ff_af_flanger = {
@@ -228,6 +226,6 @@ const AVFilter ff_af_flanger = { · 4 unmodified lines
228226 .priv_class = &flanger_class,
229227 .init = init,
230228 .uninit = uninit,
231− .inputs = flanger_inputs,
232− .outputs = flanger_outputs,
229+ FILTER_INPUTS(flanger_inputs),
230+ FILTER_OUTPUTS(flanger_outputs),
233231 };
libavfilter/af_haas.c+2−4
@@ -204,7 +204,6 @@ static const AVFilterPad inputs[] = { · 203 unmodified lines
204204 .filter_frame = filter_frame,
205205 .config_props = config_input,
206206 },
207− { NULL }
208207 };
209208
210209 static const AVFilterPad outputs[] = {
@@ -212,7 +211,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
212211 .name = "default",
213212 .type = AVMEDIA_TYPE_AUDIO,
214213 },
215− { NULL }
216214 };
217215
218216 const AVFilter ff_af_haas = {
@@ -222,6 +220,6 @@ const AVFilter ff_af_haas = { · 3 unmodified lines
222220 .priv_size = sizeof(HaasContext),
223221 .priv_class = &haas_class,
224222 .uninit = uninit,
225− .inputs = inputs,
226− .outputs = outputs,
223+ FILTER_INPUTS(inputs),
224+ FILTER_OUTPUTS(outputs),
227225 };
libavfilter/af_hdcd.c+2−4
@@ -1761,7 +1761,6 @@ static const AVFilterPad avfilter_af_hdcd_inputs[] = { · 1760 unmodified lines
17611761 .filter_frame = filter_frame,
17621762 .config_props = config_input,
17631763 },
1764− { NULL }
17651764 };
17661765
17671766 static const AVFilterPad avfilter_af_hdcd_outputs[] = {
@@ -1769,7 +1768,6 @@ static const AVFilterPad avfilter_af_hdcd_outputs[] = { · 1 unmodified line
17691768 .name = "default",
17701769 .type = AVMEDIA_TYPE_AUDIO,
17711770 },
1772− { NULL }
17731771 };
17741772
17751773 const AVFilter ff_af_hdcd = {
@@ -1780,6 +1778,6 @@ const AVFilter ff_af_hdcd = { · 4 unmodified lines
17801778 .init = init,
17811779 .uninit = uninit,
17821780 .query_formats = query_formats,
1783− .inputs = avfilter_af_hdcd_inputs,
1784− .outputs = avfilter_af_hdcd_outputs,
1781+ FILTER_INPUTS(avfilter_af_hdcd_inputs),
1782+ FILTER_OUTPUTS(avfilter_af_hdcd_outputs),
17851783 };
libavfilter/af_headphone.c+1−2
@@ -759,7 +759,6 @@ static const AVFilterPad outputs[] = { · 758 unmodified lines
759759 .type = AVMEDIA_TYPE_AUDIO,
760760 .config_props = config_output,
761761 },
762− { NULL }
763762 };
764763
765764 const AVFilter ff_af_headphone = {
@@ -772,6 +771,6 @@ const AVFilter ff_af_headphone = { · 6 unmodified lines
772771 .query_formats = query_formats,
773772 .activate = activate,
774773 .inputs = NULL,
775− .outputs = outputs,
774+ FILTER_OUTPUTS(outputs),
776775 .flags = AVFILTER_FLAG_SLICE_THREADS | AVFILTER_FLAG_DYNAMIC_INPUTS,
777776 };
libavfilter/af_join.c+1−2
@@ -536,7 +536,6 @@ static const AVFilterPad avfilter_af_join_outputs[] = { · 535 unmodified lines
536536 .type = AVMEDIA_TYPE_AUDIO,
537537 .config_props = join_config_output,
538538 },
539− { NULL }
540539 };
541540
542541 const AVFilter ff_af_join = {
@@ -550,6 +549,6 @@ const AVFilter ff_af_join = { · 7 unmodified lines
550549 .activate = activate,
551550 .query_formats = join_query_formats,
552551 .inputs = NULL,
553− .outputs = avfilter_af_join_outputs,
552+ FILTER_OUTPUTS(avfilter_af_join_outputs),
554553 .flags = AVFILTER_FLAG_DYNAMIC_INPUTS,
555554 };
libavfilter/af_ladspa.c+1−2
@@ -774,7 +774,6 @@ static const AVFilterPad ladspa_outputs[] = { · 773 unmodified lines
774774 .config_props = config_output,
775775 .request_frame = request_frame,
776776 },
777− { NULL }
778777 };
779778
780779 const AVFilter ff_af_ladspa = {
@@ -787,6 +786,6 @@ const AVFilter ff_af_ladspa = { · 6 unmodified lines
787786 .query_formats = query_formats,
788787 .process_command = process_command,
789788 .inputs = 0,
790− .outputs = ladspa_outputs,
789+ FILTER_OUTPUTS(ladspa_outputs),
791790 .flags = AVFILTER_FLAG_DYNAMIC_INPUTS,
792791 };
libavfilter/af_loudnorm.c+2−4
@@ -896,7 +896,6 @@ static const AVFilterPad avfilter_af_loudnorm_inputs[] = { · 895 unmodified lines
896896 .config_props = config_input,
897897 .filter_frame = filter_frame,
898898 },
899− { NULL }
900899 };
901900
902901 static const AVFilterPad avfilter_af_loudnorm_outputs[] = {
@@ -905,7 +904,6 @@ static const AVFilterPad avfilter_af_loudnorm_outputs[] = { · 2 unmodified lines
905904 .request_frame = request_frame,
906905 .type = AVMEDIA_TYPE_AUDIO,
907906 },
908− { NULL }
909907 };
910908
911909 const AVFilter ff_af_loudnorm = {
@@ -916,6 +914,6 @@ const AVFilter ff_af_loudnorm = { · 4 unmodified lines
916914 .query_formats = query_formats,
917915 .init = init,
918916 .uninit = uninit,
919− .inputs = avfilter_af_loudnorm_inputs,
920− .outputs = avfilter_af_loudnorm_outputs,
917+ FILTER_INPUTS(avfilter_af_loudnorm_inputs),
918+ FILTER_OUTPUTS(avfilter_af_loudnorm_outputs),
921919 };
libavfilter/af_lv2.c+1−2
@@ -574,7 +574,6 @@ static const AVFilterPad lv2_outputs[] = { · 573 unmodified lines
574574 .config_props = config_output,
575575 .request_frame = request_frame,
576576 },
577− { NULL }
578577 };
579578
580579 const AVFilter ff_af_lv2 = {
@@ -586,6 +585,6 @@ const AVFilter ff_af_lv2 = { · 5 unmodified lines
586585 .uninit = uninit,
587586 .query_formats = query_formats,
588587 .inputs = 0,
589− .outputs = lv2_outputs,
588+ FILTER_OUTPUTS(lv2_outputs),
590589 .flags = AVFILTER_FLAG_DYNAMIC_INPUTS,
591590 };
libavfilter/af_mcompand.c+2−4
@@ -638,7 +638,6 @@ static const AVFilterPad mcompand_inputs[] = { · 637 unmodified lines
638638 .type = AVMEDIA_TYPE_AUDIO,
639639 .filter_frame = filter_frame,
640640 },
641− { NULL }
642641 };
643642
644643 static const AVFilterPad mcompand_outputs[] = {
@@ -648,7 +647,6 @@ static const AVFilterPad mcompand_outputs[] = { · 3 unmodified lines
648647 .request_frame = request_frame,
649648 .config_props = config_output,
650649 },
651− { NULL }
652650 };
653651
654652
@@ -660,6 +658,6 @@ const AVFilter ff_af_mcompand = { · 5 unmodified lines
660658 .priv_size = sizeof(MCompandContext),
661659 .priv_class = &mcompand_class,
662660 .uninit = uninit,
663− .inputs = mcompand_inputs,
664− .outputs = mcompand_outputs,
661+ FILTER_INPUTS(mcompand_inputs),
662+ FILTER_OUTPUTS(mcompand_outputs),
665663 };
libavfilter/af_pan.c+2−4
@@ -435,7 +435,6 @@ static const AVFilterPad pan_inputs[] = { · 434 unmodified lines
435435 .config_props = config_props,
436436 .filter_frame = filter_frame,
437437 },
438− { NULL }
439438 };
440439
441440 static const AVFilterPad pan_outputs[] = {
@@ -443,7 +442,6 @@ static const AVFilterPad pan_outputs[] = { · 1 unmodified line
443442 .name = "default",
444443 .type = AVMEDIA_TYPE_AUDIO,
445444 },
446− { NULL }
447445 };
448446
449447 const AVFilter ff_af_pan = {
@@ -454,6 +452,6 @@ const AVFilter ff_af_pan = { · 4 unmodified lines
454452 .init = init,
455453 .uninit = uninit,
456454 .query_formats = query_formats,
457− .inputs = pan_inputs,
458− .outputs = pan_outputs,
455+ FILTER_INPUTS(pan_inputs),
456+ FILTER_OUTPUTS(pan_outputs),
459457 };
libavfilter/af_replaygain.c+2−4
@@ -592,7 +592,6 @@ static const AVFilterPad replaygain_inputs[] = { · 591 unmodified lines
592592 .filter_frame = filter_frame,
593593 .config_props = config_input,
594594 },
595− { NULL }
596595 };
597596
598597 static const AVFilterPad replaygain_outputs[] = {
@@ -600,7 +599,6 @@ static const AVFilterPad replaygain_outputs[] = { · 1 unmodified line
600599 .name = "default",
601600 .type = AVMEDIA_TYPE_AUDIO,
602601 },
603− { NULL }
604602 };
605603
606604 const AVFilter ff_af_replaygain = {
@@ -609,6 +607,6 @@ const AVFilter ff_af_replaygain = { · 2 unmodified lines
609607 .query_formats = query_formats,
610608 .uninit = uninit,
611609 .priv_size = sizeof(ReplayGainContext),
612− .inputs = replaygain_inputs,
613− .outputs = replaygain_outputs,
610+ FILTER_INPUTS(replaygain_inputs),
611+ FILTER_OUTPUTS(replaygain_outputs),
614612 };
libavfilter/af_rubberband.c+2−4
@@ -210,7 +210,6 @@ static const AVFilterPad rubberband_inputs[] = { · 209 unmodified lines
210210 .type = AVMEDIA_TYPE_AUDIO,
211211 .config_props = config_input,
212212 },
213− { NULL }
214213 };
215214
216215 static const AVFilterPad rubberband_outputs[] = {
@@ -218,7 +217,6 @@ static const AVFilterPad rubberband_outputs[] = { · 1 unmodified line
218217 .name = "default",
219218 .type = AVMEDIA_TYPE_AUDIO,
220219 },
221− { NULL }
222220 };
223221
224222 const AVFilter ff_af_rubberband = {
@@ -229,7 +227,7 @@ const AVFilter ff_af_rubberband = { · 4 unmodified lines
229227 .priv_class = &rubberband_class,
230228 .uninit = uninit,
231229 .activate = activate,
232− .inputs = rubberband_inputs,
233− .outputs = rubberband_outputs,
230+ FILTER_INPUTS(rubberband_inputs),
231+ FILTER_OUTPUTS(rubberband_outputs),
234232 .process_command = process_command,
235233 };
libavfilter/af_sidechaincompress.c+4−8
@@ -371,7 +371,6 @@ static const AVFilterPad sidechaincompress_inputs[] = { · 370 unmodified lines
371371 .name = "sidechain",
372372 .type = AVMEDIA_TYPE_AUDIO,
373373 },
374− { NULL }
375374 };
376375
377376 static const AVFilterPad sidechaincompress_outputs[] = {
@@ -380,7 +379,6 @@ static const AVFilterPad sidechaincompress_outputs[] = { · 2 unmodified lines
380379 .type = AVMEDIA_TYPE_AUDIO,
381380 .config_props = config_output,
382381 },
383− { NULL }
384382 };
385383
386384 const AVFilter ff_af_sidechaincompress = {
@@ -391,8 +389,8 @@ const AVFilter ff_af_sidechaincompress = { · 4 unmodified lines
391389 .query_formats = query_formats,
392390 .activate = activate,
393391 .uninit = uninit,
394− .inputs = sidechaincompress_inputs,
395− .outputs = sidechaincompress_outputs,
392+ FILTER_INPUTS(sidechaincompress_inputs),
393+ FILTER_OUTPUTS(sidechaincompress_outputs),
396394 .process_command = process_command,
397395 };
398396 #endif /* CONFIG_SIDECHAINCOMPRESS_FILTER */
@@ -454,7 +452,6 @@ static const AVFilterPad acompressor_inputs[] = { · 55 unmodified lines
454452 .type = AVMEDIA_TYPE_AUDIO,
455453 .filter_frame = acompressor_filter_frame,
456454 },
457− { NULL }
458455 };
459456
460457 static const AVFilterPad acompressor_outputs[] = {
@@ -463,7 +460,6 @@ static const AVFilterPad acompressor_outputs[] = { · 2 unmodified lines
463460 .type = AVMEDIA_TYPE_AUDIO,
464461 .config_props = compressor_config_output,
465462 },
466− { NULL }
467463 };
468464
469465 const AVFilter ff_af_acompressor = {
@@ -472,8 +468,8 @@ const AVFilter ff_af_acompressor = { · 2 unmodified lines
472468 .priv_size = sizeof(SidechainCompressContext),
473469 .priv_class = &acompressor_class,
474470 .query_formats = acompressor_query_formats,
475− .inputs = acompressor_inputs,
476− .outputs = acompressor_outputs,
471+ FILTER_INPUTS(acompressor_inputs),
472+ FILTER_OUTPUTS(acompressor_outputs),
477473 .process_command = process_command,
478474 };
479475 #endif /* CONFIG_ACOMPRESSOR_FILTER */
libavfilter/af_silencedetect.c+2−4
@@ -240,7 +240,6 @@ static const AVFilterPad silencedetect_inputs[] = { · 239 unmodified lines
240240 .config_props = config_input,
241241 .filter_frame = filter_frame,
242242 },
243− { NULL }
244243 };
245244
246245 static const AVFilterPad silencedetect_outputs[] = {
@@ -248,7 +247,6 @@ static const AVFilterPad silencedetect_outputs[] = { · 1 unmodified line
248247 .name = "default",
249248 .type = AVMEDIA_TYPE_AUDIO,
250249 },
251− { NULL }
252250 };
253251
254252 const AVFilter ff_af_silencedetect = {
@@ -257,7 +255,7 @@ const AVFilter ff_af_silencedetect = { · 2 unmodified lines
257255 .priv_size = sizeof(SilenceDetectContext),
258256 .query_formats = query_formats,
259257 .uninit = uninit,
260− .inputs = silencedetect_inputs,
261− .outputs = silencedetect_outputs,
258+ FILTER_INPUTS(silencedetect_inputs),
259+ FILTER_OUTPUTS(silencedetect_outputs),
262260 .priv_class = &silencedetect_class,
263261 };
libavfilter/af_silenceremove.c+2−4
@@ -923,7 +923,6 @@ static const AVFilterPad silenceremove_inputs[] = { · 922 unmodified lines
923923 .config_props = config_input,
924924 .filter_frame = filter_frame,
925925 },
926− { NULL }
927926 };
928927
929928 static const AVFilterPad silenceremove_outputs[] = {
@@ -932,7 +931,6 @@ static const AVFilterPad silenceremove_outputs[] = { · 2 unmodified lines
932931 .type = AVMEDIA_TYPE_AUDIO,
933932 .request_frame = request_frame,
934933 },
935− { NULL }
936934 };
937935
938936 const AVFilter ff_af_silenceremove = {
@@ -943,6 +941,6 @@ const AVFilter ff_af_silenceremove = { · 4 unmodified lines
943941 .init = init,
944942 .uninit = uninit,
945943 .query_formats = query_formats,
946− .inputs = silenceremove_inputs,
947− .outputs = silenceremove_outputs,
944+ FILTER_INPUTS(silenceremove_inputs),
945+ FILTER_OUTPUTS(silenceremove_outputs),
948946 };
libavfilter/af_sofalizer.c+2−4
@@ -1095,7 +1095,6 @@ static const AVFilterPad inputs[] = { · 1094 unmodified lines
10951095 .type = AVMEDIA_TYPE_AUDIO,
10961096 .config_props = config_input,
10971097 },
1098− { NULL }
10991098 };
11001099
11011100 static const AVFilterPad outputs[] = {
@@ -1103,7 +1102,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
11031102 .name = "default",
11041103 .type = AVMEDIA_TYPE_AUDIO,
11051104 },
1106− { NULL }
11071105 };
11081106
11091107 const AVFilter ff_af_sofalizer = {
@@ -1115,7 +1113,7 @@ const AVFilter ff_af_sofalizer = { · 5 unmodified lines
11151113 .activate = activate,
11161114 .uninit = uninit,
11171115 .query_formats = query_formats,
1118− .inputs = inputs,
1119− .outputs = outputs,
1116+ FILTER_INPUTS(inputs),
1117+ FILTER_OUTPUTS(outputs),
11201118 .flags = AVFILTER_FLAG_SLICE_THREADS,
11211119 };
libavfilter/af_speechnorm.c+2−4
@@ -542,7 +542,6 @@ static const AVFilterPad inputs[] = { · 541 unmodified lines
542542 .type = AVMEDIA_TYPE_AUDIO,
543543 .config_props = config_input,
544544 },
545− { NULL }
546545 };
547546
548547 static const AVFilterPad outputs[] = {
@@ -550,7 +549,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
550549 .name = "default",
551550 .type = AVMEDIA_TYPE_AUDIO,
552551 },
553− { NULL }
554552 };
555553
556554 const AVFilter ff_af_speechnorm = {
@@ -561,7 +559,7 @@ const AVFilter ff_af_speechnorm = { · 4 unmodified lines
561559 .priv_class = &speechnorm_class,
562560 .activate = activate,
563561 .uninit = uninit,
564− .inputs = inputs,
565− .outputs = outputs,
562+ FILTER_INPUTS(inputs),
563+ FILTER_OUTPUTS(outputs),
566564 .process_command = process_command,
567565 };
libavfilter/af_stereotools.c+2−4
@@ -363,7 +363,6 @@ static const AVFilterPad inputs[] = { · 362 unmodified lines
363363 .filter_frame = filter_frame,
364364 .config_props = config_input,
365365 },
366− { NULL }
367366 };
368367
369368 static const AVFilterPad outputs[] = {
@@ -371,7 +370,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
371370 .name = "default",
372371 .type = AVMEDIA_TYPE_AUDIO,
373372 },
374− { NULL }
375373 };
376374
377375 const AVFilter ff_af_stereotools = {
@@ -381,8 +379,8 @@ const AVFilter ff_af_stereotools = { · 3 unmodified lines
381379 .priv_size = sizeof(StereoToolsContext),
382380 .priv_class = &stereotools_class,
383381 .uninit = uninit,
384− .inputs = inputs,
385− .outputs = outputs,
382+ FILTER_INPUTS(inputs),
383+ FILTER_OUTPUTS(outputs),
386384 .process_command = process_command,
387385 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
388386 };
libavfilter/af_stereowiden.c+2−4
@@ -144,7 +144,6 @@ static const AVFilterPad inputs[] = { · 143 unmodified lines
144144 .filter_frame = filter_frame,
145145 .config_props = config_input,
146146 },
147− { NULL }
148147 };
149148
150149 static const AVFilterPad outputs[] = {
@@ -152,7 +151,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
152151 .name = "default",
153152 .type = AVMEDIA_TYPE_AUDIO,
154153 },
155− { NULL }
156154 };
157155
158156 const AVFilter ff_af_stereowiden = {
@@ -162,8 +160,8 @@ const AVFilter ff_af_stereowiden = { · 3 unmodified lines
162160 .priv_size = sizeof(StereoWidenContext),
163161 .priv_class = &stereowiden_class,
164162 .uninit = uninit,
165− .inputs = inputs,
166− .outputs = outputs,
163+ FILTER_INPUTS(inputs),
164+ FILTER_OUTPUTS(outputs),
167165 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
168166 .process_command = ff_filter_process_command,
169167 };
libavfilter/af_superequalizer.c+2−4
@@ -326,7 +326,6 @@ static const AVFilterPad superequalizer_inputs[] = { · 325 unmodified lines
326326 .type = AVMEDIA_TYPE_AUDIO,
327327 .config_props = config_input,
328328 },
329− { NULL }
330329 };
331330
332331 static const AVFilterPad superequalizer_outputs[] = {
@@ -335,7 +334,6 @@ static const AVFilterPad superequalizer_outputs[] = { · 2 unmodified lines
335334 .type = AVMEDIA_TYPE_AUDIO,
336335 .config_props = config_output,
337336 },
338− { NULL }
339337 };
340338
341339 #define AF AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
@@ -374,6 +372,6 @@ const AVFilter ff_af_superequalizer = { · 32 unmodified lines
374372 .init = init,
375373 .activate = activate,
376374 .uninit = uninit,
377− .inputs = superequalizer_inputs,
378− .outputs = superequalizer_outputs,
375+ FILTER_INPUTS(superequalizer_inputs),
376+ FILTER_OUTPUTS(superequalizer_outputs),
379377 };
libavfilter/af_surround.c+2−4
@@ -1770,7 +1770,6 @@ static const AVFilterPad inputs[] = { · 1769 unmodified lines
17701770 .type = AVMEDIA_TYPE_AUDIO,
17711771 .config_props = config_input,
17721772 },
1773− { NULL }
17741773 };
17751774
17761775 static const AVFilterPad outputs[] = {
@@ -1779,7 +1778,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
17791778 .type = AVMEDIA_TYPE_AUDIO,
17801779 .config_props = config_output,
17811780 },
1782− { NULL }
17831781 };
17841782
17851783 const AVFilter ff_af_surround = {
@@ -1791,7 +1789,7 @@ const AVFilter ff_af_surround = { · 5 unmodified lines
17911789 .init = init,
17921790 .uninit = uninit,
17931791 .activate = activate,
1794− .inputs = inputs,
1795− .outputs = outputs,
1792+ FILTER_INPUTS(inputs),
1793+ FILTER_OUTPUTS(outputs),
17961794 .flags = AVFILTER_FLAG_SLICE_THREADS,
17971795 };
libavfilter/af_tremolo.c+2−4
@@ -136,7 +136,6 @@ static const AVFilterPad avfilter_af_tremolo_inputs[] = { · 135 unmodified lines
136136 .config_props = config_input,
137137 .filter_frame = filter_frame,
138138 },
139− { NULL }
140139 };
141140
142141 static const AVFilterPad avfilter_af_tremolo_outputs[] = {
@@ -144,7 +143,6 @@ static const AVFilterPad avfilter_af_tremolo_outputs[] = { · 1 unmodified line
144143 .name = "default",
145144 .type = AVMEDIA_TYPE_AUDIO,
146145 },
147− { NULL }
148146 };
149147
150148 const AVFilter ff_af_tremolo = {
@@ -154,6 +152,6 @@ const AVFilter ff_af_tremolo = { · 3 unmodified lines
154152 .priv_class = &tremolo_class,
155153 .uninit = uninit,
156154 .query_formats = query_formats,
157− .inputs = avfilter_af_tremolo_inputs,
158− .outputs = avfilter_af_tremolo_outputs,
155+ FILTER_INPUTS(avfilter_af_tremolo_inputs),
156+ FILTER_OUTPUTS(avfilter_af_tremolo_outputs),
159157 };
libavfilter/af_vibrato.c+2−4
@@ -174,7 +174,6 @@ static const AVFilterPad avfilter_af_vibrato_inputs[] = { · 173 unmodified lines
174174 .config_props = config_input,
175175 .filter_frame = filter_frame,
176176 },
177− { NULL }
178177 };
179178
180179 static const AVFilterPad avfilter_af_vibrato_outputs[] = {
@@ -182,7 +181,6 @@ static const AVFilterPad avfilter_af_vibrato_outputs[] = { · 1 unmodified line
182181 .name = "default",
183182 .type = AVMEDIA_TYPE_AUDIO,
184183 },
185− { NULL }
186184 };
187185
188186 const AVFilter ff_af_vibrato = {
@@ -192,6 +190,6 @@ const AVFilter ff_af_vibrato = { · 3 unmodified lines
192190 .priv_class = &vibrato_class,
193191 .uninit = uninit,
194192 .query_formats = query_formats,
195− .inputs = avfilter_af_vibrato_inputs,
196− .outputs = avfilter_af_vibrato_outputs,
193+ FILTER_INPUTS(avfilter_af_vibrato_inputs),
194+ FILTER_OUTPUTS(avfilter_af_vibrato_outputs),
197195 };
libavfilter/af_volume.c+2−4
@@ -452,7 +452,6 @@ static const AVFilterPad avfilter_af_volume_inputs[] = { · 451 unmodified lines
452452 .type = AVMEDIA_TYPE_AUDIO,
453453 .filter_frame = filter_frame,
454454 },
455− { NULL }
456455 };
457456
458457 static const AVFilterPad avfilter_af_volume_outputs[] = {
@@ -461,7 +460,6 @@ static const AVFilterPad avfilter_af_volume_outputs[] = { · 2 unmodified lines
461460 .type = AVMEDIA_TYPE_AUDIO,
462461 .config_props = config_output,
463462 },
464− { NULL }
465463 };
466464
467465 const AVFilter ff_af_volume = {
@@ -472,8 +470,8 @@ const AVFilter ff_af_volume = { · 4 unmodified lines
472470 .priv_class = &volume_class,
473471 .init = init,
474472 .uninit = uninit,
475− .inputs = avfilter_af_volume_inputs,
476− .outputs = avfilter_af_volume_outputs,
473+ FILTER_INPUTS(avfilter_af_volume_inputs),
474+ FILTER_OUTPUTS(avfilter_af_volume_outputs),
477475 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
478476 .process_command = process_command,
479477 };
libavfilter/af_volumedetect.c+2−4
@@ -134,7 +134,6 @@ static const AVFilterPad volumedetect_inputs[] = { · 133 unmodified lines
134134 .type = AVMEDIA_TYPE_AUDIO,
135135 .filter_frame = filter_frame,
136136 },
137− { NULL }
138137 };
139138
140139 static const AVFilterPad volumedetect_outputs[] = {
@@ -142,7 +141,6 @@ static const AVFilterPad volumedetect_outputs[] = { · 1 unmodified line
142141 .name = "default",
143142 .type = AVMEDIA_TYPE_AUDIO,
144143 },
145− { NULL }
146144 };
147145
148146 const AVFilter ff_af_volumedetect = {
@@ -151,6 +149,6 @@ const AVFilter ff_af_volumedetect = { · 2 unmodified lines
151149 .priv_size = sizeof(VolDetectContext),
152150 .query_formats = query_formats,
153151 .uninit = uninit,
154− .inputs = volumedetect_inputs,
155− .outputs = volumedetect_outputs,
152+ FILTER_INPUTS(volumedetect_inputs),
153+ FILTER_OUTPUTS(volumedetect_outputs),
156154 };
libavfilter/asink_anullsink.c+1−2
@@ -34,13 +34,12 @@ static const AVFilterPad avfilter_asink_anullsink_inputs[] = { · 33 unmodified lines
3434 .type = AVMEDIA_TYPE_AUDIO,
3535 .filter_frame = null_filter_frame,
3636 },
37− { NULL },
3837 };
3938
4039 const AVFilter ff_asink_anullsink = {
4140 .name = "anullsink",
4241 .description = NULL_IF_CONFIG_SMALL("Do absolutely nothing with the input audio."),
4342 .priv_size = 0,
44− .inputs = avfilter_asink_anullsink_inputs,
43+ FILTER_INPUTS(avfilter_asink_anullsink_inputs),
4544 .outputs = NULL,
4645 };
libavfilter/asrc_afirsrc.c+1−2
@@ -301,7 +301,6 @@ static const AVFilterPad afirsrc_outputs[] = { · 300 unmodified lines
301301 .request_frame = request_frame,
302302 .config_props = config_output,
303303 },
304− { NULL }
305304 };
306305
307306 const AVFilter ff_asrc_afirsrc = {
@@ -312,6 +311,6 @@ const AVFilter ff_asrc_afirsrc = { · 4 unmodified lines
312311 .uninit = uninit,
313312 .priv_size = sizeof(AudioFIRSourceContext),
314313 .inputs = NULL,
315− .outputs = afirsrc_outputs,
314+ FILTER_OUTPUTS(afirsrc_outputs),
316315 .priv_class = &afirsrc_class,
317316 };
libavfilter/asrc_anoisesrc.c+1−2
@@ -230,7 +230,6 @@ static const AVFilterPad anoisesrc_outputs[] = { · 229 unmodified lines
230230 .type = AVMEDIA_TYPE_AUDIO,
231231 .config_props = config_props,
232232 },
233− { NULL }
234233 };
235234
236235 const AVFilter ff_asrc_anoisesrc = {
@@ -240,6 +239,6 @@ const AVFilter ff_asrc_anoisesrc = { · 3 unmodified lines
240239 .priv_size = sizeof(ANoiseSrcContext),
241240 .inputs = NULL,
242241 .activate = activate,
243− .outputs = anoisesrc_outputs,
242+ FILTER_OUTPUTS(anoisesrc_outputs),
244243 .priv_class = &anoisesrc_class,
245244 };
libavfilter/asrc_anullsrc.c+1−2
@@ -134,7 +134,6 @@ static const AVFilterPad avfilter_asrc_anullsrc_outputs[] = { · 133 unmodified lines
134134 .type = AVMEDIA_TYPE_AUDIO,
135135 .config_props = config_props,
136136 },
137− { NULL }
138137 };
139138
140139 const AVFilter ff_asrc_anullsrc = {
@@ -144,7 +143,7 @@ const AVFilter ff_asrc_anullsrc = { · 3 unmodified lines
144143 .query_formats = query_formats,
145144 .priv_size = sizeof(ANullContext),
146145 .inputs = NULL,
147− .outputs = avfilter_asrc_anullsrc_outputs,
146+ FILTER_OUTPUTS(avfilter_asrc_anullsrc_outputs),
148147 .activate = activate,
149148 .priv_class = &anullsrc_class,
150149 };
libavfilter/asrc_flite.c+1−2
@@ -271,7 +271,6 @@ static const AVFilterPad flite_outputs[] = { · 270 unmodified lines
271271 .config_props = config_props,
272272 .request_frame = request_frame,
273273 },
274− { NULL }
275274 };
276275
277276 const AVFilter ff_asrc_flite = {
@@ -282,6 +281,6 @@ const AVFilter ff_asrc_flite = { · 4 unmodified lines
282281 .uninit = uninit,
283282 .priv_size = sizeof(FliteContext),
284283 .inputs = NULL,
285− .outputs = flite_outputs,
284+ FILTER_OUTPUTS(flite_outputs),
286285 .priv_class = &flite_class,
287286 };
libavfilter/asrc_hilbert.c+1−2
@@ -171,7 +171,6 @@ static const AVFilterPad hilbert_outputs[] = { · 170 unmodified lines
171171 .request_frame = request_frame,
172172 .config_props = config_props,
173173 },
174− { NULL }
175174 };
176175
177176 const AVFilter ff_asrc_hilbert = {
@@ -182,6 +181,6 @@ const AVFilter ff_asrc_hilbert = { · 4 unmodified lines
182181 .uninit = uninit,
183182 .priv_size = sizeof(HilbertContext),
184183 .inputs = NULL,
185− .outputs = hilbert_outputs,
184+ FILTER_OUTPUTS(hilbert_outputs),
186185 .priv_class = &hilbert_class,
187186 };
libavfilter/asrc_sinc.c+1−2
@@ -408,7 +408,6 @@ static const AVFilterPad sinc_outputs[] = { · 407 unmodified lines
408408 .config_props = config_output,
409409 .request_frame = request_frame,
410410 },
411− { NULL }
412411 };
413412
414413 #define AF AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
@@ -440,5 +439,5 @@ const AVFilter ff_asrc_sinc = { · 25 unmodified lines
440439 .query_formats = query_formats,
441440 .uninit = uninit,
442441 .inputs = NULL,
443− .outputs = sinc_outputs,
442+ FILTER_OUTPUTS(sinc_outputs),
444443 };
libavfilter/asrc_sine.c+1−2
@@ -253,7 +253,6 @@ static const AVFilterPad sine_outputs[] = { · 252 unmodified lines
253253 .request_frame = request_frame,
254254 .config_props = config_props,
255255 },
256− { NULL }
257256 };
258257
259258 const AVFilter ff_asrc_sine = {
@@ -264,6 +263,6 @@ const AVFilter ff_asrc_sine = { · 4 unmodified lines
264263 .uninit = uninit,
265264 .priv_size = sizeof(SineContext),
266265 .inputs = NULL,
267− .outputs = sine_outputs,
266+ FILTER_OUTPUTS(sine_outputs),
268267 .priv_class = &sine_class,
269268 };
libavfilter/avf_abitscope.c+2−4
@@ -248,7 +248,6 @@ static const AVFilterPad inputs[] = { · 247 unmodified lines
248248 .type = AVMEDIA_TYPE_AUDIO,
249249 .config_props = config_input,
250250 },
251− { NULL }
252251 };
253252
254253 static const AVFilterPad outputs[] = {
@@ -257,7 +256,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
257256 .type = AVMEDIA_TYPE_VIDEO,
258257 .config_props = config_output,
259258 },
260− { NULL }
261259 };
262260
263261 const AVFilter ff_avf_abitscope = {
@@ -265,8 +263,8 @@ const AVFilter ff_avf_abitscope = { · 1 unmodified line
265263 .description = NULL_IF_CONFIG_SMALL("Convert input audio to audio bit scope video output."),
266264 .query_formats = query_formats,
267265 .priv_size = sizeof(AudioBitScopeContext),
268− .inputs = inputs,
269− .outputs = outputs,
266+ FILTER_INPUTS(inputs),
267+ FILTER_OUTPUTS(outputs),
270268 .activate = activate,
271269 .priv_class = &abitscope_class,
272270 };
libavfilter/avf_ahistogram.c+2−4
@@ -412,7 +412,6 @@ static const AVFilterPad ahistogram_inputs[] = { · 411 unmodified lines
412412 .type = AVMEDIA_TYPE_AUDIO,
413413 .config_props = config_input,
414414 },
415− { NULL }
416415 };
417416
418417 static const AVFilterPad ahistogram_outputs[] = {
@@ -421,7 +420,6 @@ static const AVFilterPad ahistogram_outputs[] = { · 2 unmodified lines
421420 .type = AVMEDIA_TYPE_VIDEO,
422421 .config_props = config_output,
423422 },
424− { NULL }
425423 };
426424
427425 const AVFilter ff_avf_ahistogram = {
@@ -431,7 +429,7 @@ const AVFilter ff_avf_ahistogram = { · 3 unmodified lines
431429 .query_formats = query_formats,
432430 .priv_size = sizeof(AudioHistogramContext),
433431 .activate = activate,
434− .inputs = ahistogram_inputs,
435− .outputs = ahistogram_outputs,
432+ FILTER_INPUTS(ahistogram_inputs),
433+ FILTER_OUTPUTS(ahistogram_outputs),
436434 .priv_class = &ahistogram_class,
437435 };
libavfilter/avf_aphasemeter.c+1−2
@@ -380,7 +380,6 @@ static const AVFilterPad inputs[] = { · 379 unmodified lines
380380 .config_props = config_input,
381381 .filter_frame = filter_frame,
382382 },
383− { NULL }
384383 };
385384
386385 const AVFilter ff_avf_aphasemeter = {
@@ -390,7 +389,7 @@ const AVFilter ff_avf_aphasemeter = { · 3 unmodified lines
390389 .uninit = uninit,
391390 .query_formats = query_formats,
392391 .priv_size = sizeof(AudioPhaseMeterContext),
393− .inputs = inputs,
392+ FILTER_INPUTS(inputs),
394393 .outputs = NULL,
395394 .priv_class = &aphasemeter_class,
396395 .flags = AVFILTER_FLAG_DYNAMIC_OUTPUTS,
libavfilter/avf_avectorscope.c+2−4
@@ -403,7 +403,6 @@ static const AVFilterPad audiovectorscope_inputs[] = { · 402 unmodified lines
403403 .type = AVMEDIA_TYPE_AUDIO,
404404 .config_props = config_input,
405405 },
406− { NULL }
407406 };
408407
409408 static const AVFilterPad audiovectorscope_outputs[] = {
@@ -412,7 +411,6 @@ static const AVFilterPad audiovectorscope_outputs[] = { · 2 unmodified lines
412411 .type = AVMEDIA_TYPE_VIDEO,
413412 .config_props = config_output,
414413 },
415− { NULL }
416414 };
417415
418416 const AVFilter ff_avf_avectorscope = {
@@ -422,7 +420,7 @@ const AVFilter ff_avf_avectorscope = { · 3 unmodified lines
422420 .query_formats = query_formats,
423421 .priv_size = sizeof(AudioVectorScopeContext),
424422 .activate = activate,
425− .inputs = audiovectorscope_inputs,
426− .outputs = audiovectorscope_outputs,
423+ FILTER_INPUTS(audiovectorscope_inputs),
424+ FILTER_OUTPUTS(audiovectorscope_outputs),
427425 .priv_class = &avectorscope_class,
428426 };
libavfilter/avf_showcqt.c+2−4
@@ -1577,7 +1577,6 @@ static const AVFilterPad showcqt_inputs[] = { · 1576 unmodified lines
15771577 .type = AVMEDIA_TYPE_AUDIO,
15781578 .filter_frame = filter_frame,
15791579 },
1580− { NULL }
15811580 };
15821581
15831582 static const AVFilterPad showcqt_outputs[] = {
@@ -1587,7 +1586,6 @@ static const AVFilterPad showcqt_outputs[] = { · 3 unmodified lines
15871586 .config_props = config_output,
15881587 .request_frame = request_frame,
15891588 },
1590− { NULL }
15911589 };
15921590
15931591 const AVFilter ff_avf_showcqt = {
@@ -1597,7 +1595,7 @@ const AVFilter ff_avf_showcqt = { · 3 unmodified lines
15971595 .uninit = uninit,
15981596 .query_formats = query_formats,
15991597 .priv_size = sizeof(ShowCQTContext),
1600− .inputs = showcqt_inputs,
1601− .outputs = showcqt_outputs,
1598+ FILTER_INPUTS(showcqt_inputs),
1599+ FILTER_OUTPUTS(showcqt_outputs),
16021600 .priv_class = &showcqt_class,
16031601 };
libavfilter/avf_showfreqs.c+2−4
@@ -552,7 +552,6 @@ static const AVFilterPad showfreqs_inputs[] = { · 551 unmodified lines
552552 .name = "default",
553553 .type = AVMEDIA_TYPE_AUDIO,
554554 },
555− { NULL }
556555 };
557556
558557 static const AVFilterPad showfreqs_outputs[] = {
@@ -561,7 +560,6 @@ static const AVFilterPad showfreqs_outputs[] = { · 2 unmodified lines
561560 .type = AVMEDIA_TYPE_VIDEO,
562561 .config_props = config_output,
563562 },
564− { NULL }
565563 };
566564
567565 const AVFilter ff_avf_showfreqs = {
@@ -572,7 +570,7 @@ const AVFilter ff_avf_showfreqs = { · 4 unmodified lines
572570 .query_formats = query_formats,
573571 .priv_size = sizeof(ShowFreqsContext),
574572 .activate = activate,
575− .inputs = showfreqs_inputs,
576− .outputs = showfreqs_outputs,
573+ FILTER_INPUTS(showfreqs_inputs),
574+ FILTER_OUTPUTS(showfreqs_outputs),
577575 .priv_class = &showfreqs_class,
578576 };
libavfilter/avf_showspatial.c+2−4
@@ -346,7 +346,6 @@ static const AVFilterPad showspatial_inputs[] = { · 345 unmodified lines
346346 .name = "default",
347347 .type = AVMEDIA_TYPE_AUDIO,
348348 },
349− { NULL }
350349 };
351350
352351 static const AVFilterPad showspatial_outputs[] = {
@@ -355,7 +354,6 @@ static const AVFilterPad showspatial_outputs[] = { · 2 unmodified lines
355354 .type = AVMEDIA_TYPE_VIDEO,
356355 .config_props = config_output,
357356 },
358− { NULL }
359357 };
360358
361359 const AVFilter ff_avf_showspatial = {
@@ -364,8 +362,8 @@ const AVFilter ff_avf_showspatial = { · 2 unmodified lines
364362 .uninit = uninit,
365363 .query_formats = query_formats,
366364 .priv_size = sizeof(ShowSpatialContext),
367− .inputs = showspatial_inputs,
368− .outputs = showspatial_outputs,
365+ FILTER_INPUTS(showspatial_inputs),
366+ FILTER_OUTPUTS(showspatial_outputs),
369367 .activate = spatial_activate,
370368 .priv_class = &showspatial_class,
371369 .flags = AVFILTER_FLAG_SLICE_THREADS,
libavfilter/avf_showspectrum.c+4−8
@@ -1654,7 +1654,6 @@ static const AVFilterPad showspectrum_inputs[] = { · 1653 unmodified lines
16541654 .name = "default",
16551655 .type = AVMEDIA_TYPE_AUDIO,
16561656 },
1657− { NULL }
16581657 };
16591658
16601659 static const AVFilterPad showspectrum_outputs[] = {
@@ -1663,7 +1662,6 @@ static const AVFilterPad showspectrum_outputs[] = { · 2 unmodified lines
16631662 .type = AVMEDIA_TYPE_VIDEO,
16641663 .config_props = config_output,
16651664 },
1666− { NULL }
16671665 };
16681666
16691667 const AVFilter ff_avf_showspectrum = {
@@ -1672,8 +1670,8 @@ const AVFilter ff_avf_showspectrum = { · 2 unmodified lines
16721670 .uninit = uninit,
16731671 .query_formats = query_formats,
16741672 .priv_size = sizeof(ShowSpectrumContext),
1675− .inputs = showspectrum_inputs,
1676− .outputs = showspectrum_outputs,
1673+ FILTER_INPUTS(showspectrum_inputs),
1674+ FILTER_OUTPUTS(showspectrum_outputs),
16771675 .activate = activate,
16781676 .priv_class = &showspectrum_class,
16791677 .flags = AVFILTER_FLAG_SLICE_THREADS,
@@ -1838,7 +1836,6 @@ static const AVFilterPad showspectrumpic_inputs[] = { · 158 unmodified lines
18381836 .type = AVMEDIA_TYPE_AUDIO,
18391837 .filter_frame = showspectrumpic_filter_frame,
18401838 },
1841− { NULL }
18421839 };
18431840
18441841 static const AVFilterPad showspectrumpic_outputs[] = {
@@ -1848,7 +1845,6 @@ static const AVFilterPad showspectrumpic_outputs[] = { · 3 unmodified lines
18481845 .config_props = config_output,
18491846 .request_frame = showspectrumpic_request_frame,
18501847 },
1851− { NULL }
18521848 };
18531849
18541850 const AVFilter ff_avf_showspectrumpic = {
@@ -1857,8 +1853,8 @@ const AVFilter ff_avf_showspectrumpic = { · 2 unmodified lines
18571853 .uninit = uninit,
18581854 .query_formats = query_formats,
18591855 .priv_size = sizeof(ShowSpectrumContext),
1860− .inputs = showspectrumpic_inputs,
1861− .outputs = showspectrumpic_outputs,
1856+ FILTER_INPUTS(showspectrumpic_inputs),
1857+ FILTER_OUTPUTS(showspectrumpic_outputs),
18621858 .priv_class = &showspectrumpic_class,
18631859 .flags = AVFILTER_FLAG_SLICE_THREADS,
18641860 };
libavfilter/avf_showvolume.c+2−4
@@ -486,7 +486,6 @@ static const AVFilterPad showvolume_inputs[] = { · 485 unmodified lines
486486 .type = AVMEDIA_TYPE_AUDIO,
487487 .config_props = config_input,
488488 },
489− { NULL }
490489 };
491490
492491 static const AVFilterPad showvolume_outputs[] = {
@@ -495,7 +494,6 @@ static const AVFilterPad showvolume_outputs[] = { · 2 unmodified lines
495494 .type = AVMEDIA_TYPE_VIDEO,
496495 .config_props = config_output,
497496 },
498− { NULL }
499497 };
500498
501499 const AVFilter ff_avf_showvolume = {
@@ -506,7 +504,7 @@ const AVFilter ff_avf_showvolume = { · 4 unmodified lines
506504 .uninit = uninit,
507505 .query_formats = query_formats,
508506 .priv_size = sizeof(ShowVolumeContext),
509− .inputs = showvolume_inputs,
510− .outputs = showvolume_outputs,
507+ FILTER_INPUTS(showvolume_inputs),
508+ FILTER_OUTPUTS(showvolume_outputs),
511509 .priv_class = &showvolume_class,
512510 };
libavfilter/avf_showwaves.c+4−8
@@ -763,7 +763,6 @@ static const AVFilterPad showwaves_inputs[] = { · 762 unmodified lines
763763 .name = "default",
764764 .type = AVMEDIA_TYPE_AUDIO,
765765 },
766− { NULL }
767766 };
768767
769768 static const AVFilterPad showwaves_outputs[] = {
@@ -772,7 +771,6 @@ static const AVFilterPad showwaves_outputs[] = { · 2 unmodified lines
772771 .type = AVMEDIA_TYPE_VIDEO,
773772 .config_props = config_output,
774773 },
775− { NULL }
776774 };
777775
778776 const AVFilter ff_avf_showwaves = {
@@ -782,9 +780,9 @@ const AVFilter ff_avf_showwaves = { · 3 unmodified lines
782780 .uninit = uninit,
783781 .query_formats = query_formats,
784782 .priv_size = sizeof(ShowWavesContext),
785− .inputs = showwaves_inputs,
783+ FILTER_INPUTS(showwaves_inputs),
786784 .activate = activate,
787− .outputs = showwaves_outputs,
785+ FILTER_OUTPUTS(showwaves_outputs),
788786 .priv_class = &showwaves_class,
789787 };
790788
@@ -877,7 +875,6 @@ static const AVFilterPad showwavespic_inputs[] = { · 86 unmodified lines
877875 .config_props = showwavespic_config_input,
878876 .filter_frame = showwavespic_filter_frame,
879877 },
880− { NULL }
881878 };
882879
883880 static const AVFilterPad showwavespic_outputs[] = {
@@ -887,7 +884,6 @@ static const AVFilterPad showwavespic_outputs[] = { · 3 unmodified lines
887884 .config_props = config_output,
888885 .request_frame = request_frame,
889886 },
890− { NULL }
891887 };
892888
893889 const AVFilter ff_avf_showwavespic = {
@@ -897,8 +893,8 @@ const AVFilter ff_avf_showwavespic = { · 3 unmodified lines
897893 .uninit = uninit,
898894 .query_formats = query_formats,
899895 .priv_size = sizeof(ShowWavesContext),
900− .inputs = showwavespic_inputs,
901− .outputs = showwavespic_outputs,
896+ FILTER_INPUTS(showwavespic_inputs),
897+ FILTER_OUTPUTS(showwavespic_outputs),
902898 .priv_class = &showwavespic_class,
903899 };
904900
libavfilter/avfilter.c+12−6
@@ -540,14 +540,20 @@ int avfilter_process_command(AVFilterContext *filter, const char *cmd, const cha · 539 unmodified lines
540540
541541 int avfilter_pad_count(const AVFilterPad *pads)
542542 {
543− int count;
543+ const AVFilter *filter;
544+ void *opaque = NULL;
544545
545546 if (!pads)
546547 return 0;
547548
548− for (count = 0; pads->name; count++)
549− pads++;
550− return count;
549+ while (filter = av_filter_iterate(&opaque)) {
550+ if (pads == filter->inputs)
551+ return filter->nb_inputs;
552+ if (pads == filter->outputs)
553+ return filter->nb_outputs;
554+ }
555+
556+ av_assert0(!"AVFilterPad list not from a filter");
551557 }
552558
553559 static const char *default_filter_name(void *filter_ctx)
@@ -650,7 +656,7 @@ AVFilterContext *ff_filter_alloc(const AVFilter *filter, const char *inst_name) · 96 unmodified lines
650656 goto err;
651657 ret->internal->execute = default_execute;
652658
653− ret->nb_inputs = avfilter_pad_count(filter->inputs);
659+ ret->nb_inputs = filter->nb_inputs;
654660 if (ret->nb_inputs ) {
655661 ret->input_pads = av_memdup(filter->inputs, ret->nb_inputs * sizeof(*filter->inputs));
656662 if (!ret->input_pads)
@@ -660,7 +666,7 @@ AVFilterContext *ff_filter_alloc(const AVFilter *filter, const char *inst_name) · 3 unmodified lines
660666 goto err;
661667 }
662668
663− ret->nb_outputs = avfilter_pad_count(filter->outputs);
669+ ret->nb_outputs = filter->nb_outputs;
664670 if (ret->nb_outputs) {
665671 ret->output_pads = av_memdup(filter->outputs, ret->nb_outputs * sizeof(*filter->outputs));
666672 if (!ret->output_pads)
libavfilter/avfilter.h+14−4
@@ -71,8 +71,7 @@ typedef struct AVFilterFormats AVFilterFormats; · 70 unmodified lines
7171 typedef struct AVFilterChannelLayouts AVFilterChannelLayouts;
7272
7373 /**
74− * Get the number of elements in a NULL-terminated array of AVFilterPads (e.g.
75− * AVFilter.inputs/outputs).
74+ * Get the number of elements in an AVFilter's inputs or outputs array.
7675 */
7776 int avfilter_pad_count(const AVFilterPad *pads);
7877
@@ -156,15 +155,16 @@ typedef struct AVFilter { · 77 unmodified lines
156155 const char *description;
157156
158157 /**
159− * List of inputs, terminated by a zeroed element.
158+ * List of static inputs.
160159 *
161160 * NULL if there are no (static) inputs. Instances of filters with
162161 * AVFILTER_FLAG_DYNAMIC_INPUTS set may have more inputs than present in
163162 * this list.
164163 */
165164 const AVFilterPad *inputs;
165+
166166 /**
167− * List of outputs, terminated by a zeroed element.
167+ * List of static outputs.
168168 *
169169 * NULL if there are no (static) outputs. Instances of filters with
170170 * AVFILTER_FLAG_DYNAMIC_OUTPUTS set may have more outputs than present in
@@ -195,6 +195,16 @@ typedef struct AVFilter { · 24 unmodified lines
195195 *****************************************************************
196196 */
197197
198+ /**
199+ * The number of entries in the list of inputs.
200+ */
201+ uint16_t nb_inputs;
202+
203+ /**
204+ * The number of entries in the list of outputs.
205+ */
206+ uint16_t nb_outputs;
207+
198208 /**
199209 * Filter pre-initialization function
200210 *
libavfilter/buffersink.c+2−4
@@ -331,7 +331,6 @@ static const AVFilterPad avfilter_vsink_buffer_inputs[] = { · 330 unmodified lines
331331 .name = "default",
332332 .type = AVMEDIA_TYPE_VIDEO,
333333 },
334− { NULL }
335334 };
336335
337336 const AVFilter ff_vsink_buffer = {
@@ -342,7 +341,7 @@ const AVFilter ff_vsink_buffer = { · 4 unmodified lines
342341 .init = common_init,
343342 .query_formats = vsink_query_formats,
344343 .activate = activate,
345− .inputs = avfilter_vsink_buffer_inputs,
344+ FILTER_INPUTS(avfilter_vsink_buffer_inputs),
346345 .outputs = NULL,
347346 };
348347
@@ -351,7 +350,6 @@ static const AVFilterPad avfilter_asink_abuffer_inputs[] = { · 2 unmodified lines
351350 .name = "default",
352351 .type = AVMEDIA_TYPE_AUDIO,
353352 },
354− { NULL }
355353 };
356354
357355 const AVFilter ff_asink_abuffer = {
@@ -362,6 +360,6 @@ const AVFilter ff_asink_abuffer = { · 4 unmodified lines
362360 .init = common_init,
363361 .query_formats = asink_query_formats,
364362 .activate = activate,
365− .inputs = avfilter_asink_abuffer_inputs,
363+ FILTER_INPUTS(avfilter_asink_abuffer_inputs),
366364 .outputs = NULL,
367365 };
libavfilter/buffersrc.c+2−4
@@ -434,7 +434,6 @@ static const AVFilterPad avfilter_vsrc_buffer_outputs[] = { · 433 unmodified lines
434434 .request_frame = request_frame,
435435 .config_props = config_props,
436436 },
437− { NULL }
438437 };
439438
440439 const AVFilter ff_vsrc_buffer = {
@@ -447,7 +446,7 @@ const AVFilter ff_vsrc_buffer = { · 6 unmodified lines
447446 .uninit = uninit,
448447
449448 .inputs = NULL,
450− .outputs = avfilter_vsrc_buffer_outputs,
449+ FILTER_OUTPUTS(avfilter_vsrc_buffer_outputs),
451450 .priv_class = &buffer_class,
452451 };
453452
@@ -458,7 +457,6 @@ static const AVFilterPad avfilter_asrc_abuffer_outputs[] = { · 4 unmodified lines
458457 .request_frame = request_frame,
459458 .config_props = config_props,
460459 },
461− { NULL }
462460 };
463461
464462 const AVFilter ff_asrc_abuffer = {
@@ -471,6 +469,6 @@ const AVFilter ff_asrc_abuffer = { · 6 unmodified lines
471469 .uninit = uninit,
472470
473471 .inputs = NULL,
474− .outputs = avfilter_asrc_abuffer_outputs,
472+ FILTER_OUTPUTS(avfilter_asrc_abuffer_outputs),
475473 .priv_class = &abuffer_class,
476474 };
libavfilter/f_bench.c+4−8
@@ -96,7 +96,6 @@ static const AVFilterPad bench_inputs[] = { · 95 unmodified lines
9696 .type = AVMEDIA_TYPE_VIDEO,
9797 .filter_frame = filter_frame,
9898 },
99− { NULL }
10099 };
101100
102101 static const AVFilterPad bench_outputs[] = {
@@ -104,7 +103,6 @@ static const AVFilterPad bench_outputs[] = { · 1 unmodified line
104103 .name = "default",
105104 .type = AVMEDIA_TYPE_VIDEO,
106105 },
107− { NULL }
108106 };
109107
110108 const AVFilter ff_vf_bench = {
@@ -112,8 +110,8 @@ const AVFilter ff_vf_bench = { · 1 unmodified line
112110 .description = NULL_IF_CONFIG_SMALL("Benchmark part of a filtergraph."),
113111 .priv_size = sizeof(BenchContext),
114112 .init = init,
115− .inputs = bench_inputs,
116− .outputs = bench_outputs,
113+ FILTER_INPUTS(bench_inputs),
114+ FILTER_OUTPUTS(bench_outputs),
117115 .priv_class = &bench_class,
118116 };
119117 #endif /* CONFIG_BENCH_FILTER */
@@ -128,7 +126,6 @@ static const AVFilterPad abench_inputs[] = { · 8 unmodified lines
128126 .type = AVMEDIA_TYPE_AUDIO,
129127 .filter_frame = filter_frame,
130128 },
131− { NULL }
132129 };
133130
134131 static const AVFilterPad abench_outputs[] = {
@@ -136,7 +133,6 @@ static const AVFilterPad abench_outputs[] = { · 1 unmodified line
136133 .name = "default",
137134 .type = AVMEDIA_TYPE_AUDIO,
138135 },
139− { NULL }
140136 };
141137
142138 const AVFilter ff_af_abench = {
@@ -144,8 +140,8 @@ const AVFilter ff_af_abench = { · 1 unmodified line
144140 .description = NULL_IF_CONFIG_SMALL("Benchmark part of a filtergraph."),
145141 .priv_size = sizeof(BenchContext),
146142 .init = init,
147− .inputs = abench_inputs,
148− .outputs = abench_outputs,
143+ FILTER_INPUTS(abench_inputs),
144+ FILTER_OUTPUTS(abench_outputs),
149145 .priv_class = &abench_class,
150146 };
151147 #endif /* CONFIG_ABENCH_FILTER */
libavfilter/f_cue.c+4−8
@@ -103,7 +103,6 @@ static const AVFilterPad cue_inputs[] = { · 102 unmodified lines
103103 .name = "default",
104104 .type = AVMEDIA_TYPE_VIDEO,
105105 },
106− { NULL }
107106 };
108107
109108 static const AVFilterPad cue_outputs[] = {
@@ -111,7 +110,6 @@ static const AVFilterPad cue_outputs[] = { · 1 unmodified line
111110 .name = "default",
112111 .type = AVMEDIA_TYPE_VIDEO,
113112 },
114− { NULL }
115113 };
116114
117115 const AVFilter ff_vf_cue = {
@@ -119,8 +117,8 @@ const AVFilter ff_vf_cue = { · 1 unmodified line
119117 .description = NULL_IF_CONFIG_SMALL("Delay filtering to match a cue."),
120118 .priv_size = sizeof(CueContext),
121119 .priv_class = &cue_class,
122− .inputs = cue_inputs,
123− .outputs = cue_outputs,
120+ FILTER_INPUTS(cue_inputs),
121+ FILTER_OUTPUTS(cue_outputs),
124122 .activate = activate,
125123 };
126124 #endif /* CONFIG_CUE_FILTER */
@@ -134,7 +132,6 @@ static const AVFilterPad acue_inputs[] = { · 7 unmodified lines
134132 .name = "default",
135133 .type = AVMEDIA_TYPE_AUDIO,
136134 },
137− { NULL }
138135 };
139136
140137 static const AVFilterPad acue_outputs[] = {
@@ -142,7 +139,6 @@ static const AVFilterPad acue_outputs[] = { · 1 unmodified line
142139 .name = "default",
143140 .type = AVMEDIA_TYPE_AUDIO,
144141 },
145− { NULL }
146142 };
147143
148144 const AVFilter ff_af_acue = {
@@ -150,8 +146,8 @@ const AVFilter ff_af_acue = { · 1 unmodified line
150146 .description = NULL_IF_CONFIG_SMALL("Delay filtering to match a cue."),
151147 .priv_size = sizeof(CueContext),
152148 .priv_class = &acue_class,
153− .inputs = acue_inputs,
154− .outputs = acue_outputs,
149+ FILTER_INPUTS(acue_inputs),
150+ FILTER_OUTPUTS(acue_outputs),
155151 .activate = activate,
156152 };
157153 #endif /* CONFIG_ACUE_FILTER */
libavfilter/f_drawgraph.c+4−8
@@ -458,7 +458,6 @@ static const AVFilterPad drawgraph_inputs[] = { · 457 unmodified lines
458458 .type = AVMEDIA_TYPE_VIDEO,
459459 .filter_frame = filter_frame,
460460 },
461− { NULL }
462461 };
463462
464463 static const AVFilterPad drawgraph_outputs[] = {
@@ -468,7 +467,6 @@ static const AVFilterPad drawgraph_outputs[] = { · 3 unmodified lines
468467 .config_props = config_output,
469468 .request_frame = request_frame,
470469 },
471− { NULL }
472470 };
473471
474472 const AVFilter ff_vf_drawgraph = {
@@ -479,8 +477,8 @@ const AVFilter ff_vf_drawgraph = { · 4 unmodified lines
479477 .query_formats = query_formats,
480478 .init = init,
481479 .uninit = uninit,
482− .inputs = drawgraph_inputs,
483− .outputs = drawgraph_outputs,
480+ FILTER_INPUTS(drawgraph_inputs),
481+ FILTER_OUTPUTS(drawgraph_outputs),
484482 };
485483
486484 #endif // CONFIG_DRAWGRAPH_FILTER
@@ -496,7 +494,6 @@ static const AVFilterPad adrawgraph_inputs[] = { · 9 unmodified lines
496494 .type = AVMEDIA_TYPE_AUDIO,
497495 .filter_frame = filter_frame,
498496 },
499− { NULL }
500497 };
501498
502499 static const AVFilterPad adrawgraph_outputs[] = {
@@ -506,7 +503,6 @@ static const AVFilterPad adrawgraph_outputs[] = { · 3 unmodified lines
506503 .config_props = config_output,
507504 .request_frame = request_frame,
508505 },
509− { NULL }
510506 };
511507
512508 const AVFilter ff_avf_adrawgraph = {
@@ -517,7 +513,7 @@ const AVFilter ff_avf_adrawgraph = { · 4 unmodified lines
517513 .query_formats = query_formats,
518514 .init = init,
519515 .uninit = uninit,
520− .inputs = adrawgraph_inputs,
521− .outputs = adrawgraph_outputs,
516+ FILTER_INPUTS(adrawgraph_inputs),
517+ FILTER_OUTPUTS(adrawgraph_outputs),
522518 };
523519 #endif // CONFIG_ADRAWGRAPH_FILTER
libavfilter/f_ebur128.c+1−2
@@ -1017,7 +1017,6 @@ static const AVFilterPad ebur128_inputs[] = { · 1016 unmodified lines
10171017 .filter_frame = filter_frame,
10181018 .config_props = config_audio_input,
10191019 },
1020− { NULL }
10211020 };
10221021
10231022 const AVFilter ff_af_ebur128 = {
@@ -1027,7 +1026,7 @@ const AVFilter ff_af_ebur128 = { · 3 unmodified lines
10271026 .init = init,
10281027 .uninit = uninit,
10291028 .query_formats = query_formats,
1030− .inputs = ebur128_inputs,
1029+ FILTER_INPUTS(ebur128_inputs),
10311030 .outputs = NULL,
10321031 .priv_class = &ebur128_class,
10331032 .flags = AVFILTER_FLAG_DYNAMIC_OUTPUTS,
libavfilter/f_graphmonitor.c+4−8
@@ -395,7 +395,6 @@ static const AVFilterPad graphmonitor_inputs[] = { · 394 unmodified lines
395395 .name = "default",
396396 .type = AVMEDIA_TYPE_VIDEO,
397397 },
398− { NULL }
399398 };
400399
401400 static const AVFilterPad graphmonitor_outputs[] = {
@@ -404,7 +403,6 @@ static const AVFilterPad graphmonitor_outputs[] = { · 2 unmodified lines
404403 .type = AVMEDIA_TYPE_VIDEO,
405404 .config_props = config_output,
406405 },
407− { NULL }
408406 };
409407
410408 const AVFilter ff_vf_graphmonitor = {
@@ -414,8 +412,8 @@ const AVFilter ff_vf_graphmonitor = { · 3 unmodified lines
414412 .priv_class = &graphmonitor_class,
415413 .query_formats = query_formats,
416414 .activate = activate,
417− .inputs = graphmonitor_inputs,
418− .outputs = graphmonitor_outputs,
415+ FILTER_INPUTS(graphmonitor_inputs),
416+ FILTER_OUTPUTS(graphmonitor_outputs),
419417 };
420418
421419 #endif // CONFIG_GRAPHMONITOR_FILTER
@@ -430,7 +428,6 @@ static const AVFilterPad agraphmonitor_inputs[] = { · 8 unmodified lines
430428 .name = "default",
431429 .type = AVMEDIA_TYPE_AUDIO,
432430 },
433− { NULL }
434431 };
435432
436433 static const AVFilterPad agraphmonitor_outputs[] = {
@@ -439,7 +436,6 @@ static const AVFilterPad agraphmonitor_outputs[] = { · 2 unmodified lines
439436 .type = AVMEDIA_TYPE_VIDEO,
440437 .config_props = config_output,
441438 },
442− { NULL }
443439 };
444440
445441 const AVFilter ff_avf_agraphmonitor = {
@@ -449,7 +445,7 @@ const AVFilter ff_avf_agraphmonitor = { · 3 unmodified lines
449445 .priv_class = &agraphmonitor_class,
450446 .query_formats = query_formats,
451447 .activate = activate,
452− .inputs = agraphmonitor_inputs,
453− .outputs = agraphmonitor_outputs,
448+ FILTER_INPUTS(agraphmonitor_inputs),
449+ FILTER_OUTPUTS(agraphmonitor_outputs),
454450 };
455451 #endif // CONFIG_AGRAPHMONITOR_FILTER
libavfilter/f_interleave.c+2−4
@@ -235,7 +235,6 @@ static const AVFilterPad interleave_outputs[] = { · 234 unmodified lines
235235 .type = AVMEDIA_TYPE_VIDEO,
236236 .config_props = config_output,
237237 },
238− { NULL }
239238 };
240239
241240 const AVFilter ff_vf_interleave = {
@@ -245,7 +244,7 @@ const AVFilter ff_vf_interleave = { · 3 unmodified lines
245244 .init = init,
246245 .uninit = uninit,
247246 .activate = activate,
248− .outputs = interleave_outputs,
247+ FILTER_OUTPUTS(interleave_outputs),
249248 .priv_class = &interleave_class,
250249 .flags = AVFILTER_FLAG_DYNAMIC_INPUTS,
251250 };
@@ -263,7 +262,6 @@ static const AVFilterPad ainterleave_outputs[] = { · 11 unmodified lines
263262 .type = AVMEDIA_TYPE_AUDIO,
264263 .config_props = config_output,
265264 },
266− { NULL }
267265 };
268266
269267 const AVFilter ff_af_ainterleave = {
@@ -273,7 +271,7 @@ const AVFilter ff_af_ainterleave = { · 3 unmodified lines
273271 .init = init,
274272 .uninit = uninit,
275273 .activate = activate,
276− .outputs = ainterleave_outputs,
274+ FILTER_OUTPUTS(ainterleave_outputs),
277275 .priv_class = &ainterleave_class,
278276 .flags = AVFILTER_FLAG_DYNAMIC_INPUTS,
279277 };
libavfilter/f_loop.c+4−8
@@ -269,7 +269,6 @@ static const AVFilterPad ainputs[] = { · 268 unmodified lines
269269 .type = AVMEDIA_TYPE_AUDIO,
270270 .config_props = aconfig_input,
271271 },
272− { NULL }
273272 };
274273
275274 static const AVFilterPad aoutputs[] = {
@@ -277,7 +276,6 @@ static const AVFilterPad aoutputs[] = { · 1 unmodified line
277276 .name = "default",
278277 .type = AVMEDIA_TYPE_AUDIO,
279278 },
280− { NULL }
281279 };
282280
283281 const AVFilter ff_af_aloop = {
@@ -287,8 +285,8 @@ const AVFilter ff_af_aloop = { · 3 unmodified lines
287285 .priv_class = &aloop_class,
288286 .activate = aactivate,
289287 .uninit = auninit,
290− .inputs = ainputs,
291− .outputs = aoutputs,
288+ FILTER_INPUTS(ainputs),
289+ FILTER_OUTPUTS(aoutputs),
292290 };
293291 #endif /* CONFIG_ALOOP_FILTER */
294292
@@ -442,7 +440,6 @@ static const AVFilterPad inputs[] = { · 147 unmodified lines
442440 .name = "default",
443441 .type = AVMEDIA_TYPE_VIDEO,
444442 },
445− { NULL }
446443 };
447444
448445 static const AVFilterPad outputs[] = {
@@ -450,7 +447,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
450447 .name = "default",
451448 .type = AVMEDIA_TYPE_VIDEO,
452449 },
453− { NULL }
454450 };
455451
456452 const AVFilter ff_vf_loop = {
@@ -461,7 +457,7 @@ const AVFilter ff_vf_loop = { · 4 unmodified lines
461457 .init = init,
462458 .uninit = uninit,
463459 .activate = activate,
464− .inputs = inputs,
465− .outputs = outputs,
460+ FILTER_INPUTS(inputs),
461+ FILTER_OUTPUTS(outputs),
466462 };
467463 #endif /* CONFIG_LOOP_FILTER */
libavfilter/f_metadata.c+4−8
@@ -373,7 +373,6 @@ static const AVFilterPad ainputs[] = { · 372 unmodified lines
373373 .type = AVMEDIA_TYPE_AUDIO,
374374 .filter_frame = filter_frame,
375375 },
376− { NULL }
377376 };
378377
379378 static const AVFilterPad aoutputs[] = {
@@ -381,7 +380,6 @@ static const AVFilterPad aoutputs[] = { · 1 unmodified line
381380 .name = "default",
382381 .type = AVMEDIA_TYPE_AUDIO,
383382 },
384− { NULL }
385383 };
386384
387385 const AVFilter ff_af_ametadata = {
@@ -391,8 +389,8 @@ const AVFilter ff_af_ametadata = { · 3 unmodified lines
391389 .priv_class = &ametadata_class,
392390 .init = init,
393391 .uninit = uninit,
394− .inputs = ainputs,
395− .outputs = aoutputs,
392+ FILTER_INPUTS(ainputs),
393+ FILTER_OUTPUTS(aoutputs),
396394 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
397395 };
398396 #endif /* CONFIG_AMETADATA_FILTER */
@@ -408,7 +406,6 @@ static const AVFilterPad inputs[] = { · 9 unmodified lines
408406 .type = AVMEDIA_TYPE_VIDEO,
409407 .filter_frame = filter_frame,
410408 },
411− { NULL }
412409 };
413410
414411 static const AVFilterPad outputs[] = {
@@ -416,7 +413,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
416413 .name = "default",
417414 .type = AVMEDIA_TYPE_VIDEO,
418415 },
419− { NULL }
420416 };
421417
422418 const AVFilter ff_vf_metadata = {
@@ -426,8 +422,8 @@ const AVFilter ff_vf_metadata = { · 3 unmodified lines
426422 .priv_class = &metadata_class,
427423 .init = init,
428424 .uninit = uninit,
429− .inputs = inputs,
430− .outputs = outputs,
425+ FILTER_INPUTS(inputs),
426+ FILTER_OUTPUTS(outputs),
431427 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
432428 };
433429 #endif /* CONFIG_METADATA_FILTER */
libavfilter/f_perms.c+4−8
@@ -122,7 +122,6 @@ static const AVFilterPad aperms_inputs[] = { · 121 unmodified lines
122122 .type = AVMEDIA_TYPE_AUDIO,
123123 .filter_frame = filter_frame,
124124 },
125− { NULL }
126125 };
127126
128127 static const AVFilterPad aperms_outputs[] = {
@@ -130,7 +129,6 @@ static const AVFilterPad aperms_outputs[] = { · 1 unmodified line
130129 .name = "default",
131130 .type = AVMEDIA_TYPE_AUDIO,
132131 },
133− { NULL }
134132 };
135133
136134 const AVFilter ff_af_aperms = {
@@ -138,8 +136,8 @@ const AVFilter ff_af_aperms = { · 1 unmodified line
138136 .description = NULL_IF_CONFIG_SMALL("Set permissions for the output audio frame."),
139137 .init = init,
140138 .priv_size = sizeof(PermsContext),
141− .inputs = aperms_inputs,
142− .outputs = aperms_outputs,
139+ FILTER_INPUTS(aperms_inputs),
140+ FILTER_OUTPUTS(aperms_outputs),
143141 .priv_class = &aperms_class,
144142 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
145143 };
@@ -156,7 +154,6 @@ static const AVFilterPad perms_inputs[] = { · 10 unmodified lines
156154 .type = AVMEDIA_TYPE_VIDEO,
157155 .filter_frame = filter_frame,
158156 },
159− { NULL }
160157 };
161158
162159 static const AVFilterPad perms_outputs[] = {
@@ -164,7 +161,6 @@ static const AVFilterPad perms_outputs[] = { · 1 unmodified line
164161 .name = "default",
165162 .type = AVMEDIA_TYPE_VIDEO,
166163 },
167− { NULL }
168164 };
169165
170166 const AVFilter ff_vf_perms = {
@@ -172,8 +168,8 @@ const AVFilter ff_vf_perms = { · 1 unmodified line
172168 .description = NULL_IF_CONFIG_SMALL("Set permissions for the output video frame."),
173169 .init = init,
174170 .priv_size = sizeof(PermsContext),
175− .inputs = perms_inputs,
176− .outputs = perms_outputs,
171+ FILTER_INPUTS(perms_inputs),
172+ FILTER_OUTPUTS(perms_outputs),
177173 .priv_class = &perms_class,
178174 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
179175 };
libavfilter/f_realtime.c+4−8
@@ -81,7 +81,6 @@ static const AVFilterPad avfilter_vf_realtime_inputs[] = { · 80 unmodified lines
8181 .type = AVMEDIA_TYPE_VIDEO,
8282 .filter_frame = filter_frame,
8383 },
84− { NULL }
8584 };
8685
8786 static const AVFilterPad avfilter_vf_realtime_outputs[] = {
@@ -89,7 +88,6 @@ static const AVFilterPad avfilter_vf_realtime_outputs[] = { · 1 unmodified line
8988 .name = "default",
9089 .type = AVMEDIA_TYPE_VIDEO,
9190 },
92− { NULL }
9391 };
9492
9593 const AVFilter ff_vf_realtime = {
@@ -97,8 +95,8 @@ const AVFilter ff_vf_realtime = { · 1 unmodified line
9795 .description = NULL_IF_CONFIG_SMALL("Slow down filtering to match realtime."),
9896 .priv_size = sizeof(RealtimeContext),
9997 .priv_class = &realtime_class,
100− .inputs = avfilter_vf_realtime_inputs,
101− .outputs = avfilter_vf_realtime_outputs,
98+ FILTER_INPUTS(avfilter_vf_realtime_inputs),
99+ FILTER_OUTPUTS(avfilter_vf_realtime_outputs),
102100 };
103101 #endif /* CONFIG_REALTIME_FILTER */
104102
@@ -113,7 +111,6 @@ static const AVFilterPad arealtime_inputs[] = { · 8 unmodified lines
113111 .type = AVMEDIA_TYPE_AUDIO,
114112 .filter_frame = filter_frame,
115113 },
116− { NULL }
117114 };
118115
119116 static const AVFilterPad arealtime_outputs[] = {
@@ -121,7 +118,6 @@ static const AVFilterPad arealtime_outputs[] = { · 1 unmodified line
121118 .name = "default",
122119 .type = AVMEDIA_TYPE_AUDIO,
123120 },
124− { NULL }
125121 };
126122
127123 const AVFilter ff_af_arealtime = {
@@ -129,7 +125,7 @@ const AVFilter ff_af_arealtime = { · 1 unmodified line
129125 .description = NULL_IF_CONFIG_SMALL("Slow down filtering to match realtime."),
130126 .priv_size = sizeof(RealtimeContext),
131127 .priv_class = &arealtime_class,
132− .inputs = arealtime_inputs,
133− .outputs = arealtime_outputs,
128+ FILTER_INPUTS(arealtime_inputs),
129+ FILTER_OUTPUTS(arealtime_outputs),
134130 };
135131 #endif /* CONFIG_AREALTIME_FILTER */
libavfilter/f_reverse.c+4−8
@@ -121,7 +121,6 @@ static const AVFilterPad reverse_inputs[] = { · 120 unmodified lines
121121 .type = AVMEDIA_TYPE_VIDEO,
122122 .filter_frame = filter_frame,
123123 },
124− { NULL }
125124 };
126125
127126 static const AVFilterPad reverse_outputs[] = {
@@ -130,7 +129,6 @@ static const AVFilterPad reverse_outputs[] = { · 2 unmodified lines
130129 .type = AVMEDIA_TYPE_VIDEO,
131130 .request_frame = request_frame,
132131 },
133− { NULL }
134132 };
135133
136134 const AVFilter ff_vf_reverse = {
@@ -139,8 +137,8 @@ const AVFilter ff_vf_reverse = { · 2 unmodified lines
139137 .priv_size = sizeof(ReverseContext),
140138 .init = init,
141139 .uninit = uninit,
142− .inputs = reverse_inputs,
143− .outputs = reverse_outputs,
140+ FILTER_INPUTS(reverse_inputs),
141+ FILTER_OUTPUTS(reverse_outputs),
144142 };
145143
146144 #endif /* CONFIG_REVERSE_FILTER */
@@ -272,7 +270,6 @@ static const AVFilterPad areverse_inputs[] = { · 125 unmodified lines
272270 .flags = AVFILTERPAD_FLAG_NEEDS_WRITABLE,
273271 .filter_frame = filter_frame,
274272 },
275− { NULL }
276273 };
277274
278275 static const AVFilterPad areverse_outputs[] = {
@@ -281,7 +278,6 @@ static const AVFilterPad areverse_outputs[] = { · 2 unmodified lines
281278 .type = AVMEDIA_TYPE_AUDIO,
282279 .request_frame = areverse_request_frame,
283280 },
284− { NULL }
285281 };
286282
287283 const AVFilter ff_af_areverse = {
@@ -291,8 +287,8 @@ const AVFilter ff_af_areverse = { · 3 unmodified lines
291287 .priv_size = sizeof(ReverseContext),
292288 .init = init,
293289 .uninit = uninit,
294− .inputs = areverse_inputs,
295− .outputs = areverse_outputs,
290+ FILTER_INPUTS(areverse_inputs),
291+ FILTER_OUTPUTS(areverse_outputs),
296292 };
297293
298294 #endif /* CONFIG_AREVERSE_FILTER */
libavfilter/f_segment.c+2−4
@@ -277,7 +277,6 @@ static const AVFilterPad segment_inputs[] = { · 276 unmodified lines
277277 .type = AVMEDIA_TYPE_VIDEO,
278278 .config_props = config_input,
279279 },
280− { NULL }
281280 };
282281
283282 const AVFilter ff_vf_segment = {
@@ -288,7 +287,7 @@ const AVFilter ff_vf_segment = { · 4 unmodified lines
288287 .priv_size = sizeof(SegmentContext),
289288 .priv_class = &segment_class,
290289 .activate = activate,
291− .inputs = segment_inputs,
290+ FILTER_INPUTS(segment_inputs),
292291 .outputs = NULL,
293292 .flags = AVFILTER_FLAG_DYNAMIC_OUTPUTS,
294293 };
@@ -317,7 +316,6 @@ static const AVFilterPad asegment_inputs[] = { · 22 unmodified lines
317316 .type = AVMEDIA_TYPE_AUDIO,
318317 .config_props = config_input,
319318 },
320− { NULL }
321319 };
322320
323321 const AVFilter ff_af_asegment = {
@@ -328,7 +326,7 @@ const AVFilter ff_af_asegment = { · 4 unmodified lines
328326 .priv_size = sizeof(SegmentContext),
329327 .priv_class = &asegment_class,
330328 .activate = activate,
331− .inputs = asegment_inputs,
329+ FILTER_INPUTS(asegment_inputs),
332330 .outputs = NULL,
333331 .flags = AVFILTER_FLAG_DYNAMIC_OUTPUTS,
334332 };
libavfilter/f_select.c+2−4
@@ -473,7 +473,6 @@ static const AVFilterPad avfilter_af_aselect_inputs[] = { · 472 unmodified lines
473473 .config_props = config_input,
474474 .filter_frame = filter_frame,
475475 },
476− { NULL }
477476 };
478477
479478 const AVFilter ff_af_aselect = {
@@ -482,7 +481,7 @@ const AVFilter ff_af_aselect = { · 2 unmodified lines
482481 .init = aselect_init,
483482 .uninit = uninit,
484483 .priv_size = sizeof(SelectContext),
485− .inputs = avfilter_af_aselect_inputs,
484+ FILTER_INPUTS(avfilter_af_aselect_inputs),
486485 .priv_class = &aselect_class,
487486 .flags = AVFILTER_FLAG_DYNAMIC_OUTPUTS,
488487 };
@@ -529,7 +528,6 @@ static const AVFilterPad avfilter_vf_select_inputs[] = { · 40 unmodified lines
529528 .config_props = config_input,
530529 .filter_frame = filter_frame,
531530 },
532− { NULL }
533531 };
534532
535533 const AVFilter ff_vf_select = {
@@ -540,7 +538,7 @@ const AVFilter ff_vf_select = { · 4 unmodified lines
540538 .query_formats = query_formats,
541539 .priv_size = sizeof(SelectContext),
542540 .priv_class = &select_class,
543− .inputs = avfilter_vf_select_inputs,
541+ FILTER_INPUTS(avfilter_vf_select_inputs),
544542 .flags = AVFILTER_FLAG_DYNAMIC_OUTPUTS,
545543 };
546544 #endif /* CONFIG_SELECT_FILTER */
libavfilter/f_sendcmd.c+4−8
@@ -583,7 +583,6 @@ static const AVFilterPad sendcmd_inputs[] = { · 582 unmodified lines
583583 .type = AVMEDIA_TYPE_VIDEO,
584584 .filter_frame = filter_frame,
585585 },
586− { NULL }
587586 };
588587
589588 static const AVFilterPad sendcmd_outputs[] = {
@@ -591,7 +590,6 @@ static const AVFilterPad sendcmd_outputs[] = { · 1 unmodified line
591590 .name = "default",
592591 .type = AVMEDIA_TYPE_VIDEO,
593592 },
594− { NULL }
595593 };
596594
597595 const AVFilter ff_vf_sendcmd = {
@@ -600,8 +598,8 @@ const AVFilter ff_vf_sendcmd = { · 2 unmodified lines
600598 .init = init,
601599 .uninit = uninit,
602600 .priv_size = sizeof(SendCmdContext),
603− .inputs = sendcmd_inputs,
604− .outputs = sendcmd_outputs,
601+ FILTER_INPUTS(sendcmd_inputs),
602+ FILTER_OUTPUTS(sendcmd_outputs),
605603 .priv_class = &sendcmd_class,
606604 };
607605
@@ -618,7 +616,6 @@ static const AVFilterPad asendcmd_inputs[] = { · 10 unmodified lines
618616 .type = AVMEDIA_TYPE_AUDIO,
619617 .filter_frame = filter_frame,
620618 },
621− { NULL }
622619 };
623620
624621 static const AVFilterPad asendcmd_outputs[] = {
@@ -626,7 +623,6 @@ static const AVFilterPad asendcmd_outputs[] = { · 1 unmodified line
626623 .name = "default",
627624 .type = AVMEDIA_TYPE_AUDIO,
628625 },
629− { NULL }
630626 };
631627
632628 const AVFilter ff_af_asendcmd = {
@@ -635,8 +631,8 @@ const AVFilter ff_af_asendcmd = { · 2 unmodified lines
635631 .init = init,
636632 .uninit = uninit,
637633 .priv_size = sizeof(SendCmdContext),
638− .inputs = asendcmd_inputs,
639− .outputs = asendcmd_outputs,
634+ FILTER_INPUTS(asendcmd_inputs),
635+ FILTER_OUTPUTS(asendcmd_outputs),
640636 .priv_class = &asendcmd_class,
641637 };
642638
libavfilter/f_sidedata.c+4−8
@@ -130,7 +130,6 @@ static const AVFilterPad ainputs[] = { · 129 unmodified lines
130130 .type = AVMEDIA_TYPE_AUDIO,
131131 .filter_frame = filter_frame,
132132 },
133− { NULL }
134133 };
135134
136135 static const AVFilterPad aoutputs[] = {
@@ -138,7 +137,6 @@ static const AVFilterPad aoutputs[] = { · 1 unmodified line
138137 .name = "default",
139138 .type = AVMEDIA_TYPE_AUDIO,
140139 },
141− { NULL }
142140 };
143141
144142 const AVFilter ff_af_asidedata = {
@@ -147,8 +145,8 @@ const AVFilter ff_af_asidedata = { · 2 unmodified lines
147145 .priv_size = sizeof(SideDataContext),
148146 .priv_class = &asidedata_class,
149147 .init = init,
150− .inputs = ainputs,
151− .outputs = aoutputs,
148+ FILTER_INPUTS(ainputs),
149+ FILTER_OUTPUTS(aoutputs),
152150 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
153151 };
154152 #endif /* CONFIG_ASIDEDATA_FILTER */
@@ -164,7 +162,6 @@ static const AVFilterPad inputs[] = { · 9 unmodified lines
164162 .type = AVMEDIA_TYPE_VIDEO,
165163 .filter_frame = filter_frame,
166164 },
167− { NULL }
168165 };
169166
170167 static const AVFilterPad outputs[] = {
@@ -172,7 +169,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
172169 .name = "default",
173170 .type = AVMEDIA_TYPE_VIDEO,
174171 },
175− { NULL }
176172 };
177173
178174 const AVFilter ff_vf_sidedata = {
@@ -181,8 +177,8 @@ const AVFilter ff_vf_sidedata = { · 2 unmodified lines
181177 .priv_size = sizeof(SideDataContext),
182178 .priv_class = &sidedata_class,
183179 .init = init,
184− .inputs = inputs,
185− .outputs = outputs,
180+ FILTER_INPUTS(inputs),
181+ FILTER_OUTPUTS(outputs),
186182 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
187183 };
188184 #endif /* CONFIG_SIDEDATA_FILTER */
libavfilter/f_zmq.c+4−8
@@ -214,7 +214,6 @@ static const AVFilterPad zmq_inputs[] = { · 213 unmodified lines
214214 .type = AVMEDIA_TYPE_VIDEO,
215215 .filter_frame = filter_frame,
216216 },
217− { NULL }
218217 };
219218
220219 static const AVFilterPad zmq_outputs[] = {
@@ -222,7 +221,6 @@ static const AVFilterPad zmq_outputs[] = { · 1 unmodified line
222221 .name = "default",
223222 .type = AVMEDIA_TYPE_VIDEO,
224223 },
225− { NULL }
226224 };
227225
228226 const AVFilter ff_vf_zmq = {
@@ -231,8 +229,8 @@ const AVFilter ff_vf_zmq = { · 2 unmodified lines
231229 .init = init,
232230 .uninit = uninit,
233231 .priv_size = sizeof(ZMQContext),
234− .inputs = zmq_inputs,
235− .outputs = zmq_outputs,
232+ FILTER_INPUTS(zmq_inputs),
233+ FILTER_OUTPUTS(zmq_outputs),
236234 .priv_class = &zmq_class,
237235 };
238236
@@ -249,7 +247,6 @@ static const AVFilterPad azmq_inputs[] = { · 10 unmodified lines
249247 .type = AVMEDIA_TYPE_AUDIO,
250248 .filter_frame = filter_frame,
251249 },
252− { NULL }
253250 };
254251
255252 static const AVFilterPad azmq_outputs[] = {
@@ -257,7 +254,6 @@ static const AVFilterPad azmq_outputs[] = { · 1 unmodified line
257254 .name = "default",
258255 .type = AVMEDIA_TYPE_AUDIO,
259256 },
260− { NULL }
261257 };
262258
263259 const AVFilter ff_af_azmq = {
@@ -266,8 +262,8 @@ const AVFilter ff_af_azmq = { · 2 unmodified lines
266262 .init = init,
267263 .uninit = uninit,
268264 .priv_size = sizeof(ZMQContext),
269− .inputs = azmq_inputs,
270− .outputs = azmq_outputs,
265+ FILTER_INPUTS(azmq_inputs),
266+ FILTER_OUTPUTS(azmq_outputs),
271267 .priv_class = &azmq_class,
272268 };
273269
libavfilter/fifo.c+4−8
@@ -116,7 +116,6 @@ static const AVFilterPad avfilter_vf_fifo_inputs[] = { · 115 unmodified lines
116116 .type = AVMEDIA_TYPE_VIDEO,
117117 .filter_frame = add_to_queue,
118118 },
119− { NULL }
120119 };
121120
122121 static const AVFilterPad avfilter_vf_fifo_outputs[] = {
@@ -125,7 +124,6 @@ static const AVFilterPad avfilter_vf_fifo_outputs[] = { · 2 unmodified lines
125124 .type = AVMEDIA_TYPE_VIDEO,
126125 .request_frame = request_frame,
127126 },
128− { NULL }
129127 };
130128
131129 const AVFilter ff_vf_fifo = {
@@ -134,8 +132,8 @@ const AVFilter ff_vf_fifo = { · 2 unmodified lines
134132 .init = init,
135133 .uninit = uninit,
136134 .priv_size = sizeof(FifoContext),
137− .inputs = avfilter_vf_fifo_inputs,
138− .outputs = avfilter_vf_fifo_outputs,
135+ FILTER_INPUTS(avfilter_vf_fifo_inputs),
136+ FILTER_OUTPUTS(avfilter_vf_fifo_outputs),
139137 };
140138
141139 static const AVFilterPad avfilter_af_afifo_inputs[] = {
@@ -144,7 +142,6 @@ static const AVFilterPad avfilter_af_afifo_inputs[] = { · 2 unmodified lines
144142 .type = AVMEDIA_TYPE_AUDIO,
145143 .filter_frame = add_to_queue,
146144 },
147− { NULL }
148145 };
149146
150147 static const AVFilterPad avfilter_af_afifo_outputs[] = {
@@ -153,7 +150,6 @@ static const AVFilterPad avfilter_af_afifo_outputs[] = { · 2 unmodified lines
153150 .type = AVMEDIA_TYPE_AUDIO,
154151 .request_frame = request_frame,
155152 },
156− { NULL }
157153 };
158154
159155 const AVFilter ff_af_afifo = {
@@ -162,6 +158,6 @@ const AVFilter ff_af_afifo = { · 2 unmodified lines
162158 .init = init,
163159 .uninit = uninit,
164160 .priv_size = sizeof(FifoContext),
165− .inputs = avfilter_af_afifo_inputs,
166− .outputs = avfilter_af_afifo_outputs,
161+ FILTER_INPUTS(avfilter_af_afifo_inputs),
162+ FILTER_OUTPUTS(avfilter_af_afifo_outputs),
167163 };
libavfilter/internal.h+6−0
@@ -141,6 +141,12 @@ static av_always_inline int ff_filter_execute(AVFilterContext *ctx, avfilter_act · 140 unmodified lines
141141 return ctx->internal->execute(ctx, func, arg, ret, nb_jobs);
142142 }
143143
144+#define FILTER_INOUTPADS(inout, array) \
145+ .inout = array, \
146+ .nb_ ## inout = FF_ARRAY_ELEMS(array)
147+#define FILTER_INPUTS(array) FILTER_INOUTPADS(inputs, (array))
148+#define FILTER_OUTPUTS(array) FILTER_INOUTPADS(outputs, (array))
149+
144150 /**
145151 * Tell if an integer is contained in the provided -1-terminated list of integers.
146152 * This is useful for determining (for instance) if an AVPixelFormat is in an
libavfilter/setpts.c+4−8
@@ -279,7 +279,6 @@ static const AVFilterPad avfilter_vf_setpts_inputs[] = { · 278 unmodified lines
279279 .type = AVMEDIA_TYPE_VIDEO,
280280 .config_props = config_input,
281281 },
282− { NULL }
283282 };
284283
285284 static const AVFilterPad avfilter_vf_setpts_outputs[] = {
@@ -287,7 +286,6 @@ static const AVFilterPad avfilter_vf_setpts_outputs[] = { · 1 unmodified line
287286 .name = "default",
288287 .type = AVMEDIA_TYPE_VIDEO,
289288 },
290− { NULL }
291289 };
292290
293291 const AVFilter ff_vf_setpts = {
@@ -300,8 +298,8 @@ const AVFilter ff_vf_setpts = { · 6 unmodified lines
300298 .priv_size = sizeof(SetPTSContext),
301299 .priv_class = &setpts_class,
302300
303− .inputs = avfilter_vf_setpts_inputs,
304− .outputs = avfilter_vf_setpts_outputs,
301+ FILTER_INPUTS(avfilter_vf_setpts_inputs),
302+ FILTER_OUTPUTS(avfilter_vf_setpts_outputs),
305303 };
306304 #endif /* CONFIG_SETPTS_FILTER */
307305
@@ -319,7 +317,6 @@ static const AVFilterPad asetpts_inputs[] = { · 11 unmodified lines
319317 .type = AVMEDIA_TYPE_AUDIO,
320318 .config_props = config_input,
321319 },
322− { NULL }
323320 };
324321
325322 static const AVFilterPad asetpts_outputs[] = {
@@ -327,7 +324,6 @@ static const AVFilterPad asetpts_outputs[] = { · 1 unmodified line
327324 .name = "default",
328325 .type = AVMEDIA_TYPE_AUDIO,
329326 },
330− { NULL }
331327 };
332328
333329 const AVFilter ff_af_asetpts = {
@@ -338,7 +334,7 @@ const AVFilter ff_af_asetpts = { · 4 unmodified lines
338334 .uninit = uninit,
339335 .priv_size = sizeof(SetPTSContext),
340336 .priv_class = &asetpts_class,
341− .inputs = asetpts_inputs,
342− .outputs = asetpts_outputs,
337+ FILTER_INPUTS(asetpts_inputs),
338+ FILTER_OUTPUTS(asetpts_outputs),
343339 };
344340 #endif /* CONFIG_ASETPTS_FILTER */
libavfilter/settb.c+4−8
@@ -167,7 +167,6 @@ static const AVFilterPad avfilter_vf_settb_inputs[] = { · 166 unmodified lines
167167 .name = "default",
168168 .type = AVMEDIA_TYPE_VIDEO,
169169 },
170− { NULL }
171170 };
172171
173172 static const AVFilterPad avfilter_vf_settb_outputs[] = {
@@ -176,7 +175,6 @@ static const AVFilterPad avfilter_vf_settb_outputs[] = { · 2 unmodified lines
176175 .type = AVMEDIA_TYPE_VIDEO,
177176 .config_props = config_output_props,
178177 },
179− { NULL }
180178 };
181179
182180 const AVFilter ff_vf_settb = {
@@ -184,8 +182,8 @@ const AVFilter ff_vf_settb = { · 1 unmodified line
184182 .description = NULL_IF_CONFIG_SMALL("Set timebase for the video output link."),
185183 .priv_size = sizeof(SetTBContext),
186184 .priv_class = &settb_class,
187− .inputs = avfilter_vf_settb_inputs,
188− .outputs = avfilter_vf_settb_outputs,
185+ FILTER_INPUTS(avfilter_vf_settb_inputs),
186+ FILTER_OUTPUTS(avfilter_vf_settb_outputs),
189187 .activate = activate,
190188 };
191189 #endif /* CONFIG_SETTB_FILTER */
@@ -200,7 +198,6 @@ static const AVFilterPad avfilter_af_asettb_inputs[] = { · 8 unmodified lines
200198 .name = "default",
201199 .type = AVMEDIA_TYPE_AUDIO,
202200 },
203− { NULL }
204201 };
205202
206203 static const AVFilterPad avfilter_af_asettb_outputs[] = {
@@ -209,15 +206,14 @@ static const AVFilterPad avfilter_af_asettb_outputs[] = { · 2 unmodified lines
209206 .type = AVMEDIA_TYPE_AUDIO,
210207 .config_props = config_output_props,
211208 },
212− { NULL }
213209 };
214210
215211 const AVFilter ff_af_asettb = {
216212 .name = "asettb",
217213 .description = NULL_IF_CONFIG_SMALL("Set timebase for the audio output link."),
218214 .priv_size = sizeof(SetTBContext),
219− .inputs = avfilter_af_asettb_inputs,
220− .outputs = avfilter_af_asettb_outputs,
215+ FILTER_INPUTS(avfilter_af_asettb_inputs),
216+ FILTER_OUTPUTS(avfilter_af_asettb_outputs),
221217 .priv_class = &asettb_class,
222218 .activate = activate,
223219 };
libavfilter/split.c+2−4
@@ -116,7 +116,6 @@ static const AVFilterPad avfilter_vf_split_inputs[] = { · 115 unmodified lines
116116 .type = AVMEDIA_TYPE_VIDEO,
117117 .filter_frame = filter_frame,
118118 },
119− { NULL }
120119 };
121120
122121 const AVFilter ff_vf_split = {
@@ -126,7 +125,7 @@ const AVFilter ff_vf_split = { · 3 unmodified lines
126125 .priv_class = &split_class,
127126 .init = split_init,
128127 .uninit = split_uninit,
129− .inputs = avfilter_vf_split_inputs,
128+ FILTER_INPUTS(avfilter_vf_split_inputs),
130129 .outputs = NULL,
131130 .flags = AVFILTER_FLAG_DYNAMIC_OUTPUTS,
132131 };
@@ -137,7 +136,6 @@ static const AVFilterPad avfilter_af_asplit_inputs[] = { · 4 unmodified lines
137136 .type = AVMEDIA_TYPE_AUDIO,
138137 .filter_frame = filter_frame,
139138 },
140− { NULL }
141139 };
142140
143141 const AVFilter ff_af_asplit = {
@@ -147,7 +145,7 @@ const AVFilter ff_af_asplit = { · 3 unmodified lines
147145 .priv_class = &asplit_class,
148146 .init = split_init,
149147 .uninit = split_uninit,
150− .inputs = avfilter_af_asplit_inputs,
148+ FILTER_INPUTS(avfilter_af_asplit_inputs),
151149 .outputs = NULL,
152150 .flags = AVFILTER_FLAG_DYNAMIC_OUTPUTS,
153151 };
libavfilter/trim.c+4−8
@@ -195,7 +195,6 @@ static const AVFilterPad trim_inputs[] = { · 194 unmodified lines
195195 .filter_frame = trim_filter_frame,
196196 .config_props = config_input,
197197 },
198− { NULL }
199198 };
200199
201200 static const AVFilterPad trim_outputs[] = {
@@ -203,7 +202,6 @@ static const AVFilterPad trim_outputs[] = { · 1 unmodified line
203202 .name = "default",
204203 .type = AVMEDIA_TYPE_VIDEO,
205204 },
206− { NULL }
207205 };
208206
209207 const AVFilter ff_vf_trim = {
@@ -212,8 +210,8 @@ const AVFilter ff_vf_trim = { · 2 unmodified lines
212210 .init = init,
213211 .priv_size = sizeof(TrimContext),
214212 .priv_class = &trim_class,
215− .inputs = trim_inputs,
216− .outputs = trim_outputs,
213+ FILTER_INPUTS(trim_inputs),
214+ FILTER_OUTPUTS(trim_outputs),
217215 };
218216 #endif // CONFIG_TRIM_FILTER
219217
@@ -350,7 +348,6 @@ static const AVFilterPad atrim_inputs[] = { · 130 unmodified lines
350348 .filter_frame = atrim_filter_frame,
351349 .config_props = config_input,
352350 },
353− { NULL }
354351 };
355352
356353 static const AVFilterPad atrim_outputs[] = {
@@ -358,7 +355,6 @@ static const AVFilterPad atrim_outputs[] = { · 1 unmodified line
358355 .name = "default",
359356 .type = AVMEDIA_TYPE_AUDIO,
360357 },
361− { NULL }
362358 };
363359
364360 const AVFilter ff_af_atrim = {
@@ -367,7 +363,7 @@ const AVFilter ff_af_atrim = { · 2 unmodified lines
367363 .init = init,
368364 .priv_size = sizeof(TrimContext),
369365 .priv_class = &atrim_class,
370− .inputs = atrim_inputs,
371− .outputs = atrim_outputs,
366+ FILTER_INPUTS(atrim_inputs),
367+ FILTER_OUTPUTS(atrim_outputs),
372368 };
373369 #endif // CONFIG_ATRIM_FILTER
libavfilter/vaf_spectrumsynth.c+2−4
@@ -532,7 +532,6 @@ static const AVFilterPad spectrumsynth_inputs[] = { · 531 unmodified lines
532532 .name = "phase",
533533 .type = AVMEDIA_TYPE_VIDEO,
534534 },
535− { NULL }
536535 };
537536
538537 static const AVFilterPad spectrumsynth_outputs[] = {
@@ -541,7 +540,6 @@ static const AVFilterPad spectrumsynth_outputs[] = { · 2 unmodified lines
541540 .type = AVMEDIA_TYPE_AUDIO,
542541 .config_props = config_output,
543542 },
544− { NULL }
545543 };
546544
547545 const AVFilter ff_vaf_spectrumsynth = {
@@ -551,7 +549,7 @@ const AVFilter ff_vaf_spectrumsynth = { · 3 unmodified lines
551549 .query_formats = query_formats,
552550 .activate = activate,
553551 .priv_size = sizeof(SpectrumSynthContext),
554− .inputs = spectrumsynth_inputs,
555− .outputs = spectrumsynth_outputs,
552+ FILTER_INPUTS(spectrumsynth_inputs),
553+ FILTER_OUTPUTS(spectrumsynth_outputs),
556554 .priv_class = &spectrumsynth_class,
557555 };
libavfilter/vf_addroi.c+2−4
@@ -244,7 +244,6 @@ static const AVFilterPad addroi_inputs[] = { · 243 unmodified lines
244244 .config_props = addroi_config_input,
245245 .filter_frame = addroi_filter_frame,
246246 },
247− { NULL }
248247 };
249248
250249 static const AVFilterPad addroi_outputs[] = {
@@ -252,7 +251,6 @@ static const AVFilterPad addroi_outputs[] = { · 1 unmodified line
252251 .name = "default",
253252 .type = AVMEDIA_TYPE_VIDEO,
254253 },
255− { NULL }
256254 };
257255
258256 const AVFilter ff_vf_addroi = {
@@ -264,6 +262,6 @@ const AVFilter ff_vf_addroi = { · 5 unmodified lines
264262 .priv_size = sizeof(AddROIContext),
265263 .priv_class = &addroi_class,
266264
267− .inputs = addroi_inputs,
268− .outputs = addroi_outputs,
265+ FILTER_INPUTS(addroi_inputs),
266+ FILTER_OUTPUTS(addroi_outputs),
269267 };
libavfilter/vf_alphamerge.c+2−4
@@ -170,7 +170,6 @@ static const AVFilterPad alphamerge_inputs[] = { · 169 unmodified lines
170170 .name = "alpha",
171171 .type = AVMEDIA_TYPE_VIDEO,
172172 },
173− { NULL }
174173 };
175174
176175 static const AVFilterPad alphamerge_outputs[] = {
@@ -179,7 +178,6 @@ static const AVFilterPad alphamerge_outputs[] = { · 2 unmodified lines
179178 .type = AVMEDIA_TYPE_VIDEO,
180179 .config_props = config_output,
181180 },
182− { NULL }
183181 };
184182
185183 static const AVOption alphamerge_options[] = {
@@ -197,8 +195,8 @@ const AVFilter ff_vf_alphamerge = { · 11 unmodified lines
197195 .priv_class = &alphamerge_class,
198196 .init = init,
199197 .query_formats = query_formats,
200− .inputs = alphamerge_inputs,
201− .outputs = alphamerge_outputs,
198+ FILTER_INPUTS(alphamerge_inputs),
199+ FILTER_OUTPUTS(alphamerge_outputs),
202200 .uninit = uninit,
203201 .activate = activate,
204202 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
libavfilter/vf_amplify.c+2−4
@@ -297,7 +297,6 @@ static const AVFilterPad inputs[] = { · 296 unmodified lines
297297 .type = AVMEDIA_TYPE_VIDEO,
298298 .filter_frame = filter_frame,
299299 },
300− { NULL }
301300 };
302301
303302 static const AVFilterPad outputs[] = {
@@ -306,7 +305,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
306305 .type = AVMEDIA_TYPE_VIDEO,
307306 .config_props = config_output,
308307 },
309− { NULL }
310308 };
311309
312310 AVFILTER_DEFINE_CLASS(amplify);
@@ -317,8 +315,8 @@ const AVFilter ff_vf_amplify = { · 4 unmodified lines
317315 .priv_size = sizeof(AmplifyContext),
318316 .priv_class = &amplify_class,
319317 .query_formats = query_formats,
320− .outputs = outputs,
321− .inputs = inputs,
318+ FILTER_OUTPUTS(outputs),
319+ FILTER_INPUTS(inputs),
322320 .init = init,
323321 .uninit = uninit,
324322 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
libavfilter/vf_aspect.c+4−8
@@ -173,7 +173,6 @@ static const AVFilterPad avfilter_vf_setdar_inputs[] = { · 172 unmodified lines
173173 .type = AVMEDIA_TYPE_VIDEO,
174174 .filter_frame = filter_frame,
175175 },
176− { NULL }
177176 };
178177
179178 static const AVFilterPad avfilter_vf_setdar_outputs[] = {
@@ -182,7 +181,6 @@ static const AVFilterPad avfilter_vf_setdar_outputs[] = { · 2 unmodified lines
182181 .type = AVMEDIA_TYPE_VIDEO,
183182 .config_props = setdar_config_props,
184183 },
185− { NULL }
186184 };
187185
188186 const AVFilter ff_vf_setdar = {
@@ -190,8 +188,8 @@ const AVFilter ff_vf_setdar = { · 1 unmodified line
190188 .description = NULL_IF_CONFIG_SMALL("Set the frame display aspect ratio."),
191189 .priv_size = sizeof(AspectContext),
192190 .priv_class = &setdar_class,
193− .inputs = avfilter_vf_setdar_inputs,
194− .outputs = avfilter_vf_setdar_outputs,
191+ FILTER_INPUTS(avfilter_vf_setdar_inputs),
192+ FILTER_OUTPUTS(avfilter_vf_setdar_outputs),
195193 };
196194
197195 #endif /* CONFIG_SETDAR_FILTER */
@@ -237,7 +235,6 @@ static const AVFilterPad avfilter_vf_setsar_inputs[] = { · 39 unmodified lines
237235 .type = AVMEDIA_TYPE_VIDEO,
238236 .filter_frame = filter_frame,
239237 },
240− { NULL }
241238 };
242239
243240 static const AVFilterPad avfilter_vf_setsar_outputs[] = {
@@ -246,7 +243,6 @@ static const AVFilterPad avfilter_vf_setsar_outputs[] = { · 2 unmodified lines
246243 .type = AVMEDIA_TYPE_VIDEO,
247244 .config_props = setsar_config_props,
248245 },
249− { NULL }
250246 };
251247
252248 const AVFilter ff_vf_setsar = {
@@ -254,8 +250,8 @@ const AVFilter ff_vf_setsar = { · 1 unmodified line
254250 .description = NULL_IF_CONFIG_SMALL("Set the pixel sample aspect ratio."),
255251 .priv_size = sizeof(AspectContext),
256252 .priv_class = &setsar_class,
257− .inputs = avfilter_vf_setsar_inputs,
258− .outputs = avfilter_vf_setsar_outputs,
253+ FILTER_INPUTS(avfilter_vf_setsar_inputs),
254+ FILTER_OUTPUTS(avfilter_vf_setsar_outputs),
259255 };
260256
261257 #endif /* CONFIG_SETSAR_FILTER */
libavfilter/vf_atadenoise.c+2−4
@@ -557,7 +557,6 @@ static const AVFilterPad inputs[] = { · 556 unmodified lines
557557 .filter_frame = filter_frame,
558558 .config_props = config_input,
559559 },
560− { NULL }
561560 };
562561
563562 static const AVFilterPad outputs[] = {
@@ -566,7 +565,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
566565 .type = AVMEDIA_TYPE_VIDEO,
567566 .request_frame = request_frame,
568567 },
569− { NULL }
570568 };
571569
572570 const AVFilter ff_vf_atadenoise = {
@@ -577,8 +575,8 @@ const AVFilter ff_vf_atadenoise = { · 4 unmodified lines
577575 .init = init,
578576 .uninit = uninit,
579577 .query_formats = query_formats,
580− .inputs = inputs,
581− .outputs = outputs,
578+ FILTER_INPUTS(inputs),
579+ FILTER_OUTPUTS(outputs),
582580 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
583581 .process_command = process_command,
584582 };
libavfilter/vf_avgblur.c+2−4
@@ -304,7 +304,6 @@ static const AVFilterPad avgblur_inputs[] = { · 303 unmodified lines
304304 .config_props = config_input,
305305 .filter_frame = filter_frame,
306306 },
307− { NULL }
308307 };
309308
310309 static const AVFilterPad avgblur_outputs[] = {
@@ -312,7 +311,6 @@ static const AVFilterPad avgblur_outputs[] = { · 1 unmodified line
312311 .name = "default",
313312 .type = AVMEDIA_TYPE_VIDEO,
314313 },
315− { NULL }
316314 };
317315
318316 const AVFilter ff_vf_avgblur = {
@@ -322,8 +320,8 @@ const AVFilter ff_vf_avgblur = { · 3 unmodified lines
322320 .priv_class = &avgblur_class,
323321 .uninit = uninit,
324322 .query_formats = query_formats,
325− .inputs = avgblur_inputs,
326− .outputs = avgblur_outputs,
323+ FILTER_INPUTS(avgblur_inputs),
324+ FILTER_OUTPUTS(avgblur_outputs),
327325 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
328326 .process_command = ff_filter_process_command,
329327 };
libavfilter/vf_avgblur_opencl.c+4−6
@@ -311,7 +311,6 @@ static const AVFilterPad avgblur_opencl_inputs[] = { · 310 unmodified lines
311311 .filter_frame = &avgblur_opencl_filter_frame,
312312 .config_props = &ff_opencl_filter_config_input,
313313 },
314− { NULL }
315314 };
316315
317316
@@ -321,7 +320,6 @@ static const AVFilterPad avgblur_opencl_outputs[] = { · 3 unmodified lines
321320 .type = AVMEDIA_TYPE_VIDEO,
322321 .config_props = &ff_opencl_filter_config_output,
323322 },
324− { NULL }
325323 };
326324
327325
@@ -348,8 +346,8 @@ const AVFilter ff_vf_avgblur_opencl = { · 20 unmodified lines
348346 .init = &ff_opencl_filter_init,
349347 .uninit = &avgblur_opencl_uninit,
350348 .query_formats = &ff_opencl_filter_query_formats,
351− .inputs = avgblur_opencl_inputs,
352− .outputs = avgblur_opencl_outputs,
349+ FILTER_INPUTS(avgblur_opencl_inputs),
350+ FILTER_OUTPUTS(avgblur_opencl_outputs),
353351 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
354352 };
355353
@@ -387,8 +385,8 @@ const AVFilter ff_vf_boxblur_opencl = { · 31 unmodified lines
387385 .init = &ff_opencl_filter_init,
388386 .uninit = &avgblur_opencl_uninit,
389387 .query_formats = &ff_opencl_filter_query_formats,
390− .inputs = avgblur_opencl_inputs,
391− .outputs = avgblur_opencl_outputs,
388+ FILTER_INPUTS(avgblur_opencl_inputs),
389+ FILTER_OUTPUTS(avgblur_opencl_outputs),
392390 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
393391 };
394392
libavfilter/vf_avgblur_vulkan.c+2−4
@@ -386,7 +386,6 @@ static const AVFilterPad avgblur_vulkan_inputs[] = { · 385 unmodified lines
386386 .filter_frame = &avgblur_vulkan_filter_frame,
387387 .config_props = &ff_vk_filter_config_input,
388388 },
389− { NULL }
390389 };
391390
392391 static const AVFilterPad avgblur_vulkan_outputs[] = {
@@ -395,7 +394,6 @@ static const AVFilterPad avgblur_vulkan_outputs[] = { · 2 unmodified lines
395394 .type = AVMEDIA_TYPE_VIDEO,
396395 .config_props = &ff_vk_filter_config_output,
397396 },
398− { NULL }
399397 };
400398
401399 const AVFilter ff_vf_avgblur_vulkan = {
@@ -405,8 +403,8 @@ const AVFilter ff_vf_avgblur_vulkan = { · 3 unmodified lines
405403 .init = &ff_vk_filter_init,
406404 .uninit = &avgblur_vulkan_uninit,
407405 .query_formats = &ff_vk_filter_query_formats,
408− .inputs = avgblur_vulkan_inputs,
409− .outputs = avgblur_vulkan_outputs,
406+ FILTER_INPUTS(avgblur_vulkan_inputs),
407+ FILTER_OUTPUTS(avgblur_vulkan_outputs),
410408 .priv_class = &avgblur_vulkan_class,
411409 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
412410 };
libavfilter/vf_bbox.c+2−4
@@ -138,7 +138,6 @@ static const AVFilterPad bbox_inputs[] = { · 137 unmodified lines
138138 .type = AVMEDIA_TYPE_VIDEO,
139139 .filter_frame = filter_frame,
140140 },
141− { NULL }
142141 };
143142
144143 static const AVFilterPad bbox_outputs[] = {
@@ -147,7 +146,6 @@ static const AVFilterPad bbox_outputs[] = { · 2 unmodified lines
147146 .type = AVMEDIA_TYPE_VIDEO,
148147 .config_props = config_output,
149148 },
150− { NULL }
151149 };
152150
153151 const AVFilter ff_vf_bbox = {
@@ -156,8 +154,8 @@ const AVFilter ff_vf_bbox = { · 2 unmodified lines
156154 .priv_size = sizeof(BBoxContext),
157155 .priv_class = &bbox_class,
158156 .query_formats = query_formats,
159− .inputs = bbox_inputs,
160− .outputs = bbox_outputs,
157+ FILTER_INPUTS(bbox_inputs),
158+ FILTER_OUTPUTS(bbox_outputs),
161159 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
162160 .process_command = ff_filter_process_command,
163161 };
libavfilter/vf_bilateral.c+2−4
@@ -368,7 +368,6 @@ static const AVFilterPad bilateral_inputs[] = { · 367 unmodified lines
368368 .config_props = config_input,
369369 .filter_frame = filter_frame,
370370 },
371− { NULL }
372371 };
373372
374373 static const AVFilterPad bilateral_outputs[] = {
@@ -376,7 +375,6 @@ static const AVFilterPad bilateral_outputs[] = { · 1 unmodified line
376375 .name = "default",
377376 .type = AVMEDIA_TYPE_VIDEO,
378377 },
379− { NULL }
380378 };
381379
382380 const AVFilter ff_vf_bilateral = {
@@ -386,8 +384,8 @@ const AVFilter ff_vf_bilateral = { · 3 unmodified lines
386384 .priv_class = &bilateral_class,
387385 .uninit = uninit,
388386 .query_formats = query_formats,
389− .inputs = bilateral_inputs,
390− .outputs = bilateral_outputs,
387+ FILTER_INPUTS(bilateral_inputs),
388+ FILTER_OUTPUTS(bilateral_outputs),
391389 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
392390 .process_command = process_command,
393391 };
libavfilter/vf_bitplanenoise.c+2−4
@@ -200,7 +200,6 @@ static const AVFilterPad inputs[] = { · 199 unmodified lines
200200 .filter_frame = filter_frame,
201201 .config_props = config_input,
202202 },
203− { NULL }
204203 };
205204
206205 static const AVFilterPad outputs[] = {
@@ -208,7 +207,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
208207 .name = "default",
209208 .type = AVMEDIA_TYPE_VIDEO,
210209 },
211− { NULL }
212210 };
213211
214212 const AVFilter ff_vf_bitplanenoise = {
@@ -216,8 +214,8 @@ const AVFilter ff_vf_bitplanenoise = { · 1 unmodified line
216214 .description = NULL_IF_CONFIG_SMALL("Measure bit plane noise."),
217215 .priv_size = sizeof(BPNContext),
218216 .query_formats = query_formats,
219− .inputs = inputs,
220− .outputs = outputs,
217+ FILTER_INPUTS(inputs),
218+ FILTER_OUTPUTS(outputs),
221219 .priv_class = &bitplanenoise_class,
222220 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
223221 };
libavfilter/vf_blackdetect.c+2−4
@@ -244,7 +244,6 @@ static const AVFilterPad blackdetect_inputs[] = { · 243 unmodified lines
244244 .config_props = config_input,
245245 .filter_frame = filter_frame,
246246 },
247− { NULL }
248247 };
249248
250249 static const AVFilterPad blackdetect_outputs[] = {
@@ -252,7 +251,6 @@ static const AVFilterPad blackdetect_outputs[] = { · 1 unmodified line
252251 .name = "default",
253252 .type = AVMEDIA_TYPE_VIDEO,
254253 },
255− { NULL }
256254 };
257255
258256 const AVFilter ff_vf_blackdetect = {
@@ -260,8 +258,8 @@ const AVFilter ff_vf_blackdetect = { · 1 unmodified line
260258 .description = NULL_IF_CONFIG_SMALL("Detect video intervals that are (almost) black."),
261259 .priv_size = sizeof(BlackDetectContext),
262260 .query_formats = query_formats,
263− .inputs = blackdetect_inputs,
264− .outputs = blackdetect_outputs,
261+ FILTER_INPUTS(blackdetect_inputs),
262+ FILTER_OUTPUTS(blackdetect_outputs),
265263 .uninit = uninit,
266264 .priv_class = &blackdetect_class,
267265 .flags = AVFILTER_FLAG_SLICE_THREADS,
libavfilter/vf_blackframe.c+2−4
@@ -118,7 +118,6 @@ static const AVFilterPad avfilter_vf_blackframe_inputs[] = { · 117 unmodified lines
118118 .type = AVMEDIA_TYPE_VIDEO,
119119 .filter_frame = filter_frame,
120120 },
121− { NULL }
122121 };
123122
124123 static const AVFilterPad avfilter_vf_blackframe_outputs[] = {
@@ -126,7 +125,6 @@ static const AVFilterPad avfilter_vf_blackframe_outputs[] = { · 1 unmodified line
126125 .name = "default",
127126 .type = AVMEDIA_TYPE_VIDEO
128127 },
129− { NULL }
130128 };
131129
132130 const AVFilter ff_vf_blackframe = {
@@ -135,6 +133,6 @@ const AVFilter ff_vf_blackframe = { · 2 unmodified lines
135133 .priv_size = sizeof(BlackFrameContext),
136134 .priv_class = &blackframe_class,
137135 .query_formats = query_formats,
138− .inputs = avfilter_vf_blackframe_inputs,
139− .outputs = avfilter_vf_blackframe_outputs,
136+ FILTER_INPUTS(avfilter_vf_blackframe_inputs),
137+ FILTER_OUTPUTS(avfilter_vf_blackframe_outputs),
140138 };
libavfilter/vf_blend.c+4−8
@@ -892,7 +892,6 @@ static const AVFilterPad blend_inputs[] = { · 891 unmodified lines
892892 .name = "bottom",
893893 .type = AVMEDIA_TYPE_VIDEO,
894894 },
895− { NULL }
896895 };
897896
898897 static const AVFilterPad blend_outputs[] = {
@@ -901,7 +900,6 @@ static const AVFilterPad blend_outputs[] = { · 2 unmodified lines
901900 .type = AVMEDIA_TYPE_VIDEO,
902901 .config_props = config_output,
903902 },
904− { NULL }
905903 };
906904
907905 const AVFilter ff_vf_blend = {
@@ -913,8 +911,8 @@ const AVFilter ff_vf_blend = { · 5 unmodified lines
913911 .priv_size = sizeof(BlendContext),
914912 .query_formats = query_formats,
915913 .activate = activate,
916− .inputs = blend_inputs,
917− .outputs = blend_outputs,
914+ FILTER_INPUTS(blend_inputs),
915+ FILTER_OUTPUTS(blend_outputs),
918916 .priv_class = &blend_class,
919917 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
920918 .process_command = process_command,
@@ -954,7 +952,6 @@ static const AVFilterPad tblend_inputs[] = { · 33 unmodified lines
954952 .type = AVMEDIA_TYPE_VIDEO,
955953 .filter_frame = tblend_filter_frame,
956954 },
957− { NULL }
958955 };
959956
960957 static const AVFilterPad tblend_outputs[] = {
@@ -963,7 +960,6 @@ static const AVFilterPad tblend_outputs[] = { · 2 unmodified lines
963960 .type = AVMEDIA_TYPE_VIDEO,
964961 .config_props = config_output,
965962 },
966− { NULL }
967963 };
968964
969965 const AVFilter ff_vf_tblend = {
@@ -974,8 +970,8 @@ const AVFilter ff_vf_tblend = { · 4 unmodified lines
974970 .query_formats = query_formats,
975971 .init = init,
976972 .uninit = uninit,
977− .inputs = tblend_inputs,
978− .outputs = tblend_outputs,
973+ FILTER_INPUTS(tblend_inputs),
974+ FILTER_OUTPUTS(tblend_outputs),
979975 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
980976 .process_command = process_command,
981977 };
libavfilter/vf_bm3d.c+1−2
@@ -1048,7 +1048,6 @@ static const AVFilterPad bm3d_outputs[] = { · 1047 unmodified lines
10481048 .type = AVMEDIA_TYPE_VIDEO,
10491049 .config_props = config_output,
10501050 },
1051− { NULL }
10521051 };
10531052
10541053 const AVFilter ff_vf_bm3d = {
@@ -1060,7 +1059,7 @@ const AVFilter ff_vf_bm3d = { · 5 unmodified lines
10601059 .activate = activate,
10611060 .query_formats = query_formats,
10621061 .inputs = NULL,
1063− .outputs = bm3d_outputs,
1062+ FILTER_OUTPUTS(bm3d_outputs),
10641063 .priv_class = &bm3d_class,
10651064 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL |
10661065 AVFILTER_FLAG_DYNAMIC_INPUTS |
libavfilter/vf_boxblur.c+2−4
@@ -293,7 +293,6 @@ static const AVFilterPad avfilter_vf_boxblur_inputs[] = { · 292 unmodified lines
293293 .config_props = config_input,
294294 .filter_frame = filter_frame,
295295 },
296− { NULL }
297296 };
298297
299298 static const AVFilterPad avfilter_vf_boxblur_outputs[] = {
@@ -301,7 +300,6 @@ static const AVFilterPad avfilter_vf_boxblur_outputs[] = { · 1 unmodified line
301300 .name = "default",
302301 .type = AVMEDIA_TYPE_VIDEO,
303302 },
304− { NULL }
305303 };
306304
307305 const AVFilter ff_vf_boxblur = {
@@ -311,7 +309,7 @@ const AVFilter ff_vf_boxblur = { · 3 unmodified lines
311309 .priv_class = &boxblur_class,
312310 .uninit = uninit,
313311 .query_formats = query_formats,
314− .inputs = avfilter_vf_boxblur_inputs,
315− .outputs = avfilter_vf_boxblur_outputs,
312+ FILTER_INPUTS(avfilter_vf_boxblur_inputs),
313+ FILTER_OUTPUTS(avfilter_vf_boxblur_outputs),
316314 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
317315 };
libavfilter/vf_bwdif.c+2−4
@@ -392,7 +392,6 @@ static const AVFilterPad avfilter_vf_bwdif_inputs[] = { · 391 unmodified lines
392392 .type = AVMEDIA_TYPE_VIDEO,
393393 .filter_frame = ff_yadif_filter_frame,
394394 },
395− { NULL }
396395 };
397396
398397 static const AVFilterPad avfilter_vf_bwdif_outputs[] = {
@@ -402,7 +401,6 @@ static const AVFilterPad avfilter_vf_bwdif_outputs[] = { · 3 unmodified lines
402401 .request_frame = ff_yadif_request_frame,
403402 .config_props = config_props,
404403 },
405− { NULL }
406404 };
407405
408406 const AVFilter ff_vf_bwdif = {
@@ -412,7 +410,7 @@ const AVFilter ff_vf_bwdif = { · 3 unmodified lines
412410 .priv_class = &bwdif_class,
413411 .uninit = uninit,
414412 .query_formats = query_formats,
415− .inputs = avfilter_vf_bwdif_inputs,
416− .outputs = avfilter_vf_bwdif_outputs,
413+ FILTER_INPUTS(avfilter_vf_bwdif_inputs),
414+ FILTER_OUTPUTS(avfilter_vf_bwdif_outputs),
417415 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
418416 };
libavfilter/vf_cas.c+2−4
@@ -258,7 +258,6 @@ static const AVFilterPad cas_inputs[] = { · 257 unmodified lines
258258 .filter_frame = filter_frame,
259259 .config_props = config_input,
260260 },
261− { NULL }
262261 };
263262
264263 static const AVFilterPad cas_outputs[] = {
@@ -266,7 +265,6 @@ static const AVFilterPad cas_outputs[] = { · 1 unmodified line
266265 .name = "default",
267266 .type = AVMEDIA_TYPE_VIDEO,
268267 },
269− { NULL }
270268 };
271269
272270 #define OFFSET(x) offsetof(CASContext, x)
@@ -286,8 +284,8 @@ const AVFilter ff_vf_cas = { · 13 unmodified lines
286284 .priv_size = sizeof(CASContext),
287285 .priv_class = &cas_class,
288286 .query_formats = query_formats,
289− .inputs = cas_inputs,
290− .outputs = cas_outputs,
287+ FILTER_INPUTS(cas_inputs),
288+ FILTER_OUTPUTS(cas_outputs),
291289 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
292290 .process_command = ff_filter_process_command,
293291 };
libavfilter/vf_chromaber_vulkan.c+2−4
@@ -321,7 +321,6 @@ static const AVFilterPad chromaber_vulkan_inputs[] = { · 320 unmodified lines
321321 .filter_frame = &chromaber_vulkan_filter_frame,
322322 .config_props = &ff_vk_filter_config_input,
323323 },
324− { NULL }
325324 };
326325
327326 static const AVFilterPad chromaber_vulkan_outputs[] = {
@@ -330,7 +329,6 @@ static const AVFilterPad chromaber_vulkan_outputs[] = { · 2 unmodified lines
330329 .type = AVMEDIA_TYPE_VIDEO,
331330 .config_props = &ff_vk_filter_config_output,
332331 },
333− { NULL }
334332 };
335333
336334 const AVFilter ff_vf_chromaber_vulkan = {
@@ -340,8 +338,8 @@ const AVFilter ff_vf_chromaber_vulkan = { · 3 unmodified lines
340338 .init = &ff_vk_filter_init,
341339 .uninit = &chromaber_vulkan_uninit,
342340 .query_formats = &ff_vk_filter_query_formats,
343− .inputs = chromaber_vulkan_inputs,
344− .outputs = chromaber_vulkan_outputs,
341+ FILTER_INPUTS(chromaber_vulkan_inputs),
342+ FILTER_OUTPUTS(chromaber_vulkan_outputs),
345343 .priv_class = &chromaber_vulkan_class,
346344 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
347345 };
libavfilter/vf_chromakey.c+4−8
@@ -371,7 +371,6 @@ static const AVFilterPad chromakey_inputs[] = { · 370 unmodified lines
371371 .filter_frame = filter_frame,
372372 .config_props = config_input,
373373 },
374− { NULL }
375374 };
376375
377376 static const AVFilterPad chromakey_outputs[] = {
@@ -380,7 +379,6 @@ static const AVFilterPad chromakey_outputs[] = { · 2 unmodified lines
380379 .type = AVMEDIA_TYPE_VIDEO,
381380 .config_props = config_output,
382381 },
383− { NULL }
384382 };
385383
386384 #define OFFSET(x) offsetof(ChromakeyContext, x)
@@ -402,8 +400,8 @@ const AVFilter ff_vf_chromakey = { · 15 unmodified lines
402400 .priv_size = sizeof(ChromakeyContext),
403401 .priv_class = &chromakey_class,
404402 .query_formats = query_formats,
405− .inputs = chromakey_inputs,
406− .outputs = chromakey_outputs,
403+ FILTER_INPUTS(chromakey_inputs),
404+ FILTER_OUTPUTS(chromakey_outputs),
407405 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
408406 .process_command = process_command,
409407 };
@@ -424,7 +422,6 @@ static const AVFilterPad chromahold_inputs[] = { · 14 unmodified lines
424422 .filter_frame = filter_frame,
425423 .config_props = config_input,
426424 },
427− { NULL }
428425 };
429426
430427 static const AVFilterPad chromahold_outputs[] = {
@@ -433,7 +430,6 @@ static const AVFilterPad chromahold_outputs[] = { · 2 unmodified lines
433430 .type = AVMEDIA_TYPE_VIDEO,
434431 .config_props = config_output,
435432 },
436− { NULL }
437433 };
438434
439435 AVFILTER_DEFINE_CLASS(chromahold);
@@ -444,8 +440,8 @@ const AVFilter ff_vf_chromahold = { · 4 unmodified lines
444440 .priv_size = sizeof(ChromakeyContext),
445441 .priv_class = &chromahold_class,
446442 .query_formats = query_formats,
447− .inputs = chromahold_inputs,
448− .outputs = chromahold_outputs,
443+ FILTER_INPUTS(chromahold_inputs),
444+ FILTER_OUTPUTS(chromahold_outputs),
449445 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
450446 .process_command = process_command,
451447 };
libavfilter/vf_chromanr.c+2−4
@@ -264,7 +264,6 @@ static const AVFilterPad inputs[] = { · 263 unmodified lines
264264 .filter_frame = filter_frame,
265265 .config_props = config_input,
266266 },
267− { NULL }
268267 };
269268
270269 static const AVFilterPad outputs[] = {
@@ -272,7 +271,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
272271 .name = "default",
273272 .type = AVMEDIA_TYPE_VIDEO,
274273 },
275− { NULL }
276274 };
277275
278276 AVFILTER_DEFINE_CLASS(chromanr);
@@ -283,8 +281,8 @@ const AVFilter ff_vf_chromanr = { · 4 unmodified lines
283281 .priv_size = sizeof(ChromaNRContext),
284282 .priv_class = &chromanr_class,
285283 .query_formats = query_formats,
286− .outputs = outputs,
287− .inputs = inputs,
284+ FILTER_OUTPUTS(outputs),
285+ FILTER_INPUTS(inputs),
288286 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
289287 .process_command = ff_filter_process_command,
290288 };
libavfilter/vf_chromashift.c+4−6
@@ -429,7 +429,6 @@ static const AVFilterPad inputs[] = { · 428 unmodified lines
429429 .filter_frame = filter_frame,
430430 .config_props = config_input,
431431 },
432− { NULL }
433432 };
434433
435434 static const AVFilterPad outputs[] = {
@@ -437,7 +436,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
437436 .name = "default",
438437 .type = AVMEDIA_TYPE_VIDEO,
439438 },
440− { NULL }
441439 };
442440
443441 AVFILTER_DEFINE_CLASS(chromashift);
@@ -448,8 +446,8 @@ const AVFilter ff_vf_chromashift = { · 4 unmodified lines
448446 .priv_size = sizeof(ChromaShiftContext),
449447 .priv_class = &chromashift_class,
450448 .query_formats = query_formats,
451− .outputs = outputs,
452− .inputs = inputs,
449+ FILTER_OUTPUTS(outputs),
450+ FILTER_INPUTS(inputs),
453451 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
454452 .process_command = process_command,
455453 };
@@ -477,8 +475,8 @@ const AVFilter ff_vf_rgbashift = { · 21 unmodified lines
477475 .priv_size = sizeof(ChromaShiftContext),
478476 .priv_class = &rgbashift_class,
479477 .query_formats = query_formats,
480− .outputs = outputs,
481− .inputs = inputs,
478+ FILTER_OUTPUTS(outputs),
479+ FILTER_INPUTS(inputs),
482480 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
483481 .process_command = process_command,
484482 };
libavfilter/vf_ciescope.c+2−4
@@ -1492,7 +1492,6 @@ static const AVFilterPad inputs[] = { · 1491 unmodified lines
14921492 .filter_frame = filter_frame,
14931493 .config_props = config_input,
14941494 },
1495− { NULL }
14961495 };
14971496
14981497 static const AVFilterPad outputs[] = {
@@ -1501,7 +1500,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
15011500 .type = AVMEDIA_TYPE_VIDEO,
15021501 .config_props = config_output,
15031502 },
1504− { NULL }
15051503 };
15061504
15071505 const AVFilter ff_vf_ciescope = {
@@ -1511,6 +1509,6 @@ const AVFilter ff_vf_ciescope = { · 3 unmodified lines
15111509 .priv_class = &ciescope_class,
15121510 .query_formats = query_formats,
15131511 .uninit = uninit,
1514− .inputs = inputs,
1515− .outputs = outputs,
1512+ FILTER_INPUTS(inputs),
1513+ FILTER_OUTPUTS(outputs),
15161514 };
libavfilter/vf_codecview.c+2−4
@@ -304,7 +304,6 @@ static const AVFilterPad codecview_inputs[] = { · 303 unmodified lines
304304 .filter_frame = filter_frame,
305305 .config_props = config_input,
306306 },
307− { NULL }
308307 };
309308
310309 static const AVFilterPad codecview_outputs[] = {
@@ -312,7 +311,6 @@ static const AVFilterPad codecview_outputs[] = { · 1 unmodified line
312311 .name = "default",
313312 .type = AVMEDIA_TYPE_VIDEO,
314313 },
315− { NULL }
316314 };
317315
318316 const AVFilter ff_vf_codecview = {
@@ -320,8 +318,8 @@ const AVFilter ff_vf_codecview = { · 1 unmodified line
320318 .description = NULL_IF_CONFIG_SMALL("Visualize information about some codecs."),
321319 .priv_size = sizeof(CodecViewContext),
322320 .query_formats = query_formats,
323− .inputs = codecview_inputs,
324− .outputs = codecview_outputs,
321+ FILTER_INPUTS(codecview_inputs),
322+ FILTER_OUTPUTS(codecview_outputs),
325323 .priv_class = &codecview_class,
326324 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
327325 };
libavfilter/vf_colorbalance.c+2−4
@@ -425,7 +425,6 @@ static const AVFilterPad colorbalance_inputs[] = { · 424 unmodified lines
425425 .type = AVMEDIA_TYPE_VIDEO,
426426 .filter_frame = filter_frame,
427427 },
428− { NULL }
429428 };
430429
431430 static const AVFilterPad colorbalance_outputs[] = {
@@ -434,7 +433,6 @@ static const AVFilterPad colorbalance_outputs[] = { · 2 unmodified lines
434433 .type = AVMEDIA_TYPE_VIDEO,
435434 .config_props = config_output,
436435 },
437− { NULL }
438436 };
439437
440438 const AVFilter ff_vf_colorbalance = {
@@ -443,8 +441,8 @@ const AVFilter ff_vf_colorbalance = { · 2 unmodified lines
443441 .priv_size = sizeof(ColorBalanceContext),
444442 .priv_class = &colorbalance_class,
445443 .query_formats = query_formats,
446− .inputs = colorbalance_inputs,
447− .outputs = colorbalance_outputs,
444+ FILTER_INPUTS(colorbalance_inputs),
445+ FILTER_OUTPUTS(colorbalance_outputs),
448446 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
449447 .process_command = ff_filter_process_command,
450448 };
libavfilter/vf_colorchannelmixer.c+2−4
@@ -785,7 +785,6 @@ static const AVFilterPad colorchannelmixer_inputs[] = { · 784 unmodified lines
785785 .type = AVMEDIA_TYPE_VIDEO,
786786 .filter_frame = filter_frame,
787787 },
788− { NULL }
789788 };
790789
791790 static const AVFilterPad colorchannelmixer_outputs[] = {
@@ -794,7 +793,6 @@ static const AVFilterPad colorchannelmixer_outputs[] = { · 2 unmodified lines
794793 .type = AVMEDIA_TYPE_VIDEO,
795794 .config_props = config_output,
796795 },
797− { NULL }
798796 };
799797
800798 const AVFilter ff_vf_colorchannelmixer = {
@@ -804,8 +802,8 @@ const AVFilter ff_vf_colorchannelmixer = { · 3 unmodified lines
804802 .priv_class = &colorchannelmixer_class,
805803 .uninit = uninit,
806804 .query_formats = query_formats,
807− .inputs = colorchannelmixer_inputs,
808− .outputs = colorchannelmixer_outputs,
805+ FILTER_INPUTS(colorchannelmixer_inputs),
806+ FILTER_OUTPUTS(colorchannelmixer_outputs),
809807 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
810808 .process_command = process_command,
811809 };
libavfilter/vf_colorconstancy.c+2−4
@@ -726,7 +726,6 @@ static const AVFilterPad colorconstancy_inputs[] = { · 725 unmodified lines
726726 .config_props = config_props,
727727 .filter_frame = filter_frame,
728728 },
729− { NULL }
730729 };
731730
732731 static const AVFilterPad colorconstancy_outputs[] = {
@@ -734,7 +733,6 @@ static const AVFilterPad colorconstancy_outputs[] = { · 1 unmodified line
734733 .name = "default",
735734 .type = AVMEDIA_TYPE_VIDEO,
736735 },
737− { NULL }
738736 };
739737
740738 #if CONFIG_GREYEDGE_FILTER
@@ -755,8 +753,8 @@ const AVFilter ff_vf_greyedge = { · 14 unmodified lines
755753 .priv_class = &greyedge_class,
756754 .query_formats = query_formats,
757755 .uninit = uninit,
758− .inputs = colorconstancy_inputs,
759− .outputs = colorconstancy_outputs,
756+ FILTER_INPUTS(colorconstancy_inputs),
757+ FILTER_OUTPUTS(colorconstancy_outputs),
760758 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
761759 };
762760
libavfilter/vf_colorcontrast.c+2−4
@@ -362,7 +362,6 @@ static const AVFilterPad colorcontrast_inputs[] = { · 361 unmodified lines
362362 .filter_frame = filter_frame,
363363 .config_props = config_input,
364364 },
365− { NULL }
366365 };
367366
368367 static const AVFilterPad colorcontrast_outputs[] = {
@@ -370,7 +369,6 @@ static const AVFilterPad colorcontrast_outputs[] = { · 1 unmodified line
370369 .name = "default",
371370 .type = AVMEDIA_TYPE_VIDEO,
372371 },
373− { NULL }
374372 };
375373
376374 #define OFFSET(x) offsetof(ColorContrastContext, x)
@@ -395,8 +393,8 @@ const AVFilter ff_vf_colorcontrast = { · 18 unmodified lines
395393 .priv_size = sizeof(ColorContrastContext),
396394 .priv_class = &colorcontrast_class,
397395 .query_formats = query_formats,
398− .inputs = colorcontrast_inputs,
399− .outputs = colorcontrast_outputs,
396+ FILTER_INPUTS(colorcontrast_inputs),
397+ FILTER_OUTPUTS(colorcontrast_outputs),
400398 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
401399 .process_command = ff_filter_process_command,
402400 };
libavfilter/vf_colorcorrect.c+2−4
@@ -389,7 +389,6 @@ static const AVFilterPad colorcorrect_inputs[] = { · 388 unmodified lines
389389 .filter_frame = filter_frame,
390390 .config_props = config_input,
391391 },
392− { NULL }
393392 };
394393
395394 static const AVFilterPad colorcorrect_outputs[] = {
@@ -397,7 +396,6 @@ static const AVFilterPad colorcorrect_outputs[] = { · 1 unmodified line
397396 .name = "default",
398397 .type = AVMEDIA_TYPE_VIDEO,
399398 },
400− { NULL }
401399 };
402400
403401 #define OFFSET(x) offsetof(ColorCorrectContext, x)
@@ -425,8 +423,8 @@ const AVFilter ff_vf_colorcorrect = { · 21 unmodified lines
425423 .priv_class = &colorcorrect_class,
426424 .query_formats = query_formats,
427425 .uninit = uninit,
428− .inputs = colorcorrect_inputs,
429− .outputs = colorcorrect_outputs,
426+ FILTER_INPUTS(colorcorrect_inputs),
427+ FILTER_OUTPUTS(colorcorrect_outputs),
430428 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
431429 .process_command = ff_filter_process_command,
432430 };
libavfilter/vf_colorize.c+2−4
@@ -263,7 +263,6 @@ static const AVFilterPad colorize_inputs[] = { · 262 unmodified lines
263263 .filter_frame = filter_frame,
264264 .config_props = config_input,
265265 },
266− { NULL }
267266 };
268267
269268 static const AVFilterPad colorize_outputs[] = {
@@ -271,7 +270,6 @@ static const AVFilterPad colorize_outputs[] = { · 1 unmodified line
271270 .name = "default",
272271 .type = AVMEDIA_TYPE_VIDEO,
273272 },
274− { NULL }
275273 };
276274
277275 #define OFFSET(x) offsetof(ColorizeContext, x)
@@ -293,8 +291,8 @@ const AVFilter ff_vf_colorize = { · 15 unmodified lines
293291 .priv_size = sizeof(ColorizeContext),
294292 .priv_class = &colorize_class,
295293 .query_formats = query_formats,
296− .inputs = colorize_inputs,
297− .outputs = colorize_outputs,
294+ FILTER_INPUTS(colorize_inputs),
295+ FILTER_OUTPUTS(colorize_outputs),
298296 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
299297 .process_command = ff_filter_process_command,
300298 };
libavfilter/vf_colorkey.c+4−6
@@ -179,7 +179,6 @@ static const AVFilterPad colorkey_inputs[] = { · 178 unmodified lines
179179 .flags = AVFILTERPAD_FLAG_NEEDS_WRITABLE,
180180 .filter_frame = filter_frame,
181181 },
182− { NULL }
183182 };
184183
185184 static const AVFilterPad colorkey_outputs[] = {
@@ -188,7 +187,6 @@ static const AVFilterPad colorkey_outputs[] = { · 2 unmodified lines
188187 .type = AVMEDIA_TYPE_VIDEO,
189188 .config_props = config_output,
190189 },
191− { NULL }
192190 };
193191
194192 #define OFFSET(x) offsetof(ColorkeyContext, x)
@@ -212,8 +210,8 @@ const AVFilter ff_vf_colorkey = { · 17 unmodified lines
212210 .priv_class = &colorkey_class,
213211 .query_formats = query_formats,
214212 .init = init_filter,
215− .inputs = colorkey_inputs,
216− .outputs = colorkey_outputs,
213+ FILTER_INPUTS(colorkey_inputs),
214+ FILTER_OUTPUTS(colorkey_outputs),
217215 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
218216 .process_command = ff_filter_process_command,
219217 };
@@ -237,8 +235,8 @@ const AVFilter ff_vf_colorhold = { · 17 unmodified lines
237235 .priv_class = &colorhold_class,
238236 .query_formats = query_formats,
239237 .init = init_filter,
240− .inputs = colorkey_inputs,
241− .outputs = colorkey_outputs,
238+ FILTER_INPUTS(colorkey_inputs),
239+ FILTER_OUTPUTS(colorkey_outputs),
242240 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
243241 .process_command = ff_filter_process_command,
244242 };
libavfilter/vf_colorkey_opencl.c+2−4
@@ -206,7 +206,6 @@ static const AVFilterPad colorkey_opencl_inputs[] = { · 205 unmodified lines
206206 .filter_frame = filter_frame,
207207 .config_props = &ff_opencl_filter_config_input,
208208 },
209− { NULL }
210209 };
211210
212211 static const AVFilterPad colorkey_opencl_outputs[] = {
@@ -215,7 +214,6 @@ static const AVFilterPad colorkey_opencl_outputs[] = { · 2 unmodified lines
215214 .type = AVMEDIA_TYPE_VIDEO,
216215 .config_props = &ff_opencl_filter_config_output,
217216 },
218− { NULL }
219217 };
220218
221219 #define OFFSET(x) offsetof(ColorkeyOpenCLContext, x)
@@ -238,7 +236,7 @@ const AVFilter ff_vf_colorkey_opencl = { · 16 unmodified lines
238236 .init = &ff_opencl_filter_init,
239237 .uninit = &colorkey_opencl_uninit,
240238 .query_formats = &ff_opencl_filter_query_formats,
241− .inputs = colorkey_opencl_inputs,
242− .outputs = colorkey_opencl_outputs,
239+ FILTER_INPUTS(colorkey_opencl_inputs),
240+ FILTER_OUTPUTS(colorkey_opencl_outputs),
243241 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE
244242 };
libavfilter/vf_colorlevels.c+2−4
@@ -301,7 +301,6 @@ static const AVFilterPad colorlevels_inputs[] = { · 300 unmodified lines
301301 .filter_frame = filter_frame,
302302 .config_props = config_input,
303303 },
304− { NULL }
305304 };
306305
307306 static const AVFilterPad colorlevels_outputs[] = {
@@ -309,7 +308,6 @@ static const AVFilterPad colorlevels_outputs[] = { · 1 unmodified line
309308 .name = "default",
310309 .type = AVMEDIA_TYPE_VIDEO,
311310 },
312− { NULL }
313311 };
314312
315313 const AVFilter ff_vf_colorlevels = {
@@ -318,8 +316,8 @@ const AVFilter ff_vf_colorlevels = { · 2 unmodified lines
318316 .priv_size = sizeof(ColorLevelsContext),
319317 .priv_class = &colorlevels_class,
320318 .query_formats = query_formats,
321− .inputs = colorlevels_inputs,
322− .outputs = colorlevels_outputs,
319+ FILTER_INPUTS(colorlevels_inputs),
320+ FILTER_OUTPUTS(colorlevels_outputs),
323321 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
324322 .process_command = ff_filter_process_command,
325323 };
libavfilter/vf_colormatrix.c+2−4
@@ -493,7 +493,6 @@ static const AVFilterPad colormatrix_inputs[] = { · 492 unmodified lines
493493 .config_props = config_input,
494494 .filter_frame = filter_frame,
495495 },
496− { NULL }
497496 };
498497
499498 static const AVFilterPad colormatrix_outputs[] = {
@@ -501,7 +500,6 @@ static const AVFilterPad colormatrix_outputs[] = { · 1 unmodified line
501500 .name = "default",
502501 .type = AVMEDIA_TYPE_VIDEO,
503502 },
504− { NULL }
505503 };
506504
507505 const AVFilter ff_vf_colormatrix = {
@@ -510,8 +508,8 @@ const AVFilter ff_vf_colormatrix = { · 2 unmodified lines
510508 .priv_size = sizeof(ColorMatrixContext),
511509 .init = init,
512510 .query_formats = query_formats,
513− .inputs = colormatrix_inputs,
514− .outputs = colormatrix_outputs,
511+ FILTER_INPUTS(colormatrix_inputs),
512+ FILTER_OUTPUTS(colormatrix_outputs),
515513 .priv_class = &colormatrix_class,
516514 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
517515 };
libavfilter/vf_colorspace.c+2−4
@@ -1057,7 +1057,6 @@ static const AVFilterPad inputs[] = { · 1056 unmodified lines
10571057 .type = AVMEDIA_TYPE_VIDEO,
10581058 .filter_frame = filter_frame,
10591059 },
1060− { NULL }
10611060 };
10621061
10631062 static const AVFilterPad outputs[] = {
@@ -1066,7 +1065,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
10661065 .type = AVMEDIA_TYPE_VIDEO,
10671066 .config_props = config_props,
10681067 },
1069− { NULL }
10701068 };
10711069
10721070 const AVFilter ff_vf_colorspace = {
@@ -1077,7 +1075,7 @@ const AVFilter ff_vf_colorspace = { · 4 unmodified lines
10771075 .query_formats = query_formats,
10781076 .priv_size = sizeof(ColorSpaceContext),
10791077 .priv_class = &colorspace_class,
1080− .inputs = inputs,
1081− .outputs = outputs,
1078+ FILTER_INPUTS(inputs),
1079+ FILTER_OUTPUTS(outputs),
10821080 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
10831081 };
libavfilter/vf_colortemperature.c+2−4
@@ -328,7 +328,6 @@ static const AVFilterPad inputs[] = { · 327 unmodified lines
328328 .filter_frame = filter_frame,
329329 .config_props = config_input,
330330 },
331− { NULL }
332331 };
333332
334333 static const AVFilterPad outputs[] = {
@@ -336,7 +335,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
336335 .name = "default",
337336 .type = AVMEDIA_TYPE_VIDEO,
338337 },
339− { NULL }
340338 };
341339
342340 #define OFFSET(x) offsetof(ColorTemperatureContext, x)
@@ -357,8 +355,8 @@ const AVFilter ff_vf_colortemperature = { · 14 unmodified lines
357355 .priv_size = sizeof(ColorTemperatureContext),
358356 .priv_class = &colortemperature_class,
359357 .query_formats = query_formats,
360− .inputs = inputs,
361− .outputs = outputs,
358+ FILTER_INPUTS(inputs),
359+ FILTER_OUTPUTS(outputs),
362360 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
363361 .process_command = ff_filter_process_command,
364362 };
libavfilter/vf_convolution.c+10−12
@@ -890,7 +890,6 @@ static const AVFilterPad convolution_inputs[] = { · 889 unmodified lines
890890 .config_props = config_input,
891891 .filter_frame = filter_frame,
892892 },
893− { NULL }
894893 };
895894
896895 static const AVFilterPad convolution_outputs[] = {
@@ -898,7 +897,6 @@ static const AVFilterPad convolution_outputs[] = { · 1 unmodified line
898897 .name = "default",
899898 .type = AVMEDIA_TYPE_VIDEO,
900899 },
901− { NULL }
902900 };
903901
904902 #if CONFIG_CONVOLUTION_FILTER
@@ -910,8 +908,8 @@ const AVFilter ff_vf_convolution = { · 5 unmodified lines
910908 .priv_class = &convolution_class,
911909 .init = init,
912910 .query_formats = query_formats,
913− .inputs = convolution_inputs,
914− .outputs = convolution_outputs,
911+ FILTER_INPUTS(convolution_inputs),
912+ FILTER_OUTPUTS(convolution_outputs),
915913 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
916914 .process_command = process_command,
917915 };
@@ -939,8 +937,8 @@ const AVFilter ff_vf_prewitt = { · 21 unmodified lines
939937 .priv_class = &prewitt_class,
940938 .init = init,
941939 .query_formats = query_formats,
942− .inputs = convolution_inputs,
943− .outputs = convolution_outputs,
940+ FILTER_INPUTS(convolution_inputs),
941+ FILTER_OUTPUTS(convolution_outputs),
944942 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
945943 .process_command = process_command,
946944 };
@@ -959,8 +957,8 @@ const AVFilter ff_vf_sobel = { · 12 unmodified lines
959957 .priv_class = &sobel_class,
960958 .init = init,
961959 .query_formats = query_formats,
962− .inputs = convolution_inputs,
963− .outputs = convolution_outputs,
960+ FILTER_INPUTS(convolution_inputs),
961+ FILTER_OUTPUTS(convolution_outputs),
964962 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
965963 .process_command = process_command,
966964 };
@@ -979,8 +977,8 @@ const AVFilter ff_vf_roberts = { · 12 unmodified lines
979977 .priv_class = &roberts_class,
980978 .init = init,
981979 .query_formats = query_formats,
982− .inputs = convolution_inputs,
983− .outputs = convolution_outputs,
980+ FILTER_INPUTS(convolution_inputs),
981+ FILTER_OUTPUTS(convolution_outputs),
984982 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
985983 .process_command = process_command,
986984 };
@@ -999,8 +997,8 @@ const AVFilter ff_vf_kirsch = { · 12 unmodified lines
999997 .priv_class = &kirsch_class,
1000998 .init = init,
1001999 .query_formats = query_formats,
1002− .inputs = convolution_inputs,
1003− .outputs = convolution_outputs,
1000+ FILTER_INPUTS(convolution_inputs),
1001+ FILTER_OUTPUTS(convolution_outputs),
10041002 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
10051003 .process_command = process_command,
10061004 };
libavfilter/vf_convolution_opencl.c+8−10
@@ -327,7 +327,6 @@ static const AVFilterPad convolution_opencl_inputs[] = { · 326 unmodified lines
327327 .filter_frame = &convolution_opencl_filter_frame,
328328 .config_props = &ff_opencl_filter_config_input,
329329 },
330− { NULL }
331330 };
332331
333332 static const AVFilterPad convolution_opencl_outputs[] = {
@@ -336,7 +335,6 @@ static const AVFilterPad convolution_opencl_outputs[] = { · 2 unmodified lines
336335 .type = AVMEDIA_TYPE_VIDEO,
337336 .config_props = &ff_opencl_filter_config_output,
338337 },
339− { NULL }
340338 };
341339
342340 #define OFFSET(x) offsetof(ConvolutionOpenCLContext, x)
@@ -370,8 +368,8 @@ const AVFilter ff_vf_convolution_opencl = { · 27 unmodified lines
370368 .init = &ff_opencl_filter_init,
371369 .uninit = &convolution_opencl_uninit,
372370 .query_formats = &ff_opencl_filter_query_formats,
373− .inputs = convolution_opencl_inputs,
374− .outputs = convolution_opencl_outputs,
371+ FILTER_INPUTS(convolution_opencl_inputs),
372+ FILTER_OUTPUTS(convolution_opencl_outputs),
375373 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
376374 };
377375
@@ -396,8 +394,8 @@ const AVFilter ff_vf_sobel_opencl = { · 18 unmodified lines
396394 .init = &ff_opencl_filter_init,
397395 .uninit = &convolution_opencl_uninit,
398396 .query_formats = &ff_opencl_filter_query_formats,
399− .inputs = convolution_opencl_inputs,
400− .outputs = convolution_opencl_outputs,
397+ FILTER_INPUTS(convolution_opencl_inputs),
398+ FILTER_OUTPUTS(convolution_opencl_outputs),
401399 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
402400 };
403401
@@ -422,8 +420,8 @@ const AVFilter ff_vf_prewitt_opencl = { · 18 unmodified lines
422420 .init = &ff_opencl_filter_init,
423421 .uninit = &convolution_opencl_uninit,
424422 .query_formats = &ff_opencl_filter_query_formats,
425− .inputs = convolution_opencl_inputs,
426− .outputs = convolution_opencl_outputs,
423+ FILTER_INPUTS(convolution_opencl_inputs),
424+ FILTER_OUTPUTS(convolution_opencl_outputs),
427425 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
428426 };
429427
@@ -448,8 +446,8 @@ const AVFilter ff_vf_roberts_opencl = { · 18 unmodified lines
448446 .init = &ff_opencl_filter_init,
449447 .uninit = &convolution_opencl_uninit,
450448 .query_formats = &ff_opencl_filter_query_formats,
451− .inputs = convolution_opencl_inputs,
452− .outputs = convolution_opencl_outputs,
449+ FILTER_INPUTS(convolution_opencl_inputs),
450+ FILTER_OUTPUTS(convolution_opencl_outputs),
453451 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
454452 };
455453
libavfilter/vf_convolve.c+4−6
@@ -645,7 +645,6 @@ static const AVFilterPad convolve_inputs[] = { · 644 unmodified lines
645645 .type = AVMEDIA_TYPE_VIDEO,
646646 .config_props = config_input_impulse,
647647 },
648− { NULL }
649648 };
650649
651650 static const AVFilterPad convolve_outputs[] = {
@@ -654,7 +653,6 @@ static const AVFilterPad convolve_outputs[] = { · 2 unmodified lines
654653 .type = AVMEDIA_TYPE_VIDEO,
655654 .config_props = config_output,
656655 },
657− { NULL }
658656 };
659657
660658 #if CONFIG_CONVOLVE_FILTER
@@ -671,8 +669,8 @@ const AVFilter ff_vf_convolve = { · 10 unmodified lines
671669 .activate = activate,
672670 .priv_size = sizeof(ConvolveContext),
673671 .priv_class = &convolve_class,
674− .inputs = convolve_inputs,
675− .outputs = convolve_outputs,
672+ FILTER_INPUTS(convolve_inputs),
673+ FILTER_OUTPUTS(convolve_outputs),
676674 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
677675 };
678676
@@ -701,8 +699,8 @@ const AVFilter ff_vf_deconvolve = { · 22 unmodified lines
701699 .activate = activate,
702700 .priv_size = sizeof(ConvolveContext),
703701 .priv_class = &deconvolve_class,
704− .inputs = convolve_inputs,
705− .outputs = convolve_outputs,
702+ FILTER_INPUTS(convolve_inputs),
703+ FILTER_OUTPUTS(convolve_outputs),
706704 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
707705 };
708706
libavfilter/vf_copy.c+2−4
@@ -70,7 +70,6 @@ static const AVFilterPad avfilter_vf_copy_inputs[] = { · 69 unmodified lines
7070 .type = AVMEDIA_TYPE_VIDEO,
7171 .filter_frame = filter_frame,
7272 },
73− { NULL }
7473 };
7574
7675 static const AVFilterPad avfilter_vf_copy_outputs[] = {
@@ -78,13 +77,12 @@ static const AVFilterPad avfilter_vf_copy_outputs[] = { · 1 unmodified line
7877 .name = "default",
7978 .type = AVMEDIA_TYPE_VIDEO,
8079 },
81− { NULL }
8280 };
8381
8482 const AVFilter ff_vf_copy = {
8583 .name = "copy",
8684 .description = NULL_IF_CONFIG_SMALL("Copy the input video unchanged to the output."),
87− .inputs = avfilter_vf_copy_inputs,
88− .outputs = avfilter_vf_copy_outputs,
85+ FILTER_INPUTS(avfilter_vf_copy_inputs),
86+ FILTER_OUTPUTS(avfilter_vf_copy_outputs),
8987 .query_formats = query_formats,
9088 };
libavfilter/vf_coreimage.m+3−6
@@ -608,7 +608,6 @@ static const AVFilterPad vf_coreimage_inputs[] = { · 607 unmodified lines
608608 .filter_frame = filter_frame,
609609 .config_props = config_input,
610610 },
611− { NULL }
612611 };
613612
614613 static const AVFilterPad vf_coreimage_outputs[] = {
@@ -616,7 +615,6 @@ static const AVFilterPad vf_coreimage_outputs[] = { · 1 unmodified line
616615 .name = "default",
617616 .type = AVMEDIA_TYPE_VIDEO,
618617 },
619− { NULL }
620618 };
621619
622620 static const AVFilterPad vsrc_coreimagesrc_outputs[] = {
@@ -626,7 +624,6 @@ static const AVFilterPad vsrc_coreimagesrc_outputs[] = { · 3 unmodified lines
626624 .request_frame = request_frame,
627625 .config_props = config_output,
628626 },
629− { NULL }
630627 };
631628
632629 #define OFFSET(x) offsetof(CoreImageContext, x)
@@ -663,8 +660,8 @@ const AVFilter ff_vf_coreimage = { · 30 unmodified lines
663660 .uninit = uninit,
664661 .priv_size = sizeof(CoreImageContext),
665662 .priv_class = &coreimage_class,
666− .inputs = vf_coreimage_inputs,
667− .outputs = vf_coreimage_outputs,
663+ FILTER_INPUTS(vf_coreimage_inputs),
664+ FILTER_OUTPUTS(vf_coreimage_outputs),
668665 .query_formats = query_formats,
669666 };
670667
@@ -685,6 +682,6 @@ const AVFilter ff_vsrc_coreimagesrc = { · 14 unmodified lines
685682 .priv_size = sizeof(CoreImageContext),
686683 .priv_class = &coreimagesrc_class,
687684 .inputs = NULL,
688− .outputs = vsrc_coreimagesrc_outputs,
685+ FILTER_OUTPUTS(vsrc_coreimagesrc_outputs),
689686 .query_formats = query_formats_src,
690687 };
libavfilter/vf_cover_rect.c+2−4
@@ -236,7 +236,6 @@ static const AVFilterPad cover_rect_inputs[] = { · 235 unmodified lines
236236 .config_props = config_input,
237237 .filter_frame = filter_frame,
238238 },
239− { NULL }
240239 };
241240
242241 static const AVFilterPad cover_rect_outputs[] = {
@@ -244,7 +243,6 @@ static const AVFilterPad cover_rect_outputs[] = { · 1 unmodified line
244243 .name = "default",
245244 .type = AVMEDIA_TYPE_VIDEO,
246245 },
247− { NULL }
248246 };
249247
250248 const AVFilter ff_vf_cover_rect = {
@@ -254,7 +252,7 @@ const AVFilter ff_vf_cover_rect = { · 3 unmodified lines
254252 .init = init,
255253 .uninit = uninit,
256254 .query_formats = query_formats,
257− .inputs = cover_rect_inputs,
258− .outputs = cover_rect_outputs,
255+ FILTER_INPUTS(cover_rect_inputs),
256+ FILTER_OUTPUTS(cover_rect_outputs),
259257 .priv_class = &cover_rect_class,
260258 };
libavfilter/vf_crop.c+2−4
@@ -380,7 +380,6 @@ static const AVFilterPad avfilter_vf_crop_inputs[] = { · 379 unmodified lines
380380 .filter_frame = filter_frame,
381381 .config_props = config_input,
382382 },
383− { NULL }
384383 };
385384
386385 static const AVFilterPad avfilter_vf_crop_outputs[] = {
@@ -389,7 +388,6 @@ static const AVFilterPad avfilter_vf_crop_outputs[] = { · 2 unmodified lines
389388 .type = AVMEDIA_TYPE_VIDEO,
390389 .config_props = config_output,
391390 },
392− { NULL }
393391 };
394392
395393 const AVFilter ff_vf_crop = {
@@ -399,7 +397,7 @@ const AVFilter ff_vf_crop = { · 3 unmodified lines
399397 .priv_class = &crop_class,
400398 .query_formats = query_formats,
401399 .uninit = uninit,
402− .inputs = avfilter_vf_crop_inputs,
403− .outputs = avfilter_vf_crop_outputs,
400+ FILTER_INPUTS(avfilter_vf_crop_inputs),
401+ FILTER_OUTPUTS(avfilter_vf_crop_outputs),
404402 .process_command = process_command,
405403 };
libavfilter/vf_cropdetect.c+2−4
@@ -260,7 +260,6 @@ static const AVFilterPad avfilter_vf_cropdetect_inputs[] = { · 259 unmodified lines
260260 .config_props = config_input,
261261 .filter_frame = filter_frame,
262262 },
263− { NULL }
264263 };
265264
266265 static const AVFilterPad avfilter_vf_cropdetect_outputs[] = {
@@ -268,7 +267,6 @@ static const AVFilterPad avfilter_vf_cropdetect_outputs[] = { · 1 unmodified line
268267 .name = "default",
269268 .type = AVMEDIA_TYPE_VIDEO
270269 },
271− { NULL }
272270 };
273271
274272 const AVFilter ff_vf_cropdetect = {
@@ -278,7 +276,7 @@ const AVFilter ff_vf_cropdetect = { · 3 unmodified lines
278276 .priv_class = &cropdetect_class,
279277 .init = init,
280278 .query_formats = query_formats,
281− .inputs = avfilter_vf_cropdetect_inputs,
282− .outputs = avfilter_vf_cropdetect_outputs,
279+ FILTER_INPUTS(avfilter_vf_cropdetect_inputs),
280+ FILTER_OUTPUTS(avfilter_vf_cropdetect_outputs),
283281 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
284282 };
libavfilter/vf_curves.c+2−4
@@ -800,7 +800,6 @@ static const AVFilterPad curves_inputs[] = { · 799 unmodified lines
800800 .filter_frame = filter_frame,
801801 .config_props = config_input,
802802 },
803− { NULL }
804803 };
805804
806805 static const AVFilterPad curves_outputs[] = {
@@ -808,7 +807,6 @@ static const AVFilterPad curves_outputs[] = { · 1 unmodified line
808807 .name = "default",
809808 .type = AVMEDIA_TYPE_VIDEO,
810809 },
811− { NULL }
812810 };
813811
814812 const AVFilter ff_vf_curves = {
@@ -818,8 +816,8 @@ const AVFilter ff_vf_curves = { · 3 unmodified lines
818816 .init = curves_init,
819817 .uninit = curves_uninit,
820818 .query_formats = query_formats,
821− .inputs = curves_inputs,
822− .outputs = curves_outputs,
819+ FILTER_INPUTS(curves_inputs),
820+ FILTER_OUTPUTS(curves_outputs),
823821 .priv_class = &curves_class,
824822 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
825823 .process_command = process_command,
libavfilter/vf_datascope.c+6−12
@@ -438,7 +438,6 @@ static const AVFilterPad inputs[] = { · 437 unmodified lines
438438 .filter_frame = filter_frame,
439439 .config_props = config_input,
440440 },
441− { NULL }
442441 };
443442
444443 static const AVFilterPad outputs[] = {
@@ -447,7 +446,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
447446 .type = AVMEDIA_TYPE_VIDEO,
448447 .config_props = config_output,
449448 },
450− { NULL }
451449 };
452450
453451 const AVFilter ff_vf_datascope = {
@@ -456,8 +454,8 @@ const AVFilter ff_vf_datascope = { · 2 unmodified lines
456454 .priv_size = sizeof(DatascopeContext),
457455 .priv_class = &datascope_class,
458456 .query_formats = query_formats,
459− .inputs = inputs,
460− .outputs = outputs,
457+ FILTER_INPUTS(inputs),
458+ FILTER_OUTPUTS(outputs),
461459 .flags = AVFILTER_FLAG_SLICE_THREADS,
462460 .process_command = process_command,
463461 };
@@ -728,7 +726,6 @@ static const AVFilterPad pixscope_inputs[] = { · 264 unmodified lines
728726 .filter_frame = pixscope_filter_frame,
729727 .config_props = pixscope_config_input,
730728 },
731− { NULL }
732729 };
733730
734731 static const AVFilterPad pixscope_outputs[] = {
@@ -736,7 +733,6 @@ static const AVFilterPad pixscope_outputs[] = { · 1 unmodified line
736733 .name = "default",
737734 .type = AVMEDIA_TYPE_VIDEO,
738735 },
739− { NULL }
740736 };
741737
742738 const AVFilter ff_vf_pixscope = {
@@ -745,8 +741,8 @@ const AVFilter ff_vf_pixscope = { · 2 unmodified lines
745741 .priv_size = sizeof(PixscopeContext),
746742 .priv_class = &pixscope_class,
747743 .query_formats = query_formats,
748− .inputs = pixscope_inputs,
749− .outputs = pixscope_outputs,
744+ FILTER_INPUTS(pixscope_inputs),
745+ FILTER_OUTPUTS(pixscope_outputs),
750746 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
751747 .process_command = pixscope_process_command,
752748 };
@@ -1134,7 +1130,6 @@ static const AVFilterPad oscilloscope_inputs[] = { · 381 unmodified lines
11341130 .filter_frame = oscilloscope_filter_frame,
11351131 .config_props = oscilloscope_config_input,
11361132 },
1137− { NULL }
11381133 };
11391134
11401135 static const AVFilterPad oscilloscope_outputs[] = {
@@ -1142,7 +1137,6 @@ static const AVFilterPad oscilloscope_outputs[] = { · 1 unmodified line
11421137 .name = "default",
11431138 .type = AVMEDIA_TYPE_VIDEO,
11441139 },
1145− { NULL }
11461140 };
11471141
11481142 const AVFilter ff_vf_oscilloscope = {
@@ -1152,8 +1146,8 @@ const AVFilter ff_vf_oscilloscope = { · 3 unmodified lines
11521146 .priv_class = &oscilloscope_class,
11531147 .query_formats = query_formats,
11541148 .uninit = oscilloscope_uninit,
1155− .inputs = oscilloscope_inputs,
1156− .outputs = oscilloscope_outputs,
1149+ FILTER_INPUTS(oscilloscope_inputs),
1150+ FILTER_OUTPUTS(oscilloscope_outputs),
11571151 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
11581152 .process_command = oscilloscope_process_command,
11591153 };
libavfilter/vf_dblur.c+2−4
@@ -281,7 +281,6 @@ static const AVFilterPad dblur_inputs[] = { · 280 unmodified lines
281281 .config_props = config_input,
282282 .filter_frame = filter_frame,
283283 },
284− { NULL }
285284 };
286285
287286 static const AVFilterPad dblur_outputs[] = {
@@ -289,7 +288,6 @@ static const AVFilterPad dblur_outputs[] = { · 1 unmodified line
289288 .name = "default",
290289 .type = AVMEDIA_TYPE_VIDEO,
291290 },
292− { NULL }
293291 };
294292
295293 const AVFilter ff_vf_dblur = {
@@ -299,8 +297,8 @@ const AVFilter ff_vf_dblur = { · 3 unmodified lines
299297 .priv_class = &dblur_class,
300298 .uninit = uninit,
301299 .query_formats = query_formats,
302− .inputs = dblur_inputs,
303− .outputs = dblur_outputs,
300+ FILTER_INPUTS(dblur_inputs),
301+ FILTER_OUTPUTS(dblur_outputs),
304302 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
305303 .process_command = ff_filter_process_command,
306304 };
libavfilter/vf_dctdnoiz.c+2−4
@@ -811,7 +811,6 @@ static const AVFilterPad dctdnoiz_inputs[] = { · 810 unmodified lines
811811 .filter_frame = filter_frame,
812812 .config_props = config_input,
813813 },
814− { NULL }
815814 };
816815
817816 static const AVFilterPad dctdnoiz_outputs[] = {
@@ -819,7 +818,6 @@ static const AVFilterPad dctdnoiz_outputs[] = { · 1 unmodified line
819818 .name = "default",
820819 .type = AVMEDIA_TYPE_VIDEO,
821820 },
822− { NULL }
823821 };
824822
825823 const AVFilter ff_vf_dctdnoiz = {
@@ -829,8 +827,8 @@ const AVFilter ff_vf_dctdnoiz = { · 3 unmodified lines
829827 .init = init,
830828 .uninit = uninit,
831829 .query_formats = query_formats,
832− .inputs = dctdnoiz_inputs,
833− .outputs = dctdnoiz_outputs,
830+ FILTER_INPUTS(dctdnoiz_inputs),
831+ FILTER_OUTPUTS(dctdnoiz_outputs),
834832 .priv_class = &dctdnoiz_class,
835833 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
836834 };
libavfilter/vf_deband.c+2−4
@@ -456,7 +456,6 @@ static const AVFilterPad avfilter_vf_deband_inputs[] = { · 455 unmodified lines
456456 .config_props = config_input,
457457 .filter_frame = filter_frame,
458458 },
459− { NULL }
460459 };
461460
462461 static const AVFilterPad avfilter_vf_deband_outputs[] = {
@@ -464,7 +463,6 @@ static const AVFilterPad avfilter_vf_deband_outputs[] = { · 1 unmodified line
464463 .name = "default",
465464 .type = AVMEDIA_TYPE_VIDEO,
466465 },
467− { NULL }
468466 };
469467
470468 const AVFilter ff_vf_deband = {
@@ -474,8 +472,8 @@ const AVFilter ff_vf_deband = { · 3 unmodified lines
474472 .priv_class = &deband_class,
475473 .uninit = uninit,
476474 .query_formats = query_formats,
477− .inputs = avfilter_vf_deband_inputs,
478− .outputs = avfilter_vf_deband_outputs,
475+ FILTER_INPUTS(avfilter_vf_deband_inputs),
476+ FILTER_OUTPUTS(avfilter_vf_deband_outputs),
479477 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
480478 .process_command = process_command,
481479 };
libavfilter/vf_deblock.c+2−4
@@ -398,7 +398,6 @@ static const AVFilterPad inputs[] = { · 397 unmodified lines
398398 .type = AVMEDIA_TYPE_VIDEO,
399399 .filter_frame = filter_frame,
400400 },
401− { NULL }
402401 };
403402
404403 static const AVFilterPad outputs[] = {
@@ -407,7 +406,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
407406 .type = AVMEDIA_TYPE_VIDEO,
408407 .config_props = config_output,
409408 },
410− { NULL }
411409 };
412410
413411 AVFILTER_DEFINE_CLASS(deblock);
@@ -418,8 +416,8 @@ const AVFilter ff_vf_deblock = { · 4 unmodified lines
418416 .priv_size = sizeof(DeblockContext),
419417 .priv_class = &deblock_class,
420418 .query_formats = query_formats,
421− .inputs = inputs,
422− .outputs = outputs,
419+ FILTER_INPUTS(inputs),
420+ FILTER_OUTPUTS(outputs),
423421 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
424422 .process_command = process_command,
425423 };
libavfilter/vf_decimate.c+1−2
@@ -428,7 +428,6 @@ static const AVFilterPad decimate_outputs[] = { · 427 unmodified lines
428428 .type = AVMEDIA_TYPE_VIDEO,
429429 .config_props = config_output,
430430 },
431− { NULL }
432431 };
433432
434433 const AVFilter ff_vf_decimate = {
@@ -439,7 +438,7 @@ const AVFilter ff_vf_decimate = { · 4 unmodified lines
439438 .uninit = decimate_uninit,
440439 .priv_size = sizeof(DecimateContext),
441440 .query_formats = query_formats,
442− .outputs = decimate_outputs,
441+ FILTER_OUTPUTS(decimate_outputs),
443442 .priv_class = &decimate_class,
444443 .flags = AVFILTER_FLAG_DYNAMIC_INPUTS,
445444 };
libavfilter/vf_dedot.c+2−4
@@ -384,7 +384,6 @@ static const AVFilterPad inputs[] = { · 383 unmodified lines
384384 .name = "default",
385385 .type = AVMEDIA_TYPE_VIDEO,
386386 },
387− { NULL }
388387 };
389388
390389 static const AVFilterPad outputs[] = {
@@ -393,7 +392,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
393392 .type = AVMEDIA_TYPE_VIDEO,
394393 .config_props = config_output,
395394 },
396− { NULL }
397395 };
398396
399397 AVFILTER_DEFINE_CLASS(dedot);
@@ -406,7 +404,7 @@ const AVFilter ff_vf_dedot = { · 6 unmodified lines
406404 .query_formats = query_formats,
407405 .activate = activate,
408406 .uninit = uninit,
409− .inputs = inputs,
410− .outputs = outputs,
407+ FILTER_INPUTS(inputs),
408+ FILTER_OUTPUTS(outputs),
411409 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
412410 };
libavfilter/vf_deflicker.c+2−4
@@ -451,7 +451,6 @@ static const AVFilterPad inputs[] = { · 450 unmodified lines
451451 .filter_frame = filter_frame,
452452 .config_props = config_input,
453453 },
454− { NULL }
455454 };
456455
457456 static const AVFilterPad outputs[] = {
@@ -460,7 +459,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
460459 .type = AVMEDIA_TYPE_VIDEO,
461460 .request_frame = request_frame,
462461 },
463− { NULL }
464462 };
465463
466464 const AVFilter ff_vf_deflicker = {
@@ -470,6 +468,6 @@ const AVFilter ff_vf_deflicker = { · 3 unmodified lines
470468 .priv_class = &deflicker_class,
471469 .uninit = uninit,
472470 .query_formats = query_formats,
473− .inputs = inputs,
474− .outputs = outputs,
471+ FILTER_INPUTS(inputs),
472+ FILTER_OUTPUTS(outputs),
475473 };
libavfilter/vf_deinterlace_qsv.c+2−4
@@ -576,7 +576,6 @@ static const AVFilterPad qsvdeint_inputs[] = { · 575 unmodified lines
576576 .type = AVMEDIA_TYPE_VIDEO,
577577 .filter_frame = qsvdeint_filter_frame,
578578 },
579− { NULL }
580579 };
581580
582581 static const AVFilterPad qsvdeint_outputs[] = {
@@ -586,7 +585,6 @@ static const AVFilterPad qsvdeint_outputs[] = { · 3 unmodified lines
586585 .config_props = qsvdeint_config_props,
587586 .request_frame = qsvdeint_request_frame,
588587 },
589− { NULL }
590588 };
591589
592590 const AVFilter ff_vf_deinterlace_qsv = {
@@ -599,8 +597,8 @@ const AVFilter ff_vf_deinterlace_qsv = { · 6 unmodified lines
599597 .priv_size = sizeof(QSVDeintContext),
600598 .priv_class = &qsvdeint_class,
601599
602− .inputs = qsvdeint_inputs,
603− .outputs = qsvdeint_outputs,
600+ FILTER_INPUTS(qsvdeint_inputs),
601+ FILTER_OUTPUTS(qsvdeint_outputs),
604602
605603 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
606604 };
libavfilter/vf_deinterlace_vaapi.c+2−4
@@ -369,7 +369,6 @@ static const AVFilterPad deint_vaapi_inputs[] = { · 368 unmodified lines
369369 .filter_frame = &deint_vaapi_filter_frame,
370370 .config_props = &ff_vaapi_vpp_config_input,
371371 },
372− { NULL }
373372 };
374373
375374 static const AVFilterPad deint_vaapi_outputs[] = {
@@ -378,7 +377,6 @@ static const AVFilterPad deint_vaapi_outputs[] = { · 2 unmodified lines
378377 .type = AVMEDIA_TYPE_VIDEO,
379378 .config_props = &deint_vaapi_config_output,
380379 },
381− { NULL }
382380 };
383381
384382 const AVFilter ff_vf_deinterlace_vaapi = {
@@ -388,8 +386,8 @@ const AVFilter ff_vf_deinterlace_vaapi = { · 3 unmodified lines
388386 .init = &deint_vaapi_init,
389387 .uninit = &ff_vaapi_vpp_ctx_uninit,
390388 .query_formats = &ff_vaapi_vpp_query_formats,
391− .inputs = deint_vaapi_inputs,
392− .outputs = deint_vaapi_outputs,
389+ FILTER_INPUTS(deint_vaapi_inputs),
390+ FILTER_OUTPUTS(deint_vaapi_outputs),
393391 .priv_class = &deint_vaapi_class,
394392 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
395393 };
libavfilter/vf_dejudder.c+2−4
@@ -163,7 +163,6 @@ static const AVFilterPad dejudder_inputs[] = { · 162 unmodified lines
163163 .type = AVMEDIA_TYPE_VIDEO,
164164 .filter_frame = filter_frame,
165165 },
166− { NULL }
167166 };
168167
169168 static const AVFilterPad dejudder_outputs[] = {
@@ -172,7 +171,6 @@ static const AVFilterPad dejudder_outputs[] = { · 2 unmodified lines
172171 .type = AVMEDIA_TYPE_VIDEO,
173172 .config_props = config_out_props,
174173 },
175− { NULL }
176174 };
177175
178176 const AVFilter ff_vf_dejudder = {
@@ -180,8 +178,8 @@ const AVFilter ff_vf_dejudder = { · 1 unmodified line
180178 .description = NULL_IF_CONFIG_SMALL("Remove judder produced by pullup."),
181179 .priv_size = sizeof(DejudderContext),
182180 .priv_class = &dejudder_class,
183− .inputs = dejudder_inputs,
184− .outputs = dejudder_outputs,
181+ FILTER_INPUTS(dejudder_inputs),
182+ FILTER_OUTPUTS(dejudder_outputs),
185183 .init = dejudder_init,
186184 .uninit = dejudder_uninit,
187185 };
libavfilter/vf_delogo.c+2−4
@@ -384,7 +384,6 @@ static const AVFilterPad avfilter_vf_delogo_inputs[] = { · 383 unmodified lines
384384 .filter_frame = filter_frame,
385385 .config_props = config_input,
386386 },
387− { NULL }
388387 };
389388
390389 static const AVFilterPad avfilter_vf_delogo_outputs[] = {
@@ -392,7 +391,6 @@ static const AVFilterPad avfilter_vf_delogo_outputs[] = { · 1 unmodified line
392391 .name = "default",
393392 .type = AVMEDIA_TYPE_VIDEO,
394393 },
395− { NULL }
396394 };
397395
398396 const AVFilter ff_vf_delogo = {
@@ -403,7 +401,7 @@ const AVFilter ff_vf_delogo = { · 4 unmodified lines
403401 .init = init,
404402 .uninit = uninit,
405403 .query_formats = query_formats,
406− .inputs = avfilter_vf_delogo_inputs,
407− .outputs = avfilter_vf_delogo_outputs,
404+ FILTER_INPUTS(avfilter_vf_delogo_inputs),
405+ FILTER_OUTPUTS(avfilter_vf_delogo_outputs),
408406 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
409407 };
libavfilter/vf_derain.c+2−4
@@ -112,7 +112,6 @@ static const AVFilterPad derain_inputs[] = { · 111 unmodified lines
112112 .type = AVMEDIA_TYPE_VIDEO,
113113 .filter_frame = filter_frame,
114114 },
115− { NULL }
116115 };
117116
118117 static const AVFilterPad derain_outputs[] = {
@@ -120,7 +119,6 @@ static const AVFilterPad derain_outputs[] = { · 1 unmodified line
120119 .name = "default",
121120 .type = AVMEDIA_TYPE_VIDEO,
122121 },
123− { NULL }
124122 };
125123
126124 const AVFilter ff_vf_derain = {
@@ -130,8 +128,8 @@ const AVFilter ff_vf_derain = { · 3 unmodified lines
130128 .init = init,
131129 .uninit = uninit,
132130 .query_formats = query_formats,
133− .inputs = derain_inputs,
134− .outputs = derain_outputs,
131+ FILTER_INPUTS(derain_inputs),
132+ FILTER_OUTPUTS(derain_outputs),
135133 .priv_class = &derain_class,
136134 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
137135 };
libavfilter/vf_deshake.c+2−4
@@ -537,7 +537,6 @@ static const AVFilterPad deshake_inputs[] = { · 536 unmodified lines
537537 .filter_frame = filter_frame,
538538 .config_props = config_props,
539539 },
540− { NULL }
541540 };
542541
543542 static const AVFilterPad deshake_outputs[] = {
@@ -545,7 +544,6 @@ static const AVFilterPad deshake_outputs[] = { · 1 unmodified line
545544 .name = "default",
546545 .type = AVMEDIA_TYPE_VIDEO,
547546 },
548− { NULL }
549547 };
550548
551549 const AVFilter ff_vf_deshake = {
@@ -555,7 +553,7 @@ const AVFilter ff_vf_deshake = { · 3 unmodified lines
555553 .init = init,
556554 .uninit = uninit,
557555 .query_formats = query_formats,
558− .inputs = deshake_inputs,
559− .outputs = deshake_outputs,
556+ FILTER_INPUTS(deshake_inputs),
557+ FILTER_OUTPUTS(deshake_outputs),
560558 .priv_class = &deshake_class,
561559 };
libavfilter/vf_deshake_opencl.c+2−4
@@ -2141,7 +2141,6 @@ static const AVFilterPad deshake_opencl_inputs[] = { · 2140 unmodified lines
21412141 .type = AVMEDIA_TYPE_VIDEO,
21422142 .config_props = &ff_opencl_filter_config_input,
21432143 },
2144− { NULL }
21452144 };
21462145
21472146 static const AVFilterPad deshake_opencl_outputs[] = {
@@ -2150,7 +2149,6 @@ static const AVFilterPad deshake_opencl_outputs[] = { · 2 unmodified lines
21502149 .type = AVMEDIA_TYPE_VIDEO,
21512150 .config_props = &ff_opencl_filter_config_output,
21522151 },
2153− { NULL }
21542152 };
21552153
21562154 #define OFFSET(x) offsetof(DeshakeOpenCLContext, x)
@@ -2196,7 +2194,7 @@ const AVFilter ff_vf_deshake_opencl = { · 39 unmodified lines
21962194 .uninit = &deshake_opencl_uninit,
21972195 .query_formats = &ff_opencl_filter_query_formats,
21982196 .activate = activate,
2199− .inputs = deshake_opencl_inputs,
2200− .outputs = deshake_opencl_outputs,
2197+ FILTER_INPUTS(deshake_opencl_inputs),
2198+ FILTER_OUTPUTS(deshake_opencl_outputs),
22012199 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE
22022200 };
libavfilter/vf_despill.c+2−4
@@ -134,7 +134,6 @@ static const AVFilterPad despill_inputs[] = { · 133 unmodified lines
134134 .flags = AVFILTERPAD_FLAG_NEEDS_WRITABLE,
135135 .filter_frame = filter_frame,
136136 },
137− { NULL }
138137 };
139138
140139 static const AVFilterPad despill_outputs[] = {
@@ -143,7 +142,6 @@ static const AVFilterPad despill_outputs[] = { · 2 unmodified lines
143142 .type = AVMEDIA_TYPE_VIDEO,
144143 .config_props = config_output,
145144 },
146− { NULL }
147145 };
148146
149147 #define OFFSET(x) offsetof(DespillContext, x)
@@ -171,8 +169,8 @@ const AVFilter ff_vf_despill = { · 21 unmodified lines
171169 .priv_size = sizeof(DespillContext),
172170 .priv_class = &despill_class,
173171 .query_formats = query_formats,
174− .inputs = despill_inputs,
175− .outputs = despill_outputs,
172+ FILTER_INPUTS(despill_inputs),
173+ FILTER_OUTPUTS(despill_outputs),
176174 .process_command = ff_filter_process_command,
177175 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
178176 };
libavfilter/vf_detelecine.c+2−4
@@ -360,7 +360,6 @@ static const AVFilterPad detelecine_inputs[] = { · 359 unmodified lines
360360 .filter_frame = filter_frame,
361361 .config_props = config_input,
362362 },
363− { NULL }
364363 };
365364
366365 static const AVFilterPad detelecine_outputs[] = {
@@ -369,7 +368,6 @@ static const AVFilterPad detelecine_outputs[] = { · 2 unmodified lines
369368 .type = AVMEDIA_TYPE_VIDEO,
370369 .config_props = config_output,
371370 },
372− { NULL }
373371 };
374372
375373 const AVFilter ff_vf_detelecine = {
@@ -380,6 +378,6 @@ const AVFilter ff_vf_detelecine = { · 4 unmodified lines
380378 .init = init,
381379 .uninit = uninit,
382380 .query_formats = query_formats,
383− .inputs = detelecine_inputs,
384− .outputs = detelecine_outputs,
381+ FILTER_INPUTS(detelecine_inputs),
382+ FILTER_OUTPUTS(detelecine_outputs),
385383 };
libavfilter/vf_displace.c+2−4
@@ -388,7 +388,6 @@ static const AVFilterPad displace_inputs[] = { · 387 unmodified lines
388388 .name = "ymap",
389389 .type = AVMEDIA_TYPE_VIDEO,
390390 },
391− { NULL }
392391 };
393392
394393 static const AVFilterPad displace_outputs[] = {
@@ -397,7 +396,6 @@ static const AVFilterPad displace_outputs[] = { · 2 unmodified lines
397396 .type = AVMEDIA_TYPE_VIDEO,
398397 .config_props = config_output,
399398 },
400− { NULL }
401399 };
402400
403401 const AVFilter ff_vf_displace = {
@@ -407,8 +405,8 @@ const AVFilter ff_vf_displace = { · 3 unmodified lines
407405 .uninit = uninit,
408406 .query_formats = query_formats,
409407 .activate = activate,
410− .inputs = displace_inputs,
411− .outputs = displace_outputs,
408+ FILTER_INPUTS(displace_inputs),
409+ FILTER_OUTPUTS(displace_outputs),
412410 .priv_class = &displace_class,
413411 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
414412 };
libavfilter/vf_dnn_classify.c+2−4
@@ -308,7 +308,6 @@ static const AVFilterPad dnn_classify_inputs[] = { · 307 unmodified lines
308308 .name = "default",
309309 .type = AVMEDIA_TYPE_VIDEO,
310310 },
311− { NULL }
312311 };
313312
314313 static const AVFilterPad dnn_classify_outputs[] = {
@@ -316,7 +315,6 @@ static const AVFilterPad dnn_classify_outputs[] = { · 1 unmodified line
316315 .name = "default",
317316 .type = AVMEDIA_TYPE_VIDEO,
318317 },
319− { NULL }
320318 };
321319
322320 const AVFilter ff_vf_dnn_classify = {
@@ -326,8 +324,8 @@ const AVFilter ff_vf_dnn_classify = { · 3 unmodified lines
326324 .init = dnn_classify_init,
327325 .uninit = dnn_classify_uninit,
328326 .query_formats = dnn_classify_query_formats,
329− .inputs = dnn_classify_inputs,
330− .outputs = dnn_classify_outputs,
327+ FILTER_INPUTS(dnn_classify_inputs),
328+ FILTER_OUTPUTS(dnn_classify_outputs),
331329 .priv_class = &dnn_classify_class,
332330 .activate = dnn_classify_activate,
333331 };
libavfilter/vf_dnn_detect.c+2−4
@@ -518,7 +518,6 @@ static const AVFilterPad dnn_detect_inputs[] = { · 517 unmodified lines
518518 .name = "default",
519519 .type = AVMEDIA_TYPE_VIDEO,
520520 },
521− { NULL }
522521 };
523522
524523 static const AVFilterPad dnn_detect_outputs[] = {
@@ -526,7 +525,6 @@ static const AVFilterPad dnn_detect_outputs[] = { · 1 unmodified line
526525 .name = "default",
527526 .type = AVMEDIA_TYPE_VIDEO,
528527 },
529− { NULL }
530528 };
531529
532530 const AVFilter ff_vf_dnn_detect = {
@@ -536,8 +534,8 @@ const AVFilter ff_vf_dnn_detect = { · 3 unmodified lines
536534 .init = dnn_detect_init,
537535 .uninit = dnn_detect_uninit,
538536 .query_formats = dnn_detect_query_formats,
539− .inputs = dnn_detect_inputs,
540− .outputs = dnn_detect_outputs,
537+ FILTER_INPUTS(dnn_detect_inputs),
538+ FILTER_OUTPUTS(dnn_detect_outputs),
541539 .priv_class = &dnn_detect_class,
542540 .activate = dnn_detect_activate,
543541 };
libavfilter/vf_dnn_processing.c+2−4
@@ -434,7 +434,6 @@ static const AVFilterPad dnn_processing_inputs[] = { · 433 unmodified lines
434434 .type = AVMEDIA_TYPE_VIDEO,
435435 .config_props = config_input,
436436 },
437− { NULL }
438437 };
439438
440439 static const AVFilterPad dnn_processing_outputs[] = {
@@ -443,7 +442,6 @@ static const AVFilterPad dnn_processing_outputs[] = { · 2 unmodified lines
443442 .type = AVMEDIA_TYPE_VIDEO,
444443 .config_props = config_output,
445444 },
446− { NULL }
447445 };
448446
449447 const AVFilter ff_vf_dnn_processing = {
@@ -453,8 +451,8 @@ const AVFilter ff_vf_dnn_processing = { · 3 unmodified lines
453451 .init = init,
454452 .uninit = uninit,
455453 .query_formats = query_formats,
456− .inputs = dnn_processing_inputs,
457− .outputs = dnn_processing_outputs,
454+ FILTER_INPUTS(dnn_processing_inputs),
455+ FILTER_OUTPUTS(dnn_processing_outputs),
458456 .priv_class = &dnn_processing_class,
459457 .activate = activate,
460458 };
libavfilter/vf_drawbox.c+4−8
@@ -388,7 +388,6 @@ static const AVFilterPad drawbox_inputs[] = { · 387 unmodified lines
388388 .config_props = config_input,
389389 .filter_frame = filter_frame,
390390 },
391− { NULL }
392391 };
393392
394393 static const AVFilterPad drawbox_outputs[] = {
@@ -396,7 +395,6 @@ static const AVFilterPad drawbox_outputs[] = { · 1 unmodified line
396395 .name = "default",
397396 .type = AVMEDIA_TYPE_VIDEO,
398397 },
399− { NULL }
400398 };
401399
402400 const AVFilter ff_vf_drawbox = {
@@ -406,8 +404,8 @@ const AVFilter ff_vf_drawbox = { · 3 unmodified lines
406404 .priv_class = &drawbox_class,
407405 .init = init,
408406 .query_formats = query_formats,
409− .inputs = drawbox_inputs,
410− .outputs = drawbox_outputs,
407+ FILTER_INPUTS(drawbox_inputs),
408+ FILTER_OUTPUTS(drawbox_outputs),
411409 .process_command = process_command,
412410 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
413411 };
@@ -472,7 +470,6 @@ static const AVFilterPad drawgrid_inputs[] = { · 58 unmodified lines
472470 .config_props = config_input,
473471 .filter_frame = drawgrid_filter_frame,
474472 },
475− { NULL }
476473 };
477474
478475 static const AVFilterPad drawgrid_outputs[] = {
@@ -480,7 +477,6 @@ static const AVFilterPad drawgrid_outputs[] = { · 1 unmodified line
480477 .name = "default",
481478 .type = AVMEDIA_TYPE_VIDEO,
482479 },
483− { NULL }
484480 };
485481
486482 const AVFilter ff_vf_drawgrid = {
@@ -490,8 +486,8 @@ const AVFilter ff_vf_drawgrid = { · 3 unmodified lines
490486 .priv_class = &drawgrid_class,
491487 .init = init,
492488 .query_formats = query_formats,
493− .inputs = drawgrid_inputs,
494− .outputs = drawgrid_outputs,
489+ FILTER_INPUTS(drawgrid_inputs),
490+ FILTER_OUTPUTS(drawgrid_outputs),
495491 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
496492 .process_command = process_command,
497493 };
libavfilter/vf_drawtext.c+2−4
@@ -1619,7 +1619,6 @@ static const AVFilterPad avfilter_vf_drawtext_inputs[] = { · 1618 unmodified lines
16191619 .filter_frame = filter_frame,
16201620 .config_props = config_input,
16211621 },
1622− { NULL }
16231622 };
16241623
16251624 static const AVFilterPad avfilter_vf_drawtext_outputs[] = {
@@ -1627,7 +1626,6 @@ static const AVFilterPad avfilter_vf_drawtext_outputs[] = { · 1 unmodified line
16271626 .name = "default",
16281627 .type = AVMEDIA_TYPE_VIDEO,
16291628 },
1630− { NULL }
16311629 };
16321630
16331631 const AVFilter ff_vf_drawtext = {
@@ -1638,8 +1636,8 @@ const AVFilter ff_vf_drawtext = { · 4 unmodified lines
16381636 .init = init,
16391637 .uninit = uninit,
16401638 .query_formats = query_formats,
1641− .inputs = avfilter_vf_drawtext_inputs,
1642− .outputs = avfilter_vf_drawtext_outputs,
1639+ FILTER_INPUTS(avfilter_vf_drawtext_inputs),
1640+ FILTER_OUTPUTS(avfilter_vf_drawtext_outputs),
16431641 .process_command = command,
16441642 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
16451643 };
libavfilter/vf_edgedetect.c+2−4
@@ -416,7 +416,6 @@ static const AVFilterPad edgedetect_inputs[] = { · 415 unmodified lines
416416 .config_props = config_props,
417417 .filter_frame = filter_frame,
418418 },
419− { NULL }
420419 };
421420
422421 static const AVFilterPad edgedetect_outputs[] = {
@@ -424,7 +423,6 @@ static const AVFilterPad edgedetect_outputs[] = { · 1 unmodified line
424423 .name = "default",
425424 .type = AVMEDIA_TYPE_VIDEO,
426425 },
427− { NULL }
428426 };
429427
430428 const AVFilter ff_vf_edgedetect = {
@@ -434,8 +432,8 @@ const AVFilter ff_vf_edgedetect = { · 3 unmodified lines
434432 .init = init,
435433 .uninit = uninit,
436434 .query_formats = query_formats,
437− .inputs = edgedetect_inputs,
438− .outputs = edgedetect_outputs,
435+ FILTER_INPUTS(edgedetect_inputs),
436+ FILTER_OUTPUTS(edgedetect_outputs),
439437 .priv_class = &edgedetect_class,
440438 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
441439 };
libavfilter/vf_elbg.c+2−4
@@ -239,7 +239,6 @@ static const AVFilterPad elbg_inputs[] = { · 238 unmodified lines
239239 .config_props = config_input,
240240 .filter_frame = filter_frame,
241241 },
242− { NULL }
243242 };
244243
245244 static const AVFilterPad elbg_outputs[] = {
@@ -247,7 +246,6 @@ static const AVFilterPad elbg_outputs[] = { · 1 unmodified line
247246 .name = "default",
248247 .type = AVMEDIA_TYPE_VIDEO,
249248 },
250− { NULL }
251249 };
252250
253251 const AVFilter ff_vf_elbg = {
@@ -258,6 +256,6 @@ const AVFilter ff_vf_elbg = { · 4 unmodified lines
258256 .query_formats = query_formats,
259257 .init = init,
260258 .uninit = uninit,
261− .inputs = elbg_inputs,
262− .outputs = elbg_outputs,
259+ FILTER_INPUTS(elbg_inputs),
260+ FILTER_OUTPUTS(elbg_outputs),
263261 };
libavfilter/vf_entropy.c+2−4
@@ -179,7 +179,6 @@ static const AVFilterPad inputs[] = { · 178 unmodified lines
179179 .filter_frame = filter_frame,
180180 .config_props = config_input,
181181 },
182− { NULL }
183182 };
184183
185184 static const AVFilterPad outputs[] = {
@@ -187,7 +186,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
187186 .name = "default",
188187 .type = AVMEDIA_TYPE_VIDEO,
189188 },
190− { NULL }
191189 };
192190
193191 const AVFilter ff_vf_entropy = {
@@ -196,8 +194,8 @@ const AVFilter ff_vf_entropy = { · 2 unmodified lines
196194 .priv_size = sizeof(EntropyContext),
197195 .uninit = uninit,
198196 .query_formats = query_formats,
199− .inputs = inputs,
200− .outputs = outputs,
197+ FILTER_INPUTS(inputs),
198+ FILTER_OUTPUTS(outputs),
201199 .priv_class = &entropy_class,
202200 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
203201 };
libavfilter/vf_epx.c+2−4
@@ -260,7 +260,6 @@ static const AVFilterPad inputs[] = { · 259 unmodified lines
260260 .type = AVMEDIA_TYPE_VIDEO,
261261 .filter_frame = filter_frame,
262262 },
263− { NULL }
264263 };
265264
266265 static const AVFilterPad outputs[] = {
@@ -269,14 +268,13 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
269268 .type = AVMEDIA_TYPE_VIDEO,
270269 .config_props = config_output,
271270 },
272− { NULL }
273271 };
274272
275273 const AVFilter ff_vf_epx = {
276274 .name = "epx",
277275 .description = NULL_IF_CONFIG_SMALL("Scale the input using EPX algorithm."),
278− .inputs = inputs,
279− .outputs = outputs,
276+ FILTER_INPUTS(inputs),
277+ FILTER_OUTPUTS(outputs),
280278 .query_formats = query_formats,
281279 .priv_size = sizeof(EPXContext),
282280 .priv_class = &epx_class,
libavfilter/vf_eq.c+2−4
@@ -335,7 +335,6 @@ static const AVFilterPad eq_inputs[] = { · 334 unmodified lines
335335 .filter_frame = filter_frame,
336336 .config_props = config_props,
337337 },
338− { NULL }
339338 };
340339
341340 static const AVFilterPad eq_outputs[] = {
@@ -343,7 +342,6 @@ static const AVFilterPad eq_outputs[] = { · 1 unmodified line
343342 .name = "default",
344343 .type = AVMEDIA_TYPE_VIDEO,
345344 },
346− { NULL }
347345 };
348346
349347 #define OFFSET(x) offsetof(EQContext, x)
@@ -379,8 +377,8 @@ const AVFilter ff_vf_eq = { · 29 unmodified lines
379377 .description = NULL_IF_CONFIG_SMALL("Adjust brightness, contrast, gamma, and saturation."),
380378 .priv_size = sizeof(EQContext),
381379 .priv_class = &eq_class,
382− .inputs = eq_inputs,
383− .outputs = eq_outputs,
380+ FILTER_INPUTS(eq_inputs),
381+ FILTER_OUTPUTS(eq_outputs),
384382 .process_command = process_command,
385383 .query_formats = query_formats,
386384 .init = initialize,
libavfilter/vf_estdif.c+2−4
@@ -559,7 +559,6 @@ static const AVFilterPad estdif_inputs[] = { · 558 unmodified lines
559559 .filter_frame = filter_frame,
560560 .config_props = config_input,
561561 },
562− { NULL }
563562 };
564563
565564 static const AVFilterPad estdif_outputs[] = {
@@ -569,7 +568,6 @@ static const AVFilterPad estdif_outputs[] = { · 3 unmodified lines
569568 .config_props = config_output,
570569 .request_frame = request_frame,
571570 },
572− { NULL }
573571 };
574572
575573 const AVFilter ff_vf_estdif = {
@@ -579,8 +577,8 @@ const AVFilter ff_vf_estdif = { · 3 unmodified lines
579577 .priv_class = &estdif_class,
580578 .uninit = uninit,
581579 .query_formats = query_formats,
582− .inputs = estdif_inputs,
583− .outputs = estdif_outputs,
580+ FILTER_INPUTS(estdif_inputs),
581+ FILTER_OUTPUTS(estdif_outputs),
584582 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
585583 .process_command = ff_filter_process_command,
586584 };
libavfilter/vf_exposure.c+2−4
@@ -103,7 +103,6 @@ static const AVFilterPad exposure_inputs[] = { · 102 unmodified lines
103103 .filter_frame = filter_frame,
104104 .config_props = config_input,
105105 },
106− { NULL }
107106 };
108107
109108 static const AVFilterPad exposure_outputs[] = {
@@ -111,7 +110,6 @@ static const AVFilterPad exposure_outputs[] = { · 1 unmodified line
111110 .name = "default",
112111 .type = AVMEDIA_TYPE_VIDEO,
113112 },
114− { NULL }
115113 };
116114
117115 #define OFFSET(x) offsetof(ExposureContext, x)
@@ -131,8 +129,8 @@ const AVFilter ff_vf_exposure = { · 13 unmodified lines
131129 .priv_size = sizeof(ExposureContext),
132130 .priv_class = &exposure_class,
133131 .query_formats = query_formats,
134− .inputs = exposure_inputs,
135− .outputs = exposure_outputs,
132+ FILTER_INPUTS(exposure_inputs),
133+ FILTER_OUTPUTS(exposure_outputs),
136134 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
137135 .process_command = ff_filter_process_command,
138136 };
libavfilter/vf_extractplanes.c+2−3
@@ -376,7 +376,6 @@ static const AVFilterPad extractplanes_inputs[] = { · 375 unmodified lines
376376 .filter_frame = filter_frame,
377377 .config_props = config_input,
378378 },
379− { NULL }
380379 };
381380
382381 const AVFilter ff_vf_extractplanes = {
@@ -387,7 +386,7 @@ const AVFilter ff_vf_extractplanes = { · 4 unmodified lines
387386 .init = init,
388387 .uninit = uninit,
389388 .query_formats = query_formats,
390− .inputs = extractplanes_inputs,
389+ FILTER_INPUTS(extractplanes_inputs),
391390 .outputs = NULL,
392391 .flags = AVFILTER_FLAG_DYNAMIC_OUTPUTS,
393392 };
@@ -411,7 +410,7 @@ const AVFilter ff_vf_alphaextract = { · 17 unmodified lines
411410 .init = init_alphaextract,
412411 .uninit = uninit,
413412 .query_formats = query_formats,
414− .inputs = extractplanes_inputs,
413+ FILTER_INPUTS(extractplanes_inputs),
415414 .outputs = NULL,
416415 .flags = AVFILTER_FLAG_DYNAMIC_OUTPUTS,
417416 };
libavfilter/vf_fade.c+2−4
@@ -555,7 +555,6 @@ static const AVFilterPad avfilter_vf_fade_inputs[] = { · 554 unmodified lines
555555 .config_props = config_input,
556556 .filter_frame = filter_frame,
557557 },
558− { NULL }
559558 };
560559
561560 static const AVFilterPad avfilter_vf_fade_outputs[] = {
@@ -563,7 +562,6 @@ static const AVFilterPad avfilter_vf_fade_outputs[] = { · 1 unmodified line
563562 .name = "default",
564563 .type = AVMEDIA_TYPE_VIDEO,
565564 },
566− { NULL }
567565 };
568566
569567 const AVFilter ff_vf_fade = {
@@ -573,8 +571,8 @@ const AVFilter ff_vf_fade = { · 3 unmodified lines
573571 .priv_size = sizeof(FadeContext),
574572 .priv_class = &fade_class,
575573 .query_formats = query_formats,
576− .inputs = avfilter_vf_fade_inputs,
577− .outputs = avfilter_vf_fade_outputs,
574+ FILTER_INPUTS(avfilter_vf_fade_inputs),
575+ FILTER_OUTPUTS(avfilter_vf_fade_outputs),
578576 .flags = AVFILTER_FLAG_SLICE_THREADS |
579577 AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
580578 };
libavfilter/vf_fftdnoiz.c+2−4
@@ -669,7 +669,6 @@ static const AVFilterPad fftdnoiz_inputs[] = { · 668 unmodified lines
669669 .filter_frame = filter_frame,
670670 .config_props = config_input,
671671 },
672− { NULL }
673672 };
674673
675674 static const AVFilterPad fftdnoiz_outputs[] = {
@@ -678,7 +677,6 @@ static const AVFilterPad fftdnoiz_outputs[] = { · 2 unmodified lines
678677 .type = AVMEDIA_TYPE_VIDEO,
679678 .request_frame = request_frame,
680679 },
681− { NULL }
682680 };
683681
684682 const AVFilter ff_vf_fftdnoiz = {
@@ -688,8 +686,8 @@ const AVFilter ff_vf_fftdnoiz = { · 3 unmodified lines
688686 .init = init,
689687 .uninit = uninit,
690688 .query_formats = query_formats,
691− .inputs = fftdnoiz_inputs,
692− .outputs = fftdnoiz_outputs,
689+ FILTER_INPUTS(fftdnoiz_inputs),
690+ FILTER_OUTPUTS(fftdnoiz_outputs),
693691 .priv_class = &fftdnoiz_class,
694692 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
695693 };
libavfilter/vf_fftfilt.c+2−4
@@ -414,7 +414,6 @@ static const AVFilterPad fftfilt_inputs[] = { · 413 unmodified lines
414414 .config_props = config_props,
415415 .filter_frame = filter_frame,
416416 },
417− { NULL }
418417 };
419418
420419 static const AVFilterPad fftfilt_outputs[] = {
@@ -422,7 +421,6 @@ static const AVFilterPad fftfilt_outputs[] = { · 1 unmodified line
422421 .name = "default",
423422 .type = AVMEDIA_TYPE_VIDEO,
424423 },
425− { NULL }
426424 };
427425
428426 const AVFilter ff_vf_fftfilt = {
@@ -430,8 +428,8 @@ const AVFilter ff_vf_fftfilt = { · 1 unmodified line
430428 .description = NULL_IF_CONFIG_SMALL("Apply arbitrary expressions to pixels in frequency domain."),
431429 .priv_size = sizeof(FFTFILTContext),
432430 .priv_class = &fftfilt_class,
433− .inputs = fftfilt_inputs,
434− .outputs = fftfilt_outputs,
431+ FILTER_INPUTS(fftfilt_inputs),
432+ FILTER_OUTPUTS(fftfilt_outputs),
435433 .query_formats = query_formats,
436434 .init = initialize,
437435 .uninit = uninit,
libavfilter/vf_field.c+2−4
@@ -89,7 +89,6 @@ static const AVFilterPad field_inputs[] = { · 88 unmodified lines
8989 .type = AVMEDIA_TYPE_VIDEO,
9090 .filter_frame = filter_frame,
9191 },
92− { NULL }
9392 };
9493
9594 static const AVFilterPad field_outputs[] = {
@@ -98,14 +97,13 @@ static const AVFilterPad field_outputs[] = { · 2 unmodified lines
9897 .type = AVMEDIA_TYPE_VIDEO,
9998 .config_props = config_props_output,
10099 },
101− { NULL }
102100 };
103101
104102 const AVFilter ff_vf_field = {
105103 .name = "field",
106104 .description = NULL_IF_CONFIG_SMALL("Extract a field from the input video."),
107105 .priv_size = sizeof(FieldContext),
108− .inputs = field_inputs,
109− .outputs = field_outputs,
106+ FILTER_INPUTS(field_inputs),
107+ FILTER_OUTPUTS(field_outputs),
110108 .priv_class = &field_class,
111109 };
libavfilter/vf_fieldhint.c+2−4
@@ -284,7 +284,6 @@ static const AVFilterPad inputs[] = { · 283 unmodified lines
284284 .config_props = config_input,
285285 .filter_frame = filter_frame,
286286 },
287− { NULL }
288287 };
289288
290289 static const AVFilterPad outputs[] = {
@@ -293,7 +292,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
293292 .type = AVMEDIA_TYPE_VIDEO,
294293 .request_frame = request_frame,
295294 },
296− { NULL }
297295 };
298296
299297 const AVFilter ff_vf_fieldhint = {
@@ -304,6 +302,6 @@ const AVFilter ff_vf_fieldhint = { · 4 unmodified lines
304302 .init = init,
305303 .uninit = uninit,
306304 .query_formats = query_formats,
307− .inputs = inputs,
308− .outputs = outputs,
305+ FILTER_INPUTS(inputs),
306+ FILTER_OUTPUTS(outputs),
309307 };
libavfilter/vf_fieldmatch.c+1−2
@@ -1037,7 +1037,6 @@ static const AVFilterPad fieldmatch_outputs[] = { · 1036 unmodified lines
10371037 .type = AVMEDIA_TYPE_VIDEO,
10381038 .config_props = config_output,
10391039 },
1040− { NULL }
10411040 };
10421041
10431042 const AVFilter ff_vf_fieldmatch = {
@@ -1049,7 +1048,7 @@ const AVFilter ff_vf_fieldmatch = { · 5 unmodified lines
10491048 .activate = activate,
10501049 .uninit = fieldmatch_uninit,
10511050 .inputs = NULL,
1052− .outputs = fieldmatch_outputs,
1051+ FILTER_OUTPUTS(fieldmatch_outputs),
10531052 .priv_class = &fieldmatch_class,
10541053 .flags = AVFILTER_FLAG_DYNAMIC_INPUTS,
10551054 };
libavfilter/vf_fieldorder.c+2−4
@@ -171,7 +171,6 @@ static const AVFilterPad avfilter_vf_fieldorder_inputs[] = { · 170 unmodified lines
171171 .config_props = config_input,
172172 .filter_frame = filter_frame,
173173 },
174− { NULL }
175174 };
176175
177176 static const AVFilterPad avfilter_vf_fieldorder_outputs[] = {
@@ -179,7 +178,6 @@ static const AVFilterPad avfilter_vf_fieldorder_outputs[] = { · 1 unmodified line
179178 .name = "default",
180179 .type = AVMEDIA_TYPE_VIDEO,
181180 },
182− { NULL }
183181 };
184182
185183 const AVFilter ff_vf_fieldorder = {
@@ -188,7 +186,7 @@ const AVFilter ff_vf_fieldorder = { · 2 unmodified lines
188186 .priv_size = sizeof(FieldOrderContext),
189187 .priv_class = &fieldorder_class,
190188 .query_formats = query_formats,
191− .inputs = avfilter_vf_fieldorder_inputs,
192− .outputs = avfilter_vf_fieldorder_outputs,
189+ FILTER_INPUTS(avfilter_vf_fieldorder_inputs),
190+ FILTER_OUTPUTS(avfilter_vf_fieldorder_outputs),
193191 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
194192 };
libavfilter/vf_fillborders.c+2−4
@@ -709,7 +709,6 @@ static const AVFilterPad fillborders_inputs[] = { · 708 unmodified lines
709709 .config_props = config_input,
710710 .filter_frame = filter_frame,
711711 },
712− { NULL }
713712 };
714713
715714 static const AVFilterPad fillborders_outputs[] = {
@@ -717,7 +716,6 @@ static const AVFilterPad fillborders_outputs[] = { · 1 unmodified line
717716 .name = "default",
718717 .type = AVMEDIA_TYPE_VIDEO,
719718 },
720− { NULL }
721719 };
722720
723721 const AVFilter ff_vf_fillborders = {
@@ -726,8 +724,8 @@ const AVFilter ff_vf_fillborders = { · 2 unmodified lines
726724 .priv_size = sizeof(FillBordersContext),
727725 .priv_class = &fillborders_class,
728726 .query_formats = query_formats,
729− .inputs = fillborders_inputs,
730− .outputs = fillborders_outputs,
727+ FILTER_INPUTS(fillborders_inputs),
728+ FILTER_OUTPUTS(fillborders_outputs),
731729 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
732730 .process_command = process_command,
733731 };
libavfilter/vf_find_rect.c+2−4
@@ -290,7 +290,6 @@ static const AVFilterPad foc_inputs[] = { · 289 unmodified lines
290290 .config_props = config_input,
291291 .filter_frame = filter_frame,
292292 },
293− { NULL }
294293 };
295294
296295 static const AVFilterPad foc_outputs[] = {
@@ -298,7 +297,6 @@ static const AVFilterPad foc_outputs[] = { · 1 unmodified line
298297 .name = "default",
299298 .type = AVMEDIA_TYPE_VIDEO,
300299 },
301− { NULL }
302300 };
303301
304302 const AVFilter ff_vf_find_rect = {
@@ -308,7 +306,7 @@ const AVFilter ff_vf_find_rect = { · 3 unmodified lines
308306 .init = init,
309307 .uninit = uninit,
310308 .query_formats = query_formats,
311− .inputs = foc_inputs,
312− .outputs = foc_outputs,
309+ FILTER_INPUTS(foc_inputs),
310+ FILTER_OUTPUTS(foc_outputs),
313311 .priv_class = &find_rect_class,
314312 };
libavfilter/vf_floodfill.c+2−4
@@ -385,7 +385,6 @@ static const AVFilterPad floodfill_inputs[] = { · 384 unmodified lines
385385 .filter_frame = filter_frame,
386386 .config_props = config_input,
387387 },
388− { NULL }
389388 };
390389
391390 static const AVFilterPad floodfill_outputs[] = {
@@ -393,7 +392,6 @@ static const AVFilterPad floodfill_outputs[] = { · 1 unmodified line
393392 .name = "default",
394393 .type = AVMEDIA_TYPE_VIDEO,
395394 },
396− { NULL }
397395 };
398396
399397 #define OFFSET(x) offsetof(FloodfillContext, x)
@@ -422,7 +420,7 @@ const AVFilter ff_vf_floodfill = { · 22 unmodified lines
422420 .priv_class = &floodfill_class,
423421 .query_formats = query_formats,
424422 .uninit = uninit,
425− .inputs = floodfill_inputs,
426− .outputs = floodfill_outputs,
423+ FILTER_INPUTS(floodfill_inputs),
424+ FILTER_OUTPUTS(floodfill_outputs),
427425 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
428426 };
libavfilter/vf_format.c+4−8
@@ -151,7 +151,6 @@ static const AVFilterPad avfilter_vf_format_inputs[] = { · 150 unmodified lines
151151 .type = AVMEDIA_TYPE_VIDEO,
152152 .get_buffer.video = ff_null_get_video_buffer,
153153 },
154− { NULL }
155154 };
156155
157156 static const AVFilterPad avfilter_vf_format_outputs[] = {
@@ -159,7 +158,6 @@ static const AVFilterPad avfilter_vf_format_outputs[] = { · 1 unmodified line
159158 .name = "default",
160159 .type = AVMEDIA_TYPE_VIDEO
161160 },
162− { NULL }
163161 };
164162
165163 const AVFilter ff_vf_format = {
@@ -174,8 +172,8 @@ const AVFilter ff_vf_format = { · 8 unmodified lines
174172 .priv_size = sizeof(FormatContext),
175173 .priv_class = &format_class,
176174
177− .inputs = avfilter_vf_format_inputs,
178− .outputs = avfilter_vf_format_outputs,
175+ FILTER_INPUTS(avfilter_vf_format_inputs),
176+ FILTER_OUTPUTS(avfilter_vf_format_outputs),
179177 };
180178 #endif /* CONFIG_FORMAT_FILTER */
181179
@@ -190,7 +188,6 @@ static const AVFilterPad avfilter_vf_noformat_inputs[] = { · 8 unmodified lines
190188 .type = AVMEDIA_TYPE_VIDEO,
191189 .get_buffer.video = ff_null_get_video_buffer,
192190 },
193− { NULL }
194191 };
195192
196193 static const AVFilterPad avfilter_vf_noformat_outputs[] = {
@@ -198,7 +195,6 @@ static const AVFilterPad avfilter_vf_noformat_outputs[] = { · 1 unmodified line
198195 .name = "default",
199196 .type = AVMEDIA_TYPE_VIDEO
200197 },
201− { NULL }
202198 };
203199
204200 const AVFilter ff_vf_noformat = {
@@ -213,7 +209,7 @@ const AVFilter ff_vf_noformat = { · 8 unmodified lines
213209 .priv_size = sizeof(FormatContext),
214210 .priv_class = &noformat_class,
215211
216− .inputs = avfilter_vf_noformat_inputs,
217− .outputs = avfilter_vf_noformat_outputs,
212+ FILTER_INPUTS(avfilter_vf_noformat_inputs),
213+ FILTER_OUTPUTS(avfilter_vf_noformat_outputs),
218214 };
219215 #endif /* CONFIG_NOFORMAT_FILTER */
libavfilter/vf_fps.c+2−4
@@ -370,7 +370,6 @@ static const AVFilterPad avfilter_vf_fps_inputs[] = { · 369 unmodified lines
370370 .name = "default",
371371 .type = AVMEDIA_TYPE_VIDEO,
372372 },
373− { NULL }
374373 };
375374
376375 static const AVFilterPad avfilter_vf_fps_outputs[] = {
@@ -379,7 +378,6 @@ static const AVFilterPad avfilter_vf_fps_outputs[] = { · 2 unmodified lines
379378 .type = AVMEDIA_TYPE_VIDEO,
380379 .config_props = config_props,
381380 },
382− { NULL }
383381 };
384382
385383 const AVFilter ff_vf_fps = {
@@ -390,6 +388,6 @@ const AVFilter ff_vf_fps = { · 4 unmodified lines
390388 .priv_size = sizeof(FPSContext),
391389 .priv_class = &fps_class,
392390 .activate = activate,
393− .inputs = avfilter_vf_fps_inputs,
394− .outputs = avfilter_vf_fps_outputs,
391+ FILTER_INPUTS(avfilter_vf_fps_inputs),
392+ FILTER_OUTPUTS(avfilter_vf_fps_outputs),
395393 };
libavfilter/vf_framepack.c+2−4
@@ -454,7 +454,6 @@ static const AVFilterPad framepack_inputs[] = { · 453 unmodified lines
454454 .name = "right",
455455 .type = AVMEDIA_TYPE_VIDEO,
456456 },
457− { NULL }
458457 };
459458
460459 static const AVFilterPad framepack_outputs[] = {
@@ -463,7 +462,6 @@ static const AVFilterPad framepack_outputs[] = { · 2 unmodified lines
463462 .type = AVMEDIA_TYPE_VIDEO,
464463 .config_props = config_output,
465464 },
466− { NULL }
467465 };
468466
469467 const AVFilter ff_vf_framepack = {
@@ -472,8 +470,8 @@ const AVFilter ff_vf_framepack = { · 2 unmodified lines
472470 .priv_size = sizeof(FramepackContext),
473471 .priv_class = &framepack_class,
474472 .query_formats = query_formats,
475− .inputs = framepack_inputs,
476− .outputs = framepack_outputs,
473+ FILTER_INPUTS(framepack_inputs),
474+ FILTER_OUTPUTS(framepack_outputs),
477475 .activate = activate,
478476 .uninit = framepack_uninit,
479477 };
libavfilter/vf_framerate.c+2−4
@@ -427,7 +427,6 @@ static const AVFilterPad framerate_inputs[] = { · 426 unmodified lines
427427 .type = AVMEDIA_TYPE_VIDEO,
428428 .config_props = config_input,
429429 },
430− { NULL }
431430 };
432431
433432 static const AVFilterPad framerate_outputs[] = {
@@ -436,7 +435,6 @@ static const AVFilterPad framerate_outputs[] = { · 2 unmodified lines
436435 .type = AVMEDIA_TYPE_VIDEO,
437436 .config_props = config_output,
438437 },
439− { NULL }
440438 };
441439
442440 const AVFilter ff_vf_framerate = {
@@ -447,8 +445,8 @@ const AVFilter ff_vf_framerate = { · 4 unmodified lines
447445 .init = init,
448446 .uninit = uninit,
449447 .query_formats = query_formats,
450− .inputs = framerate_inputs,
451− .outputs = framerate_outputs,
448+ FILTER_INPUTS(framerate_inputs),
449+ FILTER_OUTPUTS(framerate_outputs),
452450 .flags = AVFILTER_FLAG_SLICE_THREADS,
453451 .activate = activate,
454452 };
libavfilter/vf_framestep.c+2−4
@@ -77,7 +77,6 @@ static const AVFilterPad framestep_inputs[] = { · 76 unmodified lines
7777 .type = AVMEDIA_TYPE_VIDEO,
7878 .filter_frame = filter_frame,
7979 },
80− { NULL }
8180 };
8281
8382 static const AVFilterPad framestep_outputs[] = {
@@ -86,7 +85,6 @@ static const AVFilterPad framestep_outputs[] = { · 2 unmodified lines
8685 .type = AVMEDIA_TYPE_VIDEO,
8786 .config_props = config_output_props,
8887 },
89− { NULL }
9088 };
9189
9290 const AVFilter ff_vf_framestep = {
@@ -94,7 +92,7 @@ const AVFilter ff_vf_framestep = { · 1 unmodified line
9492 .description = NULL_IF_CONFIG_SMALL("Select one frame every N frames."),
9593 .priv_size = sizeof(FrameStepContext),
9694 .priv_class = &framestep_class,
97− .inputs = framestep_inputs,
98− .outputs = framestep_outputs,
95+ FILTER_INPUTS(framestep_inputs),
96+ FILTER_OUTPUTS(framestep_outputs),
9997 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
10098 };
libavfilter/vf_freezedetect.c+2−4
@@ -207,7 +207,6 @@ static const AVFilterPad freezedetect_inputs[] = { · 206 unmodified lines
207207 .type = AVMEDIA_TYPE_VIDEO,
208208 .config_props = config_input,
209209 },
210− { NULL }
211210 };
212211
213212 static const AVFilterPad freezedetect_outputs[] = {
@@ -215,7 +214,6 @@ static const AVFilterPad freezedetect_outputs[] = { · 1 unmodified line
215214 .name = "default",
216215 .type = AVMEDIA_TYPE_VIDEO,
217216 },
218− { NULL }
219217 };
220218
221219 const AVFilter ff_vf_freezedetect = {
@@ -225,7 +223,7 @@ const AVFilter ff_vf_freezedetect = { · 3 unmodified lines
225223 .priv_class = &freezedetect_class,
226224 .uninit = uninit,
227225 .query_formats = query_formats,
228− .inputs = freezedetect_inputs,
229− .outputs = freezedetect_outputs,
226+ FILTER_INPUTS(freezedetect_inputs),
227+ FILTER_OUTPUTS(freezedetect_outputs),
230228 .activate = activate,
231229 };
libavfilter/vf_freezeframes.c+2−4
@@ -142,7 +142,6 @@ static const AVFilterPad freezeframes_inputs[] = { · 141 unmodified lines
142142 .name = "replace",
143143 .type = AVMEDIA_TYPE_VIDEO,
144144 },
145− { NULL },
146145 };
147146
148147 static const AVFilterPad freezeframes_outputs[] = {
@@ -151,7 +150,6 @@ static const AVFilterPad freezeframes_outputs[] = { · 2 unmodified lines
151150 .type = AVMEDIA_TYPE_VIDEO,
152151 .config_props = config_output,
153152 },
154− { NULL },
155153 };
156154
157155 const AVFilter ff_vf_freezeframes = {
@@ -159,8 +157,8 @@ const AVFilter ff_vf_freezeframes = { · 1 unmodified line
159157 .description = NULL_IF_CONFIG_SMALL("Freeze video frames."),
160158 .priv_size = sizeof(FreezeFramesContext),
161159 .priv_class = &freezeframes_class,
162− .inputs = freezeframes_inputs,
163− .outputs = freezeframes_outputs,
160+ FILTER_INPUTS(freezeframes_inputs),
161+ FILTER_OUTPUTS(freezeframes_outputs),
164162 .activate = activate,
165163 .uninit = uninit,
166164 };
libavfilter/vf_frei0r.c+3−6
@@ -402,7 +402,6 @@ static const AVFilterPad avfilter_vf_frei0r_inputs[] = { · 401 unmodified lines
402402 .config_props = config_input_props,
403403 .filter_frame = filter_frame,
404404 },
405− { NULL }
406405 };
407406
408407 static const AVFilterPad avfilter_vf_frei0r_outputs[] = {
@@ -410,7 +409,6 @@ static const AVFilterPad avfilter_vf_frei0r_outputs[] = { · 1 unmodified line
410409 .name = "default",
411410 .type = AVMEDIA_TYPE_VIDEO,
412411 },
413− { NULL }
414412 };
415413
416414 const AVFilter ff_vf_frei0r = {
@@ -421,8 +419,8 @@ const AVFilter ff_vf_frei0r = { · 4 unmodified lines
421419 .uninit = uninit,
422420 .priv_size = sizeof(Frei0rContext),
423421 .priv_class = &frei0r_class,
424− .inputs = avfilter_vf_frei0r_inputs,
425− .outputs = avfilter_vf_frei0r_outputs,
422+ FILTER_INPUTS(avfilter_vf_frei0r_inputs),
423+ FILTER_OUTPUTS(avfilter_vf_frei0r_outputs),
426424 .process_command = process_command,
427425 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
428426 };
@@ -498,7 +496,6 @@ static const AVFilterPad avfilter_vsrc_frei0r_src_outputs[] = { · 69 unmodified lines
498496 .request_frame = source_request_frame,
499497 .config_props = source_config_props
500498 },
501− { NULL }
502499 };
503500
504501 const AVFilter ff_vsrc_frei0r_src = {
@@ -510,5 +507,5 @@ const AVFilter ff_vsrc_frei0r_src = { · 5 unmodified lines
510507 .uninit = uninit,
511508 .query_formats = query_formats,
512509 .inputs = NULL,
513− .outputs = avfilter_vsrc_frei0r_src_outputs,
510+ FILTER_OUTPUTS(avfilter_vsrc_frei0r_src_outputs),
514511 };
libavfilter/vf_fspp.c+2−4
@@ -653,7 +653,6 @@ static const AVFilterPad fspp_inputs[] = { · 652 unmodified lines
653653 .config_props = config_input,
654654 .filter_frame = filter_frame,
655655 },
656− { NULL }
657656 };
658657
659658 static const AVFilterPad fspp_outputs[] = {
@@ -661,7 +660,6 @@ static const AVFilterPad fspp_outputs[] = { · 1 unmodified line
661660 .name = "default",
662661 .type = AVMEDIA_TYPE_VIDEO,
663662 },
664− { NULL }
665663 };
666664
667665 const AVFilter ff_vf_fspp = {
@@ -670,8 +668,8 @@ const AVFilter ff_vf_fspp = { · 2 unmodified lines
670668 .priv_size = sizeof(FSPPContext),
671669 .uninit = uninit,
672670 .query_formats = query_formats,
673− .inputs = fspp_inputs,
674− .outputs = fspp_outputs,
671+ FILTER_INPUTS(fspp_inputs),
672+ FILTER_OUTPUTS(fspp_outputs),
675673 .priv_class = &fspp_class,
676674 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
677675 };
libavfilter/vf_gblur.c+2−4
@@ -385,7 +385,6 @@ static const AVFilterPad gblur_inputs[] = { · 384 unmodified lines
385385 .config_props = config_input,
386386 .filter_frame = filter_frame,
387387 },
388− { NULL }
389388 };
390389
391390 static const AVFilterPad gblur_outputs[] = {
@@ -393,7 +392,6 @@ static const AVFilterPad gblur_outputs[] = { · 1 unmodified line
393392 .name = "default",
394393 .type = AVMEDIA_TYPE_VIDEO,
395394 },
396− { NULL }
397395 };
398396
399397 const AVFilter ff_vf_gblur = {
@@ -403,8 +401,8 @@ const AVFilter ff_vf_gblur = { · 3 unmodified lines
403401 .priv_class = &gblur_class,
404402 .uninit = uninit,
405403 .query_formats = query_formats,
406− .inputs = gblur_inputs,
407− .outputs = gblur_outputs,
404+ FILTER_INPUTS(gblur_inputs),
405+ FILTER_OUTPUTS(gblur_outputs),
408406 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
409407 .process_command = ff_filter_process_command,
410408 };
libavfilter/vf_geq.c+2−4
@@ -476,7 +476,6 @@ static const AVFilterPad geq_inputs[] = { · 475 unmodified lines
476476 .config_props = geq_config_props,
477477 .filter_frame = geq_filter_frame,
478478 },
479− { NULL }
480479 };
481480
482481 static const AVFilterPad geq_outputs[] = {
@@ -484,7 +483,6 @@ static const AVFilterPad geq_outputs[] = { · 1 unmodified line
484483 .name = "default",
485484 .type = AVMEDIA_TYPE_VIDEO,
486485 },
487− { NULL }
488486 };
489487
490488 const AVFilter ff_vf_geq = {
@@ -494,8 +492,8 @@ const AVFilter ff_vf_geq = { · 3 unmodified lines
494492 .init = geq_init,
495493 .uninit = geq_uninit,
496494 .query_formats = geq_query_formats,
497− .inputs = geq_inputs,
498− .outputs = geq_outputs,
495+ FILTER_INPUTS(geq_inputs),
496+ FILTER_OUTPUTS(geq_outputs),
499497 .priv_class = &geq_class,
500498 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
501499 };
libavfilter/vf_gradfun.c+2−4
@@ -237,7 +237,6 @@ static const AVFilterPad avfilter_vf_gradfun_inputs[] = { · 236 unmodified lines
237237 .config_props = config_input,
238238 .filter_frame = filter_frame,
239239 },
240− { NULL }
241240 };
242241
243242 static const AVFilterPad avfilter_vf_gradfun_outputs[] = {
@@ -245,7 +244,6 @@ static const AVFilterPad avfilter_vf_gradfun_outputs[] = { · 1 unmodified line
245244 .name = "default",
246245 .type = AVMEDIA_TYPE_VIDEO,
247246 },
248− { NULL }
249247 };
250248
251249 const AVFilter ff_vf_gradfun = {
@@ -256,7 +254,7 @@ const AVFilter ff_vf_gradfun = { · 4 unmodified lines
256254 .init = init,
257255 .uninit = uninit,
258256 .query_formats = query_formats,
259− .inputs = avfilter_vf_gradfun_inputs,
260− .outputs = avfilter_vf_gradfun_outputs,
257+ FILTER_INPUTS(avfilter_vf_gradfun_inputs),
258+ FILTER_OUTPUTS(avfilter_vf_gradfun_outputs),
261259 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
262260 };
libavfilter/vf_guided.c+1−2
@@ -486,7 +486,6 @@ static const AVFilterPad guided_outputs[] = { · 485 unmodified lines
486486 .type = AVMEDIA_TYPE_VIDEO,
487487 .config_props = config_output,
488488 },
489− { NULL }
490489 };
491490
492491 const AVFilter ff_vf_guided = {
@@ -499,7 +498,7 @@ const AVFilter ff_vf_guided = { · 6 unmodified lines
499498 .priv_class = &guided_class,
500499 .activate = activate,
501500 .inputs = NULL,
502− .outputs = guided_outputs,
501+ FILTER_OUTPUTS(guided_outputs),
503502 .flags = AVFILTER_FLAG_DYNAMIC_INPUTS | AVFILTER_FLAG_SLICE_THREADS |
504503 AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
505504 .process_command = process_command,
libavfilter/vf_hflip.c+2−4
@@ -235,7 +235,6 @@ static const AVFilterPad avfilter_vf_hflip_inputs[] = { · 234 unmodified lines
235235 .filter_frame = filter_frame,
236236 .config_props = config_props,
237237 },
238− { NULL }
239238 };
240239
241240 static const AVFilterPad avfilter_vf_hflip_outputs[] = {
@@ -243,7 +242,6 @@ static const AVFilterPad avfilter_vf_hflip_outputs[] = { · 1 unmodified line
243242 .name = "default",
244243 .type = AVMEDIA_TYPE_VIDEO,
245244 },
246− { NULL }
247245 };
248246
249247 const AVFilter ff_vf_hflip = {
@@ -252,7 +250,7 @@ const AVFilter ff_vf_hflip = { · 2 unmodified lines
252250 .priv_size = sizeof(FlipContext),
253251 .priv_class = &hflip_class,
254252 .query_formats = query_formats,
255− .inputs = avfilter_vf_hflip_inputs,
256− .outputs = avfilter_vf_hflip_outputs,
253+ FILTER_INPUTS(avfilter_vf_hflip_inputs),
254+ FILTER_OUTPUTS(avfilter_vf_hflip_outputs),
257255 .flags = AVFILTER_FLAG_SLICE_THREADS | AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
258256 };
libavfilter/vf_histeq.c+2−4
@@ -256,7 +256,6 @@ static const AVFilterPad histeq_inputs[] = { · 255 unmodified lines
256256 .config_props = config_input,
257257 .filter_frame = filter_frame,
258258 },
259− { NULL }
260259 };
261260
262261 static const AVFilterPad histeq_outputs[] = {
@@ -264,7 +263,6 @@ static const AVFilterPad histeq_outputs[] = { · 1 unmodified line
264263 .name = "default",
265264 .type = AVMEDIA_TYPE_VIDEO,
266265 },
267− { NULL }
268266 };
269267
270268 const AVFilter ff_vf_histeq = {
@@ -273,8 +271,8 @@ const AVFilter ff_vf_histeq = { · 2 unmodified lines
273271 .priv_size = sizeof(HisteqContext),
274272 .init = init,
275273 .query_formats = query_formats,
276− .inputs = histeq_inputs,
277− .outputs = histeq_outputs,
274+ FILTER_INPUTS(histeq_inputs),
275+ FILTER_OUTPUTS(histeq_outputs),
278276 .priv_class = &histeq_class,
279277 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
280278 };
libavfilter/vf_histogram.c+4−6
@@ -488,7 +488,6 @@ static const AVFilterPad inputs[] = { · 487 unmodified lines
488488 .filter_frame = filter_frame,
489489 .config_props = config_input,
490490 },
491− { NULL }
492491 };
493492
494493 static const AVFilterPad outputs[] = {
@@ -497,7 +496,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
497496 .type = AVMEDIA_TYPE_VIDEO,
498497 .config_props = config_output,
499498 },
500− { NULL }
501499 };
502500
503501 #if CONFIG_HISTOGRAM_FILTER
@@ -507,8 +505,8 @@ const AVFilter ff_vf_histogram = { · 3 unmodified lines
507505 .description = NULL_IF_CONFIG_SMALL("Compute and draw a histogram."),
508506 .priv_size = sizeof(HistogramContext),
509507 .query_formats = query_formats,
510− .inputs = inputs,
511− .outputs = outputs,
508+ FILTER_INPUTS(inputs),
509+ FILTER_OUTPUTS(outputs),
512510 .priv_class = &histogram_class,
513511 };
514512
@@ -549,8 +547,8 @@ const AVFilter ff_vf_thistogram = { · 34 unmodified lines
549547 .description = NULL_IF_CONFIG_SMALL("Compute and draw a temporal histogram."),
550548 .priv_size = sizeof(HistogramContext),
551549 .query_formats = query_formats,
552− .inputs = inputs,
553− .outputs = outputs,
550+ FILTER_INPUTS(inputs),
551+ FILTER_OUTPUTS(outputs),
554552 .uninit = uninit,
555553 .priv_class = &thistogram_class,
556554 };
libavfilter/vf_hqdn3d.c+2−4
@@ -383,7 +383,6 @@ static const AVFilterPad avfilter_vf_hqdn3d_inputs[] = { · 382 unmodified lines
383383 .config_props = config_input,
384384 .filter_frame = filter_frame,
385385 },
386− { NULL }
387386 };
388387
389388
@@ -392,7 +391,6 @@ static const AVFilterPad avfilter_vf_hqdn3d_outputs[] = { · 2 unmodified lines
392391 .name = "default",
393392 .type = AVMEDIA_TYPE_VIDEO
394393 },
395− { NULL }
396394 };
397395
398396 const AVFilter ff_vf_hqdn3d = {
@@ -403,8 +401,8 @@ const AVFilter ff_vf_hqdn3d = { · 4 unmodified lines
403401 .init = init,
404402 .uninit = uninit,
405403 .query_formats = query_formats,
406− .inputs = avfilter_vf_hqdn3d_inputs,
407− .outputs = avfilter_vf_hqdn3d_outputs,
404+ FILTER_INPUTS(avfilter_vf_hqdn3d_inputs),
405+ FILTER_OUTPUTS(avfilter_vf_hqdn3d_outputs),
408406 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
409407 .process_command = process_command,
410408 };
libavfilter/vf_hqx.c+2−4
@@ -539,7 +539,6 @@ static const AVFilterPad hqx_inputs[] = { · 538 unmodified lines
539539 .type = AVMEDIA_TYPE_VIDEO,
540540 .filter_frame = filter_frame,
541541 },
542− { NULL }
543542 };
544543
545544 static const AVFilterPad hqx_outputs[] = {
@@ -548,7 +547,6 @@ static const AVFilterPad hqx_outputs[] = { · 2 unmodified lines
548547 .type = AVMEDIA_TYPE_VIDEO,
549548 .config_props = config_output,
550549 },
551− { NULL }
552550 };
553551
554552 const AVFilter ff_vf_hqx = {
@@ -557,8 +555,8 @@ const AVFilter ff_vf_hqx = { · 2 unmodified lines
557555 .priv_size = sizeof(HQXContext),
558556 .init = init,
559557 .query_formats = query_formats,
560− .inputs = hqx_inputs,
561− .outputs = hqx_outputs,
558+ FILTER_INPUTS(hqx_inputs),
559+ FILTER_OUTPUTS(hqx_outputs),
562560 .priv_class = &hqx_class,
563561 .flags = AVFILTER_FLAG_SLICE_THREADS,
564562 };
libavfilter/vf_hue.c+2−4
@@ -502,7 +502,6 @@ static const AVFilterPad hue_inputs[] = { · 501 unmodified lines
502502 .filter_frame = filter_frame,
503503 .config_props = config_props,
504504 },
505− { NULL }
506505 };
507506
508507 static const AVFilterPad hue_outputs[] = {
@@ -510,7 +509,6 @@ static const AVFilterPad hue_outputs[] = { · 1 unmodified line
510509 .name = "default",
511510 .type = AVMEDIA_TYPE_VIDEO,
512511 },
513− { NULL }
514512 };
515513
516514 const AVFilter ff_vf_hue = {
@@ -521,8 +519,8 @@ const AVFilter ff_vf_hue = { · 4 unmodified lines
521519 .uninit = uninit,
522520 .query_formats = query_formats,
523521 .process_command = process_command,
524− .inputs = hue_inputs,
525− .outputs = hue_outputs,
522+ FILTER_INPUTS(hue_inputs),
523+ FILTER_OUTPUTS(hue_outputs),
526524 .priv_class = &hue_class,
527525 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
528526 };
libavfilter/vf_hwdownload.c+2−4
@@ -180,7 +180,6 @@ static const AVFilterPad hwdownload_inputs[] = { · 179 unmodified lines
180180 .config_props = hwdownload_config_input,
181181 .filter_frame = hwdownload_filter_frame,
182182 },
183− { NULL }
184183 };
185184
186185 static const AVFilterPad hwdownload_outputs[] = {
@@ -189,7 +188,6 @@ static const AVFilterPad hwdownload_outputs[] = { · 2 unmodified lines
189188 .type = AVMEDIA_TYPE_VIDEO,
190189 .config_props = hwdownload_config_output,
191190 },
192− { NULL }
193191 };
194192
195193 const AVFilter ff_vf_hwdownload = {
@@ -199,7 +197,7 @@ const AVFilter ff_vf_hwdownload = { · 3 unmodified lines
199197 .query_formats = hwdownload_query_formats,
200198 .priv_size = sizeof(HWDownloadContext),
201199 .priv_class = &hwdownload_class,
202− .inputs = hwdownload_inputs,
203− .outputs = hwdownload_outputs,
200+ FILTER_INPUTS(hwdownload_inputs),
201+ FILTER_OUTPUTS(hwdownload_outputs),
204202 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
205203 };
libavfilter/vf_hwmap.c+2−4
@@ -407,7 +407,6 @@ static const AVFilterPad hwmap_inputs[] = { · 406 unmodified lines
407407 .get_buffer.video = hwmap_get_buffer,
408408 .filter_frame = hwmap_filter_frame,
409409 },
410− { NULL }
411410 };
412411
413412 static const AVFilterPad hwmap_outputs[] = {
@@ -416,7 +415,6 @@ static const AVFilterPad hwmap_outputs[] = { · 2 unmodified lines
416415 .type = AVMEDIA_TYPE_VIDEO,
417416 .config_props = hwmap_config_output,
418417 },
419− { NULL }
420418 };
421419
422420 const AVFilter ff_vf_hwmap = {
@@ -426,7 +424,7 @@ const AVFilter ff_vf_hwmap = { · 3 unmodified lines
426424 .priv_size = sizeof(HWMapContext),
427425 .priv_class = &hwmap_class,
428426 .query_formats = hwmap_query_formats,
429− .inputs = hwmap_inputs,
430− .outputs = hwmap_outputs,
427+ FILTER_INPUTS(hwmap_inputs),
428+ FILTER_OUTPUTS(hwmap_outputs),
431429 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
432430 };
libavfilter/vf_hwupload.c+2−4
@@ -238,7 +238,6 @@ static const AVFilterPad hwupload_inputs[] = { · 237 unmodified lines
238238 .type = AVMEDIA_TYPE_VIDEO,
239239 .filter_frame = hwupload_filter_frame,
240240 },
241− { NULL }
242241 };
243242
244243 static const AVFilterPad hwupload_outputs[] = {
@@ -247,7 +246,6 @@ static const AVFilterPad hwupload_outputs[] = { · 2 unmodified lines
247246 .type = AVMEDIA_TYPE_VIDEO,
248247 .config_props = hwupload_config_output,
249248 },
250− { NULL }
251249 };
252250
253251 const AVFilter ff_vf_hwupload = {
@@ -257,7 +255,7 @@ const AVFilter ff_vf_hwupload = { · 3 unmodified lines
257255 .query_formats = hwupload_query_formats,
258256 .priv_size = sizeof(HWUploadContext),
259257 .priv_class = &hwupload_class,
260− .inputs = hwupload_inputs,
261− .outputs = hwupload_outputs,
258+ FILTER_INPUTS(hwupload_inputs),
259+ FILTER_OUTPUTS(hwupload_outputs),
262260 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
263261 };
libavfilter/vf_hwupload_cuda.c+2−4
@@ -171,7 +171,6 @@ static const AVFilterPad cudaupload_inputs[] = { · 170 unmodified lines
171171 .type = AVMEDIA_TYPE_VIDEO,
172172 .filter_frame = cudaupload_filter_frame,
173173 },
174− { NULL }
175174 };
176175
177176 static const AVFilterPad cudaupload_outputs[] = {
@@ -180,7 +179,6 @@ static const AVFilterPad cudaupload_outputs[] = { · 2 unmodified lines
180179 .type = AVMEDIA_TYPE_VIDEO,
181180 .config_props = cudaupload_config_output,
182181 },
183− { NULL }
184182 };
185183
186184 const AVFilter ff_vf_hwupload_cuda = {
@@ -195,8 +193,8 @@ const AVFilter ff_vf_hwupload_cuda = { · 8 unmodified lines
195193 .priv_size = sizeof(CudaUploadContext),
196194 .priv_class = &cudaupload_class,
197195
198− .inputs = cudaupload_inputs,
199− .outputs = cudaupload_outputs,
196+ FILTER_INPUTS(cudaupload_inputs),
197+ FILTER_OUTPUTS(cudaupload_outputs),
200198
201199 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
202200 };
libavfilter/vf_hysteresis.c+2−4
@@ -362,7 +362,6 @@ static const AVFilterPad hysteresis_inputs[] = { · 361 unmodified lines
362362 .name = "alt",
363363 .type = AVMEDIA_TYPE_VIDEO,
364364 },
365− { NULL }
366365 };
367366
368367 static const AVFilterPad hysteresis_outputs[] = {
@@ -371,7 +370,6 @@ static const AVFilterPad hysteresis_outputs[] = { · 2 unmodified lines
371370 .type = AVMEDIA_TYPE_VIDEO,
372371 .config_props = config_output,
373372 },
374− { NULL }
375373 };
376374
377375 const AVFilter ff_vf_hysteresis = {
@@ -382,8 +380,8 @@ const AVFilter ff_vf_hysteresis = { · 4 unmodified lines
382380 .uninit = uninit,
383381 .query_formats = query_formats,
384382 .activate = activate,
385− .inputs = hysteresis_inputs,
386− .outputs = hysteresis_outputs,
383+ FILTER_INPUTS(hysteresis_inputs),
384+ FILTER_OUTPUTS(hysteresis_outputs),
387385 .priv_class = &hysteresis_class,
388386 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
389387 };
libavfilter/vf_identity.c+4−6
@@ -390,7 +390,6 @@ static const AVFilterPad identity_inputs[] = { · 389 unmodified lines
390390 .type = AVMEDIA_TYPE_VIDEO,
391391 .config_props = config_input_ref,
392392 },
393− { NULL }
394393 };
395394
396395 static const AVFilterPad identity_outputs[] = {
@@ -399,7 +398,6 @@ static const AVFilterPad identity_outputs[] = { · 2 unmodified lines
399398 .type = AVMEDIA_TYPE_VIDEO,
400399 .config_props = config_output,
401400 },
402− { NULL }
403401 };
404402
405403 static const AVOption options[] = {
@@ -421,8 +419,8 @@ const AVFilter ff_vf_identity = { · 15 unmodified lines
421419 .activate = activate,
422420 .priv_size = sizeof(IdentityContext),
423421 .priv_class = &identity_class,
424− .inputs = identity_inputs,
425− .outputs = identity_outputs,
422+ FILTER_INPUTS(identity_inputs),
423+ FILTER_OUTPUTS(identity_outputs),
426424 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
427425 };
428426
@@ -443,8 +441,8 @@ const AVFilter ff_vf_msad = { · 14 unmodified lines
443441 .activate = activate,
444442 .priv_size = sizeof(IdentityContext),
445443 .priv_class = &msad_class,
446− .inputs = identity_inputs,
447− .outputs = identity_outputs,
444+ FILTER_INPUTS(identity_inputs),
445+ FILTER_OUTPUTS(identity_outputs),
448446 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
449447 };
450448
libavfilter/vf_idet.c+2−4
@@ -425,7 +425,6 @@ static const AVFilterPad idet_inputs[] = { · 424 unmodified lines
425425 .type = AVMEDIA_TYPE_VIDEO,
426426 .filter_frame = filter_frame,
427427 },
428− { NULL }
429428 };
430429
431430 static const AVFilterPad idet_outputs[] = {
@@ -434,7 +433,6 @@ static const AVFilterPad idet_outputs[] = { · 2 unmodified lines
434433 .type = AVMEDIA_TYPE_VIDEO,
435434 .request_frame = request_frame
436435 },
437− { NULL }
438436 };
439437
440438 const AVFilter ff_vf_idet = {
@@ -444,7 +442,7 @@ const AVFilter ff_vf_idet = { · 3 unmodified lines
444442 .init = init,
445443 .uninit = uninit,
446444 .query_formats = query_formats,
447− .inputs = idet_inputs,
448− .outputs = idet_outputs,
445+ FILTER_INPUTS(idet_inputs),
446+ FILTER_OUTPUTS(idet_outputs),
449447 .priv_class = &idet_class,
450448 };
libavfilter/vf_il.c+2−4
@@ -187,7 +187,6 @@ static const AVFilterPad inputs[] = { · 186 unmodified lines
187187 .filter_frame = filter_frame,
188188 .config_props = config_input,
189189 },
190− { NULL }
191190 };
192191
193192 static const AVFilterPad outputs[] = {
@@ -195,7 +194,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
195194 .name = "default",
196195 .type = AVMEDIA_TYPE_VIDEO,
197196 },
198− { NULL }
199197 };
200198
201199 const AVFilter ff_vf_il = {
@@ -203,8 +201,8 @@ const AVFilter ff_vf_il = { · 1 unmodified line
203201 .description = NULL_IF_CONFIG_SMALL("Deinterleave or interleave fields."),
204202 .priv_size = sizeof(IlContext),
205203 .query_formats = query_formats,
206− .inputs = inputs,
207− .outputs = outputs,
204+ FILTER_INPUTS(inputs),
205+ FILTER_OUTPUTS(outputs),
208206 .priv_class = &il_class,
209207 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
210208 .process_command = ff_filter_process_command,
libavfilter/vf_kerndeint.c+2−4
@@ -292,7 +292,6 @@ static const AVFilterPad kerndeint_inputs[] = { · 291 unmodified lines
292292 .filter_frame = filter_frame,
293293 .config_props = config_props,
294294 },
295− { NULL }
296295 };
297296
298297 static const AVFilterPad kerndeint_outputs[] = {
@@ -300,7 +299,6 @@ static const AVFilterPad kerndeint_outputs[] = { · 1 unmodified line
300299 .name = "default",
301300 .type = AVMEDIA_TYPE_VIDEO,
302301 },
303− { NULL }
304302 };
305303
306304
@@ -311,6 +309,6 @@ const AVFilter ff_vf_kerndeint = { · 4 unmodified lines
311309 .priv_class = &kerndeint_class,
312310 .uninit = uninit,
313311 .query_formats = query_formats,
314− .inputs = kerndeint_inputs,
315− .outputs = kerndeint_outputs,
312+ FILTER_INPUTS(kerndeint_inputs),
313+ FILTER_OUTPUTS(kerndeint_outputs),
316314 };
libavfilter/vf_lagfun.c+2−4
@@ -203,7 +203,6 @@ static const AVFilterPad inputs[] = { · 202 unmodified lines
203203 .type = AVMEDIA_TYPE_VIDEO,
204204 .filter_frame = filter_frame,
205205 },
206− { NULL }
207206 };
208207
209208 static const AVFilterPad outputs[] = {
@@ -212,7 +211,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
212211 .type = AVMEDIA_TYPE_VIDEO,
213212 .config_props = config_output,
214213 },
215− { NULL }
216214 };
217215
218216 AVFILTER_DEFINE_CLASS(lagfun);
@@ -224,8 +222,8 @@ const AVFilter ff_vf_lagfun = { · 5 unmodified lines
224222 .priv_class = &lagfun_class,
225223 .query_formats = query_formats,
226224 .uninit = uninit,
227− .outputs = outputs,
228− .inputs = inputs,
225+ FILTER_OUTPUTS(outputs),
226+ FILTER_INPUTS(inputs),
229227 .flags = AVFILTER_FLAG_SLICE_THREADS | AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
230228 .process_command = ff_filter_process_command,
231229 };
libavfilter/vf_lenscorrection.c+2−4
@@ -343,7 +343,6 @@ static const AVFilterPad lenscorrection_inputs[] = { · 342 unmodified lines
343343 .type = AVMEDIA_TYPE_VIDEO,
344344 .filter_frame = filter_frame,
345345 },
346− { NULL }
347346 };
348347
349348 static const AVFilterPad lenscorrection_outputs[] = {
@@ -352,7 +351,6 @@ static const AVFilterPad lenscorrection_outputs[] = { · 2 unmodified lines
352351 .type = AVMEDIA_TYPE_VIDEO,
353352 .config_props = config_output,
354353 },
355− { NULL }
356354 };
357355
358356 const AVFilter ff_vf_lenscorrection = {
@@ -360,8 +358,8 @@ const AVFilter ff_vf_lenscorrection = { · 1 unmodified line
360358 .description = NULL_IF_CONFIG_SMALL("Rectify the image by correcting for lens distortion."),
361359 .priv_size = sizeof(LenscorrectionCtx),
362360 .query_formats = query_formats,
363− .inputs = lenscorrection_inputs,
364− .outputs = lenscorrection_outputs,
361+ FILTER_INPUTS(lenscorrection_inputs),
362+ FILTER_OUTPUTS(lenscorrection_outputs),
365363 .priv_class = &lenscorrection_class,
366364 .uninit = uninit,
367365 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
libavfilter/vf_lensfun.c+2−4
@@ -519,7 +519,6 @@ static const AVFilterPad lensfun_inputs[] = { · 518 unmodified lines
519519 .config_props = config_props,
520520 .filter_frame = filter_frame,
521521 },
522− { NULL }
523522 };
524523
525524 static const AVFilterPad lensfun_outputs[] = {
@@ -527,7 +526,6 @@ static const AVFilterPad lensfun_outputs[] = { · 1 unmodified line
527526 .name = "default",
528527 .type = AVMEDIA_TYPE_VIDEO,
529528 },
530− { NULL }
531529 };
532530
533531 const AVFilter ff_vf_lensfun = {
@@ -537,8 +535,8 @@ const AVFilter ff_vf_lensfun = { · 3 unmodified lines
537535 .init = init,
538536 .uninit = uninit,
539537 .query_formats = query_formats,
540− .inputs = lensfun_inputs,
541− .outputs = lensfun_outputs,
538+ FILTER_INPUTS(lensfun_inputs),
539+ FILTER_OUTPUTS(lensfun_outputs),
542540 .priv_class = &lensfun_class,
543541 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
544542 };
libavfilter/vf_libopencv.c+2−4
@@ -413,7 +413,6 @@ static const AVFilterPad avfilter_vf_ocv_inputs[] = { · 412 unmodified lines
413413 .type = AVMEDIA_TYPE_VIDEO,
414414 .filter_frame = filter_frame,
415415 },
416− { NULL }
417416 };
418417
419418 static const AVFilterPad avfilter_vf_ocv_outputs[] = {
@@ -421,7 +420,6 @@ static const AVFilterPad avfilter_vf_ocv_outputs[] = { · 1 unmodified line
421420 .name = "default",
422421 .type = AVMEDIA_TYPE_VIDEO,
423422 },
424− { NULL }
425423 };
426424
427425 const AVFilter ff_vf_ocv = {
@@ -432,6 +430,6 @@ const AVFilter ff_vf_ocv = { · 4 unmodified lines
432430 .query_formats = query_formats,
433431 .init = init,
434432 .uninit = uninit,
435− .inputs = avfilter_vf_ocv_inputs,
436− .outputs = avfilter_vf_ocv_outputs,
433+ FILTER_INPUTS(avfilter_vf_ocv_inputs),
434+ FILTER_OUTPUTS(avfilter_vf_ocv_outputs),
437435 };
libavfilter/vf_libvmaf.c+2−4
@@ -350,7 +350,6 @@ static const AVFilterPad libvmaf_inputs[] = { · 349 unmodified lines
350350 .type = AVMEDIA_TYPE_VIDEO,
351351 .config_props = config_input_ref,
352352 },
353− { NULL }
354353 };
355354
356355 static const AVFilterPad libvmaf_outputs[] = {
@@ -359,7 +358,6 @@ static const AVFilterPad libvmaf_outputs[] = { · 2 unmodified lines
359358 .type = AVMEDIA_TYPE_VIDEO,
360359 .config_props = config_output,
361360 },
362− { NULL }
363361 };
364362
365363 const AVFilter ff_vf_libvmaf = {
@@ -372,6 +370,6 @@ const AVFilter ff_vf_libvmaf = { · 6 unmodified lines
372370 .activate = activate,
373371 .priv_size = sizeof(LIBVMAFContext),
374372 .priv_class = &libvmaf_class,
375− .inputs = libvmaf_inputs,
376− .outputs = libvmaf_outputs,
373+ FILTER_INPUTS(libvmaf_inputs),
374+ FILTER_OUTPUTS(libvmaf_outputs),
377375 };
libavfilter/vf_limiter.c+2−4
@@ -246,7 +246,6 @@ static const AVFilterPad inputs[] = { · 245 unmodified lines
246246 .filter_frame = filter_frame,
247247 .config_props = config_input,
248248 },
249− { NULL }
250249 };
251250
252251 static const AVFilterPad outputs[] = {
@@ -254,7 +253,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
254253 .name = "default",
255254 .type = AVMEDIA_TYPE_VIDEO,
256255 },
257− { NULL }
258256 };
259257
260258 const AVFilter ff_vf_limiter = {
@@ -264,8 +262,8 @@ const AVFilter ff_vf_limiter = { · 3 unmodified lines
264262 .priv_class = &limiter_class,
265263 .init = init,
266264 .query_formats = query_formats,
267− .inputs = inputs,
268− .outputs = outputs,
265+ FILTER_INPUTS(inputs),
266+ FILTER_OUTPUTS(outputs),
269267 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
270268 .process_command = process_command,
271269 };
libavfilter/vf_lumakey.c+2−4
@@ -176,7 +176,6 @@ static const AVFilterPad lumakey_inputs[] = { · 175 unmodified lines
176176 .filter_frame = filter_frame,
177177 .config_props = config_input,
178178 },
179− { NULL }
180179 };
181180
182181 static const AVFilterPad lumakey_outputs[] = {
@@ -184,7 +183,6 @@ static const AVFilterPad lumakey_outputs[] = { · 1 unmodified line
184183 .name = "default",
185184 .type = AVMEDIA_TYPE_VIDEO,
186185 },
187− { NULL }
188186 };
189187
190188 #define OFFSET(x) offsetof(LumakeyContext, x)
@@ -205,8 +203,8 @@ const AVFilter ff_vf_lumakey = { · 14 unmodified lines
205203 .priv_size = sizeof(LumakeyContext),
206204 .priv_class = &lumakey_class,
207205 .query_formats = query_formats,
208− .inputs = lumakey_inputs,
209− .outputs = lumakey_outputs,
206+ FILTER_INPUTS(lumakey_inputs),
207+ FILTER_OUTPUTS(lumakey_outputs),
210208 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
211209 .process_command = process_command,
212210 };
libavfilter/vf_lut.c+2−4
@@ -580,13 +580,11 @@ static const AVFilterPad inputs[] = { · 579 unmodified lines
580580 .filter_frame = filter_frame,
581581 .config_props = config_props,
582582 },
583− { NULL }
584583 };
585584 static const AVFilterPad outputs[] = {
586585 { .name = "default",
587586 .type = AVMEDIA_TYPE_VIDEO,
588587 },
589− { NULL }
590588 };
591589
592590 #define DEFINE_LUT_FILTER(name_, description_) \
@@ -598,8 +596,8 @@ static const AVFilterPad outputs[] = { · 5 unmodified lines
598596 .init = name_##_init, \
599597 .uninit = uninit, \
600598 .query_formats = query_formats, \
601− .inputs = inputs, \
602− .outputs = outputs, \
599+ FILTER_INPUTS(inputs), \
600+ FILTER_OUTPUTS(outputs), \
603601 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | \
604602 AVFILTER_FLAG_SLICE_THREADS, \
605603 .process_command = process_command, \
libavfilter/vf_lut2.c+4−8
@@ -534,7 +534,6 @@ static const AVFilterPad inputs[] = { · 533 unmodified lines
534534 .type = AVMEDIA_TYPE_VIDEO,
535535 .config_props = config_inputy,
536536 },
537− { NULL }
538537 };
539538
540539 static const AVFilterPad outputs[] = {
@@ -543,7 +542,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
543542 .type = AVMEDIA_TYPE_VIDEO,
544543 .config_props = lut2_config_output,
545544 },
546− { NULL }
547545 };
548546
549547 static int process_command(AVFilterContext *ctx, const char *cmd, const char *args,
@@ -570,8 +568,8 @@ const AVFilter ff_vf_lut2 = { · 20 unmodified lines
570568 .uninit = uninit,
571569 .query_formats = query_formats,
572570 .activate = activate,
573− .inputs = inputs,
574− .outputs = outputs,
571+ FILTER_INPUTS(inputs),
572+ FILTER_OUTPUTS(outputs),
575573 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL |
576574 AVFILTER_FLAG_SLICE_THREADS,
577575 .process_command = process_command,
@@ -642,7 +640,6 @@ static const AVFilterPad tlut2_inputs[] = { · 64 unmodified lines
642640 .filter_frame = tlut2_filter_frame,
643641 .config_props = config_inputx,
644642 },
645− { NULL }
646643 };
647644
648645 static const AVFilterPad tlut2_outputs[] = {
@@ -651,7 +648,6 @@ static const AVFilterPad tlut2_outputs[] = { · 2 unmodified lines
651648 .type = AVMEDIA_TYPE_VIDEO,
652649 .config_props = config_output,
653650 },
654− { NULL }
655651 };
656652
657653 const AVFilter ff_vf_tlut2 = {
@@ -662,8 +658,8 @@ const AVFilter ff_vf_tlut2 = { · 4 unmodified lines
662658 .query_formats = query_formats,
663659 .init = init,
664660 .uninit = uninit,
665− .inputs = tlut2_inputs,
666− .outputs = tlut2_outputs,
661+ FILTER_INPUTS(tlut2_inputs),
662+ FILTER_OUTPUTS(tlut2_outputs),
667663 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL |
668664 AVFILTER_FLAG_SLICE_THREADS,
669665 .process_command = process_command,
libavfilter/vf_lut3d.c+6−12
@@ -1340,7 +1340,6 @@ static const AVFilterPad lut3d_inputs[] = { · 1339 unmodified lines
13401340 .filter_frame = filter_frame,
13411341 .config_props = config_input,
13421342 },
1343− { NULL }
13441343 };
13451344
13461345 static const AVFilterPad lut3d_outputs[] = {
@@ -1348,7 +1347,6 @@ static const AVFilterPad lut3d_outputs[] = { · 1 unmodified line
13481347 .name = "default",
13491348 .type = AVMEDIA_TYPE_VIDEO,
13501349 },
1351− { NULL }
13521350 };
13531351
13541352 const AVFilter ff_vf_lut3d = {
@@ -1358,8 +1356,8 @@ const AVFilter ff_vf_lut3d = { · 3 unmodified lines
13581356 .init = lut3d_init,
13591357 .uninit = lut3d_uninit,
13601358 .query_formats = query_formats,
1361− .inputs = lut3d_inputs,
1362− .outputs = lut3d_outputs,
1359+ FILTER_INPUTS(lut3d_inputs),
1360+ FILTER_OUTPUTS(lut3d_outputs),
13631361 .priv_class = &lut3d_class,
13641362 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
13651363 .process_command = process_command,
@@ -1606,7 +1604,6 @@ static const AVFilterPad haldclut_inputs[] = { · 240 unmodified lines
16061604 .type = AVMEDIA_TYPE_VIDEO,
16071605 .config_props = config_clut,
16081606 },
1609− { NULL }
16101607 };
16111608
16121609 static const AVFilterPad haldclut_outputs[] = {
@@ -1615,7 +1612,6 @@ static const AVFilterPad haldclut_outputs[] = { · 2 unmodified lines
16151612 .type = AVMEDIA_TYPE_VIDEO,
16161613 .config_props = config_output,
16171614 },
1618− { NULL }
16191615 };
16201616
16211617 const AVFilter ff_vf_haldclut = {
@@ -1627,8 +1623,8 @@ const AVFilter ff_vf_haldclut = { · 5 unmodified lines
16271623 .uninit = haldclut_uninit,
16281624 .query_formats = query_formats,
16291625 .activate = activate,
1630− .inputs = haldclut_inputs,
1631− .outputs = haldclut_outputs,
1626+ FILTER_INPUTS(haldclut_inputs),
1627+ FILTER_OUTPUTS(haldclut_outputs),
16321628 .priv_class = &haldclut_class,
16331629 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
16341630 .process_command = process_command,
@@ -2273,7 +2269,6 @@ static const AVFilterPad lut1d_inputs[] = { · 638 unmodified lines
22732269 .filter_frame = filter_frame_1d,
22742270 .config_props = config_input_1d,
22752271 },
2276− { NULL }
22772272 };
22782273
22792274 static const AVFilterPad lut1d_outputs[] = {
@@ -2281,7 +2276,6 @@ static const AVFilterPad lut1d_outputs[] = { · 1 unmodified line
22812276 .name = "default",
22822277 .type = AVMEDIA_TYPE_VIDEO,
22832278 },
2284− { NULL }
22852279 };
22862280
22872281 const AVFilter ff_vf_lut1d = {
@@ -2290,8 +2284,8 @@ const AVFilter ff_vf_lut1d = { · 2 unmodified lines
22902284 .priv_size = sizeof(LUT1DContext),
22912285 .init = lut1d_init,
22922286 .query_formats = query_formats,
2293− .inputs = lut1d_inputs,
2294− .outputs = lut1d_outputs,
2287+ FILTER_INPUTS(lut1d_inputs),
2288+ FILTER_OUTPUTS(lut1d_outputs),
22952289 .priv_class = &lut1d_class,
22962290 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
22972291 .process_command = lut1d_process_command,
libavfilter/vf_maskedclamp.c+2−4
@@ -304,7 +304,6 @@ static const AVFilterPad maskedclamp_inputs[] = { · 303 unmodified lines
304304 .name = "bright",
305305 .type = AVMEDIA_TYPE_VIDEO,
306306 },
307− { NULL }
308307 };
309308
310309 static const AVFilterPad maskedclamp_outputs[] = {
@@ -313,7 +312,6 @@ static const AVFilterPad maskedclamp_outputs[] = { · 2 unmodified lines
313312 .type = AVMEDIA_TYPE_VIDEO,
314313 .config_props = config_output,
315314 },
316− { NULL }
317315 };
318316
319317 const AVFilter ff_vf_maskedclamp = {
@@ -323,8 +321,8 @@ const AVFilter ff_vf_maskedclamp = { · 3 unmodified lines
323321 .uninit = uninit,
324322 .activate = activate,
325323 .query_formats = query_formats,
326− .inputs = maskedclamp_inputs,
327− .outputs = maskedclamp_outputs,
324+ FILTER_INPUTS(maskedclamp_inputs),
325+ FILTER_OUTPUTS(maskedclamp_outputs),
328326 .priv_class = &maskedclamp_class,
329327 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
330328 .process_command = ff_filter_process_command,
libavfilter/vf_maskedmerge.c+2−4
@@ -305,7 +305,6 @@ static const AVFilterPad maskedmerge_inputs[] = { · 304 unmodified lines
305305 .name = "mask",
306306 .type = AVMEDIA_TYPE_VIDEO,
307307 },
308− { NULL }
309308 };
310309
311310 static const AVFilterPad maskedmerge_outputs[] = {
@@ -314,7 +313,6 @@ static const AVFilterPad maskedmerge_outputs[] = { · 2 unmodified lines
314313 .type = AVMEDIA_TYPE_VIDEO,
315314 .config_props = config_output,
316315 },
317− { NULL }
318316 };
319317
320318 const AVFilter ff_vf_maskedmerge = {
@@ -324,8 +322,8 @@ const AVFilter ff_vf_maskedmerge = { · 3 unmodified lines
324322 .uninit = uninit,
325323 .query_formats = query_formats,
326324 .activate = activate,
327− .inputs = maskedmerge_inputs,
328− .outputs = maskedmerge_outputs,
325+ FILTER_INPUTS(maskedmerge_inputs),
326+ FILTER_OUTPUTS(maskedmerge_outputs),
329327 .priv_class = &maskedmerge_class,
330328 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
331329 .process_command = ff_filter_process_command,
libavfilter/vf_maskedminmax.c+4−6
@@ -313,7 +313,6 @@ static const AVFilterPad maskedminmax_inputs[] = { · 312 unmodified lines
313313 .name = "filter2",
314314 .type = AVMEDIA_TYPE_VIDEO,
315315 },
316− { NULL }
317316 };
318317
319318 static const AVFilterPad maskedminmax_outputs[] = {
@@ -322,7 +321,6 @@ static const AVFilterPad maskedminmax_outputs[] = { · 2 unmodified lines
322321 .type = AVMEDIA_TYPE_VIDEO,
323322 .config_props = config_output,
324323 },
325− { NULL }
326324 };
327325
328326 #define maskedmin_options maskedminmax_options
@@ -337,8 +335,8 @@ const AVFilter ff_vf_maskedmin = { · 8 unmodified lines
337335 .uninit = uninit,
338336 .activate = activate,
339337 .query_formats = query_formats,
340− .inputs = maskedminmax_inputs,
341− .outputs = maskedminmax_outputs,
338+ FILTER_INPUTS(maskedminmax_inputs),
339+ FILTER_OUTPUTS(maskedminmax_outputs),
342340 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
343341 .process_command = ff_filter_process_command,
344342 };
@@ -355,8 +353,8 @@ const AVFilter ff_vf_maskedmax = { · 10 unmodified lines
355353 .uninit = uninit,
356354 .activate = activate,
357355 .query_formats = query_formats,
358− .inputs = maskedminmax_inputs,
359− .outputs = maskedminmax_outputs,
356+ FILTER_INPUTS(maskedminmax_inputs),
357+ FILTER_OUTPUTS(maskedminmax_outputs),
360358 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
361359 .process_command = ff_filter_process_command,
362360 };
libavfilter/vf_maskedthreshold.c+2−4
@@ -270,7 +270,6 @@ static const AVFilterPad maskedthreshold_inputs[] = { · 269 unmodified lines
270270 .name = "reference",
271271 .type = AVMEDIA_TYPE_VIDEO,
272272 },
273− { NULL }
274273 };
275274
276275 static const AVFilterPad maskedthreshold_outputs[] = {
@@ -279,7 +278,6 @@ static const AVFilterPad maskedthreshold_outputs[] = { · 2 unmodified lines
279278 .type = AVMEDIA_TYPE_VIDEO,
280279 .config_props = config_output,
281280 },
282− { NULL }
283281 };
284282
285283 AVFILTER_DEFINE_CLASS(maskedthreshold);
@@ -292,8 +290,8 @@ const AVFilter ff_vf_maskedthreshold = { · 6 unmodified lines
292290 .uninit = uninit,
293291 .activate = activate,
294292 .query_formats = query_formats,
295− .inputs = maskedthreshold_inputs,
296− .outputs = maskedthreshold_outputs,
293+ FILTER_INPUTS(maskedthreshold_inputs),
294+ FILTER_OUTPUTS(maskedthreshold_outputs),
297295 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
298296 .process_command = ff_filter_process_command,
299297 };
libavfilter/vf_maskfun.c+2−4
@@ -298,7 +298,6 @@ static const AVFilterPad maskfun_inputs[] = { · 297 unmodified lines
298298 .filter_frame = filter_frame,
299299 .config_props = config_input,
300300 },
301− { NULL }
302301 };
303302
304303 static const AVFilterPad maskfun_outputs[] = {
@@ -306,7 +305,6 @@ static const AVFilterPad maskfun_outputs[] = { · 1 unmodified line
306305 .name = "default",
307306 .type = AVMEDIA_TYPE_VIDEO,
308307 },
309− { NULL }
310308 };
311309
312310 const AVFilter ff_vf_maskfun = {
@@ -315,8 +313,8 @@ const AVFilter ff_vf_maskfun = { · 2 unmodified lines
315313 .priv_size = sizeof(MaskFunContext),
316314 .query_formats = query_formats,
317315 .uninit = uninit,
318− .inputs = maskfun_inputs,
319− .outputs = maskfun_outputs,
316+ FILTER_INPUTS(maskfun_inputs),
317+ FILTER_OUTPUTS(maskfun_outputs),
320318 .priv_class = &maskfun_class,
321319 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
322320 .process_command = process_command,
libavfilter/vf_mcdeint.c+2−4
@@ -290,7 +290,6 @@ static const AVFilterPad mcdeint_inputs[] = { · 289 unmodified lines
290290 .filter_frame = filter_frame,
291291 .config_props = config_props,
292292 },
293− { NULL }
294293 };
295294
296295 static const AVFilterPad mcdeint_outputs[] = {
@@ -298,7 +297,6 @@ static const AVFilterPad mcdeint_outputs[] = { · 1 unmodified line
298297 .name = "default",
299298 .type = AVMEDIA_TYPE_VIDEO,
300299 },
301− { NULL }
302300 };
303301
304302 const AVFilter ff_vf_mcdeint = {
@@ -307,7 +305,7 @@ const AVFilter ff_vf_mcdeint = { · 2 unmodified lines
307305 .priv_size = sizeof(MCDeintContext),
308306 .uninit = uninit,
309307 .query_formats = query_formats,
310− .inputs = mcdeint_inputs,
311− .outputs = mcdeint_outputs,
308+ FILTER_INPUTS(mcdeint_inputs),
309+ FILTER_OUTPUTS(mcdeint_outputs),
312310 .priv_class = &mcdeint_class,
313311 };
libavfilter/vf_median.c+2−4
@@ -273,7 +273,6 @@ static const AVFilterPad median_inputs[] = { · 272 unmodified lines
273273 .config_props = config_input,
274274 .filter_frame = filter_frame,
275275 },
276− { NULL }
277276 };
278277
279278 static const AVFilterPad median_outputs[] = {
@@ -281,7 +280,6 @@ static const AVFilterPad median_outputs[] = { · 1 unmodified line
281280 .name = "default",
282281 .type = AVMEDIA_TYPE_VIDEO,
283282 },
284− { NULL }
285283 };
286284
287285 const AVFilter ff_vf_median = {
@@ -291,8 +289,8 @@ const AVFilter ff_vf_median = { · 3 unmodified lines
291289 .priv_class = &median_class,
292290 .uninit = uninit,
293291 .query_formats = query_formats,
294− .inputs = median_inputs,
295− .outputs = median_outputs,
292+ FILTER_INPUTS(median_inputs),
293+ FILTER_OUTPUTS(median_outputs),
296294 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
297295 .process_command = process_command,
298296 };
libavfilter/vf_mergeplanes.c+1−2
@@ -293,7 +293,6 @@ static const AVFilterPad mergeplanes_outputs[] = { · 292 unmodified lines
293293 .type = AVMEDIA_TYPE_VIDEO,
294294 .config_props = config_output,
295295 },
296− { NULL }
297296 };
298297
299298 const AVFilter ff_vf_mergeplanes = {
@@ -306,6 +305,6 @@ const AVFilter ff_vf_mergeplanes = { · 6 unmodified lines
306305 .query_formats = query_formats,
307306 .activate = activate,
308307 .inputs = NULL,
309− .outputs = mergeplanes_outputs,
308+ FILTER_OUTPUTS(mergeplanes_outputs),
310309 .flags = AVFILTER_FLAG_DYNAMIC_INPUTS,
311310 };
libavfilter/vf_mestimate.c+2−4
@@ -353,7 +353,6 @@ static const AVFilterPad mestimate_inputs[] = { · 352 unmodified lines
353353 .filter_frame = filter_frame,
354354 .config_props = config_input,
355355 },
356− { NULL }
357356 };
358357
359358 static const AVFilterPad mestimate_outputs[] = {
@@ -361,7 +360,6 @@ static const AVFilterPad mestimate_outputs[] = { · 1 unmodified line
361360 .name = "default",
362361 .type = AVMEDIA_TYPE_VIDEO,
363362 },
364− { NULL }
365363 };
366364
367365 const AVFilter ff_vf_mestimate = {
@@ -371,6 +369,6 @@ const AVFilter ff_vf_mestimate = { · 3 unmodified lines
371369 .priv_class = &mestimate_class,
372370 .uninit = uninit,
373371 .query_formats = query_formats,
374− .inputs = mestimate_inputs,
375− .outputs = mestimate_outputs,
372+ FILTER_INPUTS(mestimate_inputs),
373+ FILTER_OUTPUTS(mestimate_outputs),
376374 };
libavfilter/vf_midequalizer.c+2−4
@@ -363,7 +363,6 @@ static const AVFilterPad midequalizer_inputs[] = { · 362 unmodified lines
363363 .type = AVMEDIA_TYPE_VIDEO,
364364 .config_props = config_input1,
365365 },
366− { NULL }
367366 };
368367
369368 static const AVFilterPad midequalizer_outputs[] = {
@@ -372,7 +371,6 @@ static const AVFilterPad midequalizer_outputs[] = { · 2 unmodified lines
372371 .type = AVMEDIA_TYPE_VIDEO,
373372 .config_props = config_output,
374373 },
375− { NULL }
376374 };
377375
378376 const AVFilter ff_vf_midequalizer = {
@@ -382,8 +380,8 @@ const AVFilter ff_vf_midequalizer = { · 3 unmodified lines
382380 .uninit = uninit,
383381 .query_formats = query_formats,
384382 .activate = activate,
385− .inputs = midequalizer_inputs,
386− .outputs = midequalizer_outputs,
383+ FILTER_INPUTS(midequalizer_inputs),
384+ FILTER_OUTPUTS(midequalizer_outputs),
387385 .priv_class = &midequalizer_class,
388386 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
389387 };
libavfilter/vf_minterpolate.c+2−4
@@ -1242,7 +1242,6 @@ static const AVFilterPad minterpolate_inputs[] = { · 1241 unmodified lines
12421242 .filter_frame = filter_frame,
12431243 .config_props = config_input,
12441244 },
1245− { NULL }
12461245 };
12471246
12481247 static const AVFilterPad minterpolate_outputs[] = {
@@ -1251,7 +1250,6 @@ static const AVFilterPad minterpolate_outputs[] = { · 2 unmodified lines
12511250 .type = AVMEDIA_TYPE_VIDEO,
12521251 .config_props = config_output,
12531252 },
1254− { NULL }
12551253 };
12561254
12571255 const AVFilter ff_vf_minterpolate = {
@@ -1261,6 +1259,6 @@ const AVFilter ff_vf_minterpolate = { · 3 unmodified lines
12611259 .priv_class = &minterpolate_class,
12621260 .uninit = uninit,
12631261 .query_formats = query_formats,
1264− .inputs = minterpolate_inputs,
1265− .outputs = minterpolate_outputs,
1262+ FILTER_INPUTS(minterpolate_inputs),
1263+ FILTER_OUTPUTS(minterpolate_outputs),
12661264 };
libavfilter/vf_misc_vaapi.c+4−6
@@ -222,7 +222,6 @@ static const AVFilterPad misc_vaapi_inputs[] = { · 221 unmodified lines
222222 .filter_frame = &misc_vaapi_filter_frame,
223223 .config_props = &ff_vaapi_vpp_config_input,
224224 },
225− { NULL }
226225 };
227226
228227 static const AVFilterPad misc_vaapi_outputs[] = {
@@ -231,7 +230,6 @@ static const AVFilterPad misc_vaapi_outputs[] = { · 2 unmodified lines
231230 .type = AVMEDIA_TYPE_VIDEO,
232231 .config_props = &ff_vaapi_vpp_config_output,
233232 },
234− { NULL }
235233 };
236234
237235 const AVFilter ff_vf_denoise_vaapi = {
@@ -241,8 +239,8 @@ const AVFilter ff_vf_denoise_vaapi = { · 3 unmodified lines
241239 .init = &denoise_vaapi_init,
242240 .uninit = &ff_vaapi_vpp_ctx_uninit,
243241 .query_formats = &ff_vaapi_vpp_query_formats,
244− .inputs = misc_vaapi_inputs,
245− .outputs = misc_vaapi_outputs,
242+ FILTER_INPUTS(misc_vaapi_inputs),
243+ FILTER_OUTPUTS(misc_vaapi_outputs),
246244 .priv_class = &denoise_vaapi_class,
247245 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
248246 };
@@ -254,8 +252,8 @@ const AVFilter ff_vf_sharpness_vaapi = { · 5 unmodified lines
254252 .init = &sharpness_vaapi_init,
255253 .uninit = &ff_vaapi_vpp_ctx_uninit,
256254 .query_formats = &ff_vaapi_vpp_query_formats,
257− .inputs = misc_vaapi_inputs,
258− .outputs = misc_vaapi_outputs,
255+ FILTER_INPUTS(misc_vaapi_inputs),
256+ FILTER_OUTPUTS(misc_vaapi_outputs),
259257 .priv_class = &sharpness_vaapi_class,
260258 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
261259 };
libavfilter/vf_mix.c+3−5
@@ -353,7 +353,6 @@ static const AVFilterPad outputs[] = { · 352 unmodified lines
353353 .type = AVMEDIA_TYPE_VIDEO,
354354 .config_props = config_output,
355355 },
356− { NULL }
357356 };
358357
359358 #if CONFIG_MIX_FILTER
@@ -365,7 +364,7 @@ const AVFilter ff_vf_mix = { · 5 unmodified lines
365364 .priv_size = sizeof(MixContext),
366365 .priv_class = &mix_class,
367366 .query_formats = query_formats,
368− .outputs = outputs,
367+ FILTER_OUTPUTS(outputs),
369368 .init = init,
370369 .uninit = uninit,
371370 .activate = activate,
@@ -432,7 +431,6 @@ static const AVFilterPad inputs[] = { · 60 unmodified lines
432431 .type = AVMEDIA_TYPE_VIDEO,
433432 .filter_frame = tmix_filter_frame,
434433 },
435− { NULL }
436434 };
437435
438436 AVFILTER_DEFINE_CLASS(tmix);
@@ -443,8 +441,8 @@ const AVFilter ff_vf_tmix = { · 4 unmodified lines
443441 .priv_size = sizeof(MixContext),
444442 .priv_class = &tmix_class,
445443 .query_formats = query_formats,
446− .outputs = outputs,
447− .inputs = inputs,
444+ FILTER_OUTPUTS(outputs),
445+ FILTER_INPUTS(inputs),
448446 .init = init,
449447 .uninit = uninit,
450448 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
libavfilter/vf_monochrome.c+2−4
@@ -271,7 +271,6 @@ static const AVFilterPad monochrome_inputs[] = { · 270 unmodified lines
271271 .filter_frame = filter_frame,
272272 .config_props = config_input,
273273 },
274− { NULL }
275274 };
276275
277276 static const AVFilterPad monochrome_outputs[] = {
@@ -279,7 +278,6 @@ static const AVFilterPad monochrome_outputs[] = { · 1 unmodified line
279278 .name = "default",
280279 .type = AVMEDIA_TYPE_VIDEO,
281280 },
282− { NULL }
283281 };
284282
285283 #define OFFSET(x) offsetof(MonochromeContext, x)
@@ -301,8 +299,8 @@ const AVFilter ff_vf_monochrome = { · 15 unmodified lines
301299 .priv_size = sizeof(MonochromeContext),
302300 .priv_class = &monochrome_class,
303301 .query_formats = query_formats,
304− .inputs = monochrome_inputs,
305− .outputs = monochrome_outputs,
302+ FILTER_INPUTS(monochrome_inputs),
303+ FILTER_OUTPUTS(monochrome_outputs),
306304 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
307305 .process_command = ff_filter_process_command,
308306 };
libavfilter/vf_mpdecimate.c+2−4
@@ -228,7 +228,6 @@ static const AVFilterPad mpdecimate_inputs[] = { · 227 unmodified lines
228228 .config_props = config_input,
229229 .filter_frame = filter_frame,
230230 },
231− { NULL }
232231 };
233232
234233 static const AVFilterPad mpdecimate_outputs[] = {
@@ -236,7 +235,6 @@ static const AVFilterPad mpdecimate_outputs[] = { · 1 unmodified line
236235 .name = "default",
237236 .type = AVMEDIA_TYPE_VIDEO,
238237 },
239− { NULL }
240238 };
241239
242240 const AVFilter ff_vf_mpdecimate = {
@@ -247,6 +245,6 @@ const AVFilter ff_vf_mpdecimate = { · 4 unmodified lines
247245 .priv_size = sizeof(DecimateContext),
248246 .priv_class = &mpdecimate_class,
249247 .query_formats = query_formats,
250− .inputs = mpdecimate_inputs,
251− .outputs = mpdecimate_outputs,
248+ FILTER_INPUTS(mpdecimate_inputs),
249+ FILTER_OUTPUTS(mpdecimate_outputs),
252250 };
libavfilter/vf_neighbor.c+2−4
@@ -342,7 +342,6 @@ static const AVFilterPad neighbor_inputs[] = { · 341 unmodified lines
342342 .filter_frame = filter_frame,
343343 .config_props = config_input,
344344 },
345− { NULL }
346345 };
347346
348347 static const AVFilterPad neighbor_outputs[] = {
@@ -350,7 +349,6 @@ static const AVFilterPad neighbor_outputs[] = { · 1 unmodified line
350349 .name = "default",
351350 .type = AVMEDIA_TYPE_VIDEO,
352351 },
353− { NULL }
354352 };
355353
356354 #define OFFSET(x) offsetof(NContext, x)
@@ -365,8 +363,8 @@ const AVFilter ff_vf_##name_ = { \ · 8 unmodified lines
365363 .priv_size = sizeof(NContext), \
366364 .priv_class = &name_##_class, \
367365 .query_formats = query_formats, \
368− .inputs = neighbor_inputs, \
369− .outputs = neighbor_outputs, \
366+ FILTER_INPUTS(neighbor_inputs), \
367+ FILTER_OUTPUTS(neighbor_outputs), \
370368 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC| \
371369 AVFILTER_FLAG_SLICE_THREADS, \
372370 .process_command = ff_filter_process_command, \
libavfilter/vf_neighbor_opencl.c+4−6
@@ -245,7 +245,6 @@ static const AVFilterPad neighbor_opencl_inputs[] = { · 244 unmodified lines
245245 .filter_frame = &neighbor_opencl_filter_frame,
246246 .config_props = &ff_opencl_filter_config_input,
247247 },
248− { NULL }
249248 };
250249
251250 static const AVFilterPad neighbor_opencl_outputs[] = {
@@ -254,7 +253,6 @@ static const AVFilterPad neighbor_opencl_outputs[] = { · 2 unmodified lines
254253 .type = AVMEDIA_TYPE_VIDEO,
255254 .config_props = &ff_opencl_filter_config_output,
256255 },
257− { NULL }
258256 };
259257
260258 #define OFFSET(x) offsetof(NeighborOpenCLContext, x)
@@ -281,8 +279,8 @@ const AVFilter ff_vf_erosion_opencl = { · 20 unmodified lines
281279 .init = &ff_opencl_filter_init,
282280 .uninit = &neighbor_opencl_uninit,
283281 .query_formats = &ff_opencl_filter_query_formats,
284− .inputs = neighbor_opencl_inputs,
285− .outputs = neighbor_opencl_outputs,
282+ FILTER_INPUTS(neighbor_opencl_inputs),
283+ FILTER_OUTPUTS(neighbor_opencl_outputs),
286284 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
287285 };
288286
@@ -309,8 +307,8 @@ const AVFilter ff_vf_dilation_opencl = { · 20 unmodified lines
309307 .init = &ff_opencl_filter_init,
310308 .uninit = &neighbor_opencl_uninit,
311309 .query_formats = &ff_opencl_filter_query_formats,
312− .inputs = neighbor_opencl_inputs,
313− .outputs = neighbor_opencl_outputs,
310+ FILTER_INPUTS(neighbor_opencl_inputs),
311+ FILTER_OUTPUTS(neighbor_opencl_outputs),
314312 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
315313 };
316314
libavfilter/vf_nlmeans.c+2−4
@@ -563,7 +563,6 @@ static const AVFilterPad nlmeans_inputs[] = { · 562 unmodified lines
563563 .config_props = config_input,
564564 .filter_frame = filter_frame,
565565 },
566− { NULL }
567566 };
568567
569568 static const AVFilterPad nlmeans_outputs[] = {
@@ -571,7 +570,6 @@ static const AVFilterPad nlmeans_outputs[] = { · 1 unmodified line
571570 .name = "default",
572571 .type = AVMEDIA_TYPE_VIDEO,
573572 },
574− { NULL }
575573 };
576574
577575 const AVFilter ff_vf_nlmeans = {
@@ -581,8 +579,8 @@ const AVFilter ff_vf_nlmeans = { · 3 unmodified lines
581579 .init = init,
582580 .uninit = uninit,
583581 .query_formats = query_formats,
584− .inputs = nlmeans_inputs,
585− .outputs = nlmeans_outputs,
582+ FILTER_INPUTS(nlmeans_inputs),
583+ FILTER_OUTPUTS(nlmeans_outputs),
586584 .priv_class = &nlmeans_class,
587585 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
588586 };
libavfilter/vf_nlmeans_opencl.c+2−4
@@ -417,7 +417,6 @@ static const AVFilterPad nlmeans_opencl_inputs[] = { · 416 unmodified lines
417417 .filter_frame = &nlmeans_opencl_filter_frame,
418418 .config_props = &ff_opencl_filter_config_input,
419419 },
420− { NULL }
421420 };
422421
423422 static const AVFilterPad nlmeans_opencl_outputs[] = {
@@ -426,7 +425,6 @@ static const AVFilterPad nlmeans_opencl_outputs[] = { · 2 unmodified lines
426425 .type = AVMEDIA_TYPE_VIDEO,
427426 .config_props = &ff_opencl_filter_config_output,
428427 },
429− { NULL }
430428 };
431429
432430 const AVFilter ff_vf_nlmeans_opencl = {
@@ -437,7 +435,7 @@ const AVFilter ff_vf_nlmeans_opencl = { · 4 unmodified lines
437435 .init = &ff_opencl_filter_init,
438436 .uninit = &nlmeans_opencl_uninit,
439437 .query_formats = &ff_opencl_filter_query_formats,
440− .inputs = nlmeans_opencl_inputs,
441− .outputs = nlmeans_opencl_outputs,
438+ FILTER_INPUTS(nlmeans_opencl_inputs),
439+ FILTER_OUTPUTS(nlmeans_opencl_outputs),
442440 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
443441 };
libavfilter/vf_nnedi.c+2−4
@@ -1141,7 +1141,6 @@ static const AVFilterPad inputs[] = { · 1140 unmodified lines
11411141 .filter_frame = filter_frame,
11421142 .config_props = config_input,
11431143 },
1144− { NULL }
11451144 };
11461145
11471146 static const AVFilterPad outputs[] = {
@@ -1151,7 +1150,6 @@ static const AVFilterPad outputs[] = { · 3 unmodified lines
11511150 .config_props = config_output,
11521151 .request_frame = request_frame,
11531152 },
1154− { NULL }
11551153 };
11561154
11571155 const AVFilter ff_vf_nnedi = {
@@ -1162,8 +1160,8 @@ const AVFilter ff_vf_nnedi = { · 4 unmodified lines
11621160 .init = init,
11631161 .uninit = uninit,
11641162 .query_formats = query_formats,
1165− .inputs = inputs,
1166− .outputs = outputs,
1163+ FILTER_INPUTS(inputs),
1164+ FILTER_OUTPUTS(outputs),
11671165 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
11681166 .process_command = ff_filter_process_command,
11691167 };
libavfilter/vf_noise.c+2−4
@@ -327,7 +327,6 @@ static const AVFilterPad noise_inputs[] = { · 326 unmodified lines
327327 .filter_frame = filter_frame,
328328 .config_props = config_input,
329329 },
330− { NULL }
331330 };
332331
333332 static const AVFilterPad noise_outputs[] = {
@@ -335,7 +334,6 @@ static const AVFilterPad noise_outputs[] = { · 1 unmodified line
335334 .name = "default",
336335 .type = AVMEDIA_TYPE_VIDEO,
337336 },
338− { NULL }
339337 };
340338
341339 const AVFilter ff_vf_noise = {
@@ -345,8 +343,8 @@ const AVFilter ff_vf_noise = { · 3 unmodified lines
345343 .init = init,
346344 .uninit = uninit,
347345 .query_formats = query_formats,
348− .inputs = noise_inputs,
349− .outputs = noise_outputs,
346+ FILTER_INPUTS(noise_inputs),
347+ FILTER_OUTPUTS(noise_outputs),
350348 .priv_class = &noise_class,
351349 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
352350 };
libavfilter/vf_normalize.c+2−4
@@ -516,7 +516,6 @@ static const AVFilterPad inputs[] = { · 515 unmodified lines
516516 .filter_frame = filter_frame,
517517 .config_props = config_input,
518518 },
519− { NULL }
520519 };
521520
522521 static const AVFilterPad outputs[] = {
@@ -524,7 +523,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
524523 .name = "default",
525524 .type = AVMEDIA_TYPE_VIDEO,
526525 },
527− { NULL }
528526 };
529527
530528 const AVFilter ff_vf_normalize = {
@@ -534,8 +532,8 @@ const AVFilter ff_vf_normalize = { · 3 unmodified lines
534532 .priv_class = &normalize_class,
535533 .uninit = uninit,
536534 .query_formats = query_formats,
537− .inputs = inputs,
538− .outputs = outputs,
535+ FILTER_INPUTS(inputs),
536+ FILTER_OUTPUTS(outputs),
539537 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
540538 .process_command = ff_filter_process_command,
541539 };
libavfilter/vf_null.c+2−4
@@ -31,7 +31,6 @@ static const AVFilterPad avfilter_vf_null_inputs[] = { · 30 unmodified lines
3131 .name = "default",
3232 .type = AVMEDIA_TYPE_VIDEO,
3333 },
34− { NULL }
3534 };
3635
3736 static const AVFilterPad avfilter_vf_null_outputs[] = {
@@ -39,12 +38,11 @@ static const AVFilterPad avfilter_vf_null_outputs[] = { · 1 unmodified line
3938 .name = "default",
4039 .type = AVMEDIA_TYPE_VIDEO,
4140 },
42− { NULL }
4341 };
4442
4543 const AVFilter ff_vf_null = {
4644 .name = "null",
4745 .description = NULL_IF_CONFIG_SMALL("Pass the source unchanged to the output."),
48− .inputs = avfilter_vf_null_inputs,
49− .outputs = avfilter_vf_null_outputs,
46+ FILTER_INPUTS(avfilter_vf_null_inputs),
47+ FILTER_OUTPUTS(avfilter_vf_null_outputs),
5048 };
libavfilter/vf_ocr.c+2−4
@@ -132,7 +132,6 @@ static const AVFilterPad ocr_inputs[] = { · 131 unmodified lines
132132 .type = AVMEDIA_TYPE_VIDEO,
133133 .filter_frame = filter_frame,
134134 },
135− { NULL }
136135 };
137136
138137 static const AVFilterPad ocr_outputs[] = {
@@ -140,7 +139,6 @@ static const AVFilterPad ocr_outputs[] = { · 1 unmodified line
140139 .name = "default",
141140 .type = AVMEDIA_TYPE_VIDEO,
142141 },
143− { NULL }
144142 };
145143
146144 const AVFilter ff_vf_ocr = {
@@ -151,6 +149,6 @@ const AVFilter ff_vf_ocr = { · 4 unmodified lines
151149 .query_formats = query_formats,
152150 .init = init,
153151 .uninit = uninit,
154− .inputs = ocr_inputs,
155− .outputs = ocr_outputs,
152+ FILTER_INPUTS(ocr_inputs),
153+ FILTER_OUTPUTS(ocr_outputs),
156154 };
libavfilter/vf_overlay.c+2−4
@@ -1094,7 +1094,6 @@ static const AVFilterPad avfilter_vf_overlay_inputs[] = { · 1093 unmodified lines
10941094 .type = AVMEDIA_TYPE_VIDEO,
10951095 .config_props = config_input_overlay,
10961096 },
1097− { NULL }
10981097 };
10991098
11001099 static const AVFilterPad avfilter_vf_overlay_outputs[] = {
@@ -1103,7 +1102,6 @@ static const AVFilterPad avfilter_vf_overlay_outputs[] = { · 2 unmodified lines
11031102 .type = AVMEDIA_TYPE_VIDEO,
11041103 .config_props = config_output,
11051104 },
1106− { NULL }
11071105 };
11081106
11091107 const AVFilter ff_vf_overlay = {
@@ -1117,8 +1115,8 @@ const AVFilter ff_vf_overlay = { · 7 unmodified lines
11171115 .query_formats = query_formats,
11181116 .activate = activate,
11191117 .process_command = process_command,
1120− .inputs = avfilter_vf_overlay_inputs,
1121− .outputs = avfilter_vf_overlay_outputs,
1118+ FILTER_INPUTS(avfilter_vf_overlay_inputs),
1119+ FILTER_OUTPUTS(avfilter_vf_overlay_outputs),
11221120 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL |
11231121 AVFILTER_FLAG_SLICE_THREADS,
11241122 };
libavfilter/vf_overlay_cuda.c+2−4
@@ -565,7 +565,6 @@ static const AVFilterPad overlay_cuda_inputs[] = { · 564 unmodified lines
565565 .type = AVMEDIA_TYPE_VIDEO,
566566 .config_props = config_input_overlay,
567567 },
568− { NULL }
569568 };
570569
571570 static const AVFilterPad overlay_cuda_outputs[] = {
@@ -574,7 +573,6 @@ static const AVFilterPad overlay_cuda_outputs[] = { · 2 unmodified lines
574573 .type = AVMEDIA_TYPE_VIDEO,
575574 .config_props = &overlay_cuda_config_output,
576575 },
577− { NULL }
578576 };
579577
580578 const AVFilter ff_vf_overlay_cuda = {
@@ -586,8 +584,8 @@ const AVFilter ff_vf_overlay_cuda = { · 5 unmodified lines
586584 .uninit = &overlay_cuda_uninit,
587585 .activate = &overlay_cuda_activate,
588586 .query_formats = &overlay_cuda_query_formats,
589− .inputs = overlay_cuda_inputs,
590− .outputs = overlay_cuda_outputs,
587+ FILTER_INPUTS(overlay_cuda_inputs),
588+ FILTER_OUTPUTS(overlay_cuda_outputs),
591589 .preinit = overlay_cuda_framesync_preinit,
592590 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
593591 };
libavfilter/vf_overlay_opencl.c+2−4
@@ -300,7 +300,6 @@ static const AVFilterPad overlay_opencl_inputs[] = { · 299 unmodified lines
300300 .type = AVMEDIA_TYPE_VIDEO,
301301 .config_props = &ff_opencl_filter_config_input,
302302 },
303− { NULL }
304303 };
305304
306305 static const AVFilterPad overlay_opencl_outputs[] = {
@@ -309,7 +308,6 @@ static const AVFilterPad overlay_opencl_outputs[] = { · 2 unmodified lines
309308 .type = AVMEDIA_TYPE_VIDEO,
310309 .config_props = &overlay_opencl_config_output,
311310 },
312− { NULL }
313311 };
314312
315313 const AVFilter ff_vf_overlay_opencl = {
@@ -321,7 +319,7 @@ const AVFilter ff_vf_overlay_opencl = { · 5 unmodified lines
321319 .uninit = &overlay_opencl_uninit,
322320 .query_formats = &ff_opencl_filter_query_formats,
323321 .activate = &overlay_opencl_activate,
324− .inputs = overlay_opencl_inputs,
325− .outputs = overlay_opencl_outputs,
322+ FILTER_INPUTS(overlay_opencl_inputs),
323+ FILTER_OUTPUTS(overlay_opencl_outputs),
326324 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
327325 };
libavfilter/vf_overlay_qsv.c+2−4
@@ -403,7 +403,6 @@ static const AVFilterPad overlay_qsv_inputs[] = { · 402 unmodified lines
403403 .type = AVMEDIA_TYPE_VIDEO,
404404 .config_props = config_overlay_input,
405405 },
406− { NULL }
407406 };
408407
409408 static const AVFilterPad overlay_qsv_outputs[] = {
@@ -412,7 +411,6 @@ static const AVFilterPad overlay_qsv_outputs[] = { · 2 unmodified lines
412411 .type = AVMEDIA_TYPE_VIDEO,
413412 .config_props = config_output,
414413 },
415− { NULL }
416414 };
417415
418416 const AVFilter ff_vf_overlay_qsv = {
@@ -424,8 +422,8 @@ const AVFilter ff_vf_overlay_qsv = { · 5 unmodified lines
424422 .init = overlay_qsv_init,
425423 .uninit = overlay_qsv_uninit,
426424 .activate = activate,
427− .inputs = overlay_qsv_inputs,
428− .outputs = overlay_qsv_outputs,
425+ FILTER_INPUTS(overlay_qsv_inputs),
426+ FILTER_OUTPUTS(overlay_qsv_outputs),
429427 .priv_class = &overlay_qsv_class,
430428 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
431429 };
libavfilter/vf_overlay_vulkan.c+2−4
@@ -463,7 +463,6 @@ static const AVFilterPad overlay_vulkan_inputs[] = { · 462 unmodified lines
463463 .type = AVMEDIA_TYPE_VIDEO,
464464 .config_props = &ff_vk_filter_config_input,
465465 },
466− { NULL }
467466 };
468467
469468 static const AVFilterPad overlay_vulkan_outputs[] = {
@@ -472,7 +471,6 @@ static const AVFilterPad overlay_vulkan_outputs[] = { · 2 unmodified lines
472471 .type = AVMEDIA_TYPE_VIDEO,
473472 .config_props = &overlay_vulkan_config_output,
474473 },
475− { NULL }
476474 };
477475
478476 const AVFilter ff_vf_overlay_vulkan = {
@@ -483,8 +481,8 @@ const AVFilter ff_vf_overlay_vulkan = { · 4 unmodified lines
483481 .uninit = &overlay_vulkan_uninit,
484482 .query_formats = &ff_vk_filter_query_formats,
485483 .activate = &overlay_vulkan_activate,
486− .inputs = overlay_vulkan_inputs,
487− .outputs = overlay_vulkan_outputs,
484+ FILTER_INPUTS(overlay_vulkan_inputs),
485+ FILTER_OUTPUTS(overlay_vulkan_outputs),
488486 .priv_class = &overlay_vulkan_class,
489487 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
490488 };
libavfilter/vf_owdenoise.c+2−4
@@ -351,7 +351,6 @@ static const AVFilterPad owdenoise_inputs[] = { · 350 unmodified lines
351351 .filter_frame = filter_frame,
352352 .config_props = config_input,
353353 },
354− { NULL }
355354 };
356355
357356 static const AVFilterPad owdenoise_outputs[] = {
@@ -359,7 +358,6 @@ static const AVFilterPad owdenoise_outputs[] = { · 1 unmodified line
359358 .name = "default",
360359 .type = AVMEDIA_TYPE_VIDEO,
361360 },
362− { NULL }
363361 };
364362
365363 const AVFilter ff_vf_owdenoise = {
@@ -368,8 +366,8 @@ const AVFilter ff_vf_owdenoise = { · 2 unmodified lines
368366 .priv_size = sizeof(OWDenoiseContext),
369367 .uninit = uninit,
370368 .query_formats = query_formats,
371− .inputs = owdenoise_inputs,
372− .outputs = owdenoise_outputs,
369+ FILTER_INPUTS(owdenoise_inputs),
370+ FILTER_OUTPUTS(owdenoise_outputs),
373371 .priv_class = &owdenoise_class,
374372 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
375373 };
libavfilter/vf_pad.c+2−4
@@ -441,7 +441,6 @@ static const AVFilterPad avfilter_vf_pad_inputs[] = { · 440 unmodified lines
441441 .get_buffer.video = get_video_buffer,
442442 .filter_frame = filter_frame,
443443 },
444− { NULL }
445444 };
446445
447446 static const AVFilterPad avfilter_vf_pad_outputs[] = {
@@ -450,7 +449,6 @@ static const AVFilterPad avfilter_vf_pad_outputs[] = { · 2 unmodified lines
450449 .type = AVMEDIA_TYPE_VIDEO,
451450 .config_props = config_output,
452451 },
453− { NULL }
454452 };
455453
456454 const AVFilter ff_vf_pad = {
@@ -459,6 +457,6 @@ const AVFilter ff_vf_pad = { · 2 unmodified lines
459457 .priv_size = sizeof(PadContext),
460458 .priv_class = &pad_class,
461459 .query_formats = query_formats,
462− .inputs = avfilter_vf_pad_inputs,
463− .outputs = avfilter_vf_pad_outputs,
460+ FILTER_INPUTS(avfilter_vf_pad_inputs),
461+ FILTER_OUTPUTS(avfilter_vf_pad_outputs),
464462 };
libavfilter/vf_pad_opencl.c+2−4
@@ -354,7 +354,6 @@ static const AVFilterPad pad_opencl_inputs[] = { · 353 unmodified lines
354354 .filter_frame = filter_frame,
355355 .config_props = &ff_opencl_filter_config_input,
356356 },
357− { NULL }
358357 };
359358
360359 static const AVFilterPad pad_opencl_outputs[] = {
@@ -363,7 +362,6 @@ static const AVFilterPad pad_opencl_outputs[] = { · 2 unmodified lines
363362 .type = AVMEDIA_TYPE_VIDEO,
364363 .config_props = &pad_opencl_config_output,
365364 },
366− { NULL }
367365 };
368366
369367 #define OFFSET(x) offsetof(PadOpenCLContext, x)
@@ -391,7 +389,7 @@ const AVFilter ff_vf_pad_opencl = { · 21 unmodified lines
391389 .init = &ff_opencl_filter_init,
392390 .uninit = &pad_opencl_uninit,
393391 .query_formats = &ff_opencl_filter_query_formats,
394− .inputs = pad_opencl_inputs,
395− .outputs = pad_opencl_outputs,
392+ FILTER_INPUTS(pad_opencl_inputs),
393+ FILTER_OUTPUTS(pad_opencl_outputs),
396394 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE
397395 };
libavfilter/vf_palettegen.c+2−4
@@ -557,7 +557,6 @@ static const AVFilterPad palettegen_inputs[] = { · 556 unmodified lines
557557 .type = AVMEDIA_TYPE_VIDEO,
558558 .filter_frame = filter_frame,
559559 },
560− { NULL }
561560 };
562561
563562 static const AVFilterPad palettegen_outputs[] = {
@@ -567,7 +566,6 @@ static const AVFilterPad palettegen_outputs[] = { · 3 unmodified lines
567566 .config_props = config_output,
568567 .request_frame = request_frame,
569568 },
570− { NULL }
571569 };
572570
573571 const AVFilter ff_vf_palettegen = {
@@ -576,7 +574,7 @@ const AVFilter ff_vf_palettegen = { · 2 unmodified lines
576574 .priv_size = sizeof(PaletteGenContext),
577575 .uninit = uninit,
578576 .query_formats = query_formats,
579− .inputs = palettegen_inputs,
580− .outputs = palettegen_outputs,
577+ FILTER_INPUTS(palettegen_inputs),
578+ FILTER_OUTPUTS(palettegen_outputs),
581579 .priv_class = &palettegen_class,
582580 };
libavfilter/vf_paletteuse.c+2−4
@@ -1118,7 +1118,6 @@ static const AVFilterPad paletteuse_inputs[] = { · 1117 unmodified lines
11181118 .type = AVMEDIA_TYPE_VIDEO,
11191119 .config_props = config_input_palette,
11201120 },
1121− { NULL }
11221121 };
11231122
11241123 static const AVFilterPad paletteuse_outputs[] = {
@@ -1127,7 +1126,6 @@ static const AVFilterPad paletteuse_outputs[] = { · 2 unmodified lines
11271126 .type = AVMEDIA_TYPE_VIDEO,
11281127 .config_props = config_output,
11291128 },
1130− { NULL }
11311129 };
11321130
11331131 const AVFilter ff_vf_paletteuse = {
@@ -1138,7 +1136,7 @@ const AVFilter ff_vf_paletteuse = { · 4 unmodified lines
11381136 .init = init,
11391137 .uninit = uninit,
11401138 .activate = activate,
1141− .inputs = paletteuse_inputs,
1142− .outputs = paletteuse_outputs,
1139+ FILTER_INPUTS(paletteuse_inputs),
1140+ FILTER_OUTPUTS(paletteuse_outputs),
11431141 .priv_class = &paletteuse_class,
11441142 };
libavfilter/vf_perspective.c+2−4
@@ -498,7 +498,6 @@ static const AVFilterPad perspective_inputs[] = { · 497 unmodified lines
498498 .filter_frame = filter_frame,
499499 .config_props = config_input,
500500 },
501− { NULL }
502501 };
503502
504503 static const AVFilterPad perspective_outputs[] = {
@@ -506,7 +505,6 @@ static const AVFilterPad perspective_outputs[] = { · 1 unmodified line
506505 .name = "default",
507506 .type = AVMEDIA_TYPE_VIDEO,
508507 },
509− { NULL }
510508 };
511509
512510 const AVFilter ff_vf_perspective = {
@@ -516,8 +514,8 @@ const AVFilter ff_vf_perspective = { · 3 unmodified lines
516514 .init = init,
517515 .uninit = uninit,
518516 .query_formats = query_formats,
519− .inputs = perspective_inputs,
520− .outputs = perspective_outputs,
517+ FILTER_INPUTS(perspective_inputs),
518+ FILTER_OUTPUTS(perspective_outputs),
521519 .priv_class = &perspective_class,
522520 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
523521 };
libavfilter/vf_phase.c+2−4
@@ -221,7 +221,6 @@ static const AVFilterPad phase_inputs[] = { · 220 unmodified lines
221221 .filter_frame = filter_frame,
222222 .config_props = config_input,
223223 },
224− { NULL }
225224 };
226225
227226 static const AVFilterPad phase_outputs[] = {
@@ -229,7 +228,6 @@ static const AVFilterPad phase_outputs[] = { · 1 unmodified line
229228 .name = "default",
230229 .type = AVMEDIA_TYPE_VIDEO,
231230 },
232− { NULL }
233231 };
234232
235233 const AVFilter ff_vf_phase = {
@@ -239,8 +237,8 @@ const AVFilter ff_vf_phase = { · 3 unmodified lines
239237 .priv_class = &phase_class,
240238 .uninit = uninit,
241239 .query_formats = query_formats,
242− .inputs = phase_inputs,
243− .outputs = phase_outputs,
240+ FILTER_INPUTS(phase_inputs),
241+ FILTER_OUTPUTS(phase_outputs),
244242 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
245243 .process_command = ff_filter_process_command,
246244 };
libavfilter/vf_photosensitivity.c+2−4
@@ -317,7 +317,6 @@ static const AVFilterPad inputs[] = { · 316 unmodified lines
317317 .filter_frame = filter_frame,
318318 .config_props = config_input,
319319 },
320− { NULL }
321320 };
322321
323322 static const AVFilterPad outputs[] = {
@@ -325,7 +324,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
325324 .name = "default",
326325 .type = AVMEDIA_TYPE_VIDEO,
327326 },
328− { NULL }
329327 };
330328
331329 const AVFilter ff_vf_photosensitivity = {
@@ -335,6 +333,6 @@ const AVFilter ff_vf_photosensitivity = { · 3 unmodified lines
335333 .priv_class = &photosensitivity_class,
336334 .uninit = uninit,
337335 .query_formats = query_formats,
338− .inputs = inputs,
339− .outputs = outputs,
336+ FILTER_INPUTS(inputs),
337+ FILTER_OUTPUTS(outputs),
340338 };
libavfilter/vf_pixdesctest.c+2−4
@@ -113,7 +113,6 @@ static const AVFilterPad avfilter_vf_pixdesctest_inputs[] = { · 112 unmodified lines
113113 .filter_frame = filter_frame,
114114 .config_props = config_props,
115115 },
116− { NULL }
117116 };
118117
119118 static const AVFilterPad avfilter_vf_pixdesctest_outputs[] = {
@@ -121,7 +120,6 @@ static const AVFilterPad avfilter_vf_pixdesctest_outputs[] = { · 1 unmodified line
121120 .name = "default",
122121 .type = AVMEDIA_TYPE_VIDEO,
123122 },
124− { NULL }
125123 };
126124
127125 const AVFilter ff_vf_pixdesctest = {
@@ -129,6 +127,6 @@ const AVFilter ff_vf_pixdesctest = { · 1 unmodified line
129127 .description = NULL_IF_CONFIG_SMALL("Test pixel format definitions."),
130128 .priv_size = sizeof(PixdescTestContext),
131129 .uninit = uninit,
132− .inputs = avfilter_vf_pixdesctest_inputs,
133− .outputs = avfilter_vf_pixdesctest_outputs,
130+ FILTER_INPUTS(avfilter_vf_pixdesctest_inputs),
131+ FILTER_OUTPUTS(avfilter_vf_pixdesctest_outputs),
134132 };
libavfilter/vf_pp.c+2−4
@@ -177,7 +177,6 @@ static const AVFilterPad pp_inputs[] = { · 176 unmodified lines
177177 .config_props = pp_config_props,
178178 .filter_frame = pp_filter_frame,
179179 },
180− { NULL }
181180 };
182181
183182 static const AVFilterPad pp_outputs[] = {
@@ -185,7 +184,6 @@ static const AVFilterPad pp_outputs[] = { · 1 unmodified line
185184 .name = "default",
186185 .type = AVMEDIA_TYPE_VIDEO,
187186 },
188− { NULL }
189187 };
190188
191189 const AVFilter ff_vf_pp = {
@@ -195,8 +193,8 @@ const AVFilter ff_vf_pp = { · 3 unmodified lines
195193 .init = pp_init,
196194 .uninit = pp_uninit,
197195 .query_formats = pp_query_formats,
198− .inputs = pp_inputs,
199− .outputs = pp_outputs,
196+ FILTER_INPUTS(pp_inputs),
197+ FILTER_OUTPUTS(pp_outputs),
200198 .process_command = pp_process_command,
201199 .priv_class = &pp_class,
202200 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
libavfilter/vf_pp7.c+2−4
@@ -387,7 +387,6 @@ static const AVFilterPad pp7_inputs[] = { · 386 unmodified lines
387387 .config_props = config_input,
388388 .filter_frame = filter_frame,
389389 },
390− { NULL }
391390 };
392391
393392 static const AVFilterPad pp7_outputs[] = {
@@ -395,7 +394,6 @@ static const AVFilterPad pp7_outputs[] = { · 1 unmodified line
395394 .name = "default",
396395 .type = AVMEDIA_TYPE_VIDEO,
397396 },
398− { NULL }
399397 };
400398
401399 const AVFilter ff_vf_pp7 = {
@@ -404,8 +402,8 @@ const AVFilter ff_vf_pp7 = { · 2 unmodified lines
404402 .priv_size = sizeof(PP7Context),
405403 .uninit = uninit,
406404 .query_formats = query_formats,
407− .inputs = pp7_inputs,
408− .outputs = pp7_outputs,
405+ FILTER_INPUTS(pp7_inputs),
406+ FILTER_OUTPUTS(pp7_outputs),
409407 .priv_class = &pp7_class,
410408 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
411409 };
libavfilter/vf_premultiply.c+2−3
@@ -819,7 +819,6 @@ static const AVFilterPad premultiply_outputs[] = { · 818 unmodified lines
819819 .type = AVMEDIA_TYPE_VIDEO,
820820 .config_props = config_output,
821821 },
822− { NULL }
823822 };
824823
825824 #if CONFIG_PREMULTIPLY_FILTER
@@ -833,7 +832,7 @@ const AVFilter ff_vf_premultiply = { · 7 unmodified lines
833832 .query_formats = query_formats,
834833 .activate = activate,
835834 .inputs = NULL,
836− .outputs = premultiply_outputs,
835+ FILTER_OUTPUTS(premultiply_outputs),
837836 .priv_class = &premultiply_class,
838837 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL |
839838 AVFILTER_FLAG_DYNAMIC_INPUTS |
@@ -856,7 +855,7 @@ const AVFilter ff_vf_unpremultiply = { · 16 unmodified lines
856855 .query_formats = query_formats,
857856 .activate = activate,
858857 .inputs = NULL,
859− .outputs = premultiply_outputs,
858+ FILTER_OUTPUTS(premultiply_outputs),
860859 .priv_class = &unpremultiply_class,
861860 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL |
862861 AVFILTER_FLAG_DYNAMIC_INPUTS |
libavfilter/vf_procamp_vaapi.c+2−4
@@ -219,7 +219,6 @@ static const AVFilterPad procamp_vaapi_inputs[] = { · 218 unmodified lines
219219 .filter_frame = &procamp_vaapi_filter_frame,
220220 .config_props = &ff_vaapi_vpp_config_input,
221221 },
222− { NULL }
223222 };
224223
225224 static const AVFilterPad procamp_vaapi_outputs[] = {
@@ -228,7 +227,6 @@ static const AVFilterPad procamp_vaapi_outputs[] = { · 2 unmodified lines
228227 .type = AVMEDIA_TYPE_VIDEO,
229228 .config_props = &ff_vaapi_vpp_config_output,
230229 },
231− { NULL }
232230 };
233231
234232 const AVFilter ff_vf_procamp_vaapi = {
@@ -238,8 +236,8 @@ const AVFilter ff_vf_procamp_vaapi = { · 3 unmodified lines
238236 .init = &procamp_vaapi_init,
239237 .uninit = &ff_vaapi_vpp_ctx_uninit,
240238 .query_formats = &ff_vaapi_vpp_query_formats,
241− .inputs = procamp_vaapi_inputs,
242− .outputs = procamp_vaapi_outputs,
239+ FILTER_INPUTS(procamp_vaapi_inputs),
240+ FILTER_OUTPUTS(procamp_vaapi_outputs),
243241 .priv_class = &procamp_vaapi_class,
244242 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
245243 };
libavfilter/vf_program_opencl.c+2−4
@@ -359,7 +359,6 @@ static const AVFilterPad program_opencl_outputs[] = { · 358 unmodified lines
359359 .type = AVMEDIA_TYPE_VIDEO,
360360 .config_props = &program_opencl_config_output,
361361 },
362− { NULL }
363362 };
364363
365364 const AVFilter ff_vf_program_opencl = {
@@ -374,7 +373,7 @@ const AVFilter ff_vf_program_opencl = { · 8 unmodified lines
374373 .query_formats = &ff_opencl_filter_query_formats,
375374 .activate = &program_opencl_activate,
376375 .inputs = NULL,
377− .outputs = program_opencl_outputs,
376+ FILTER_OUTPUTS(program_opencl_outputs),
378377 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
379378 };
380379
@@ -413,7 +412,6 @@ static const AVFilterPad openclsrc_outputs[] = { · 32 unmodified lines
413412 .config_props = &program_opencl_config_output,
414413 .request_frame = &program_opencl_request_frame,
415414 },
416− { NULL }
417415 };
418416
419417 const AVFilter ff_vsrc_openclsrc = {
@@ -425,7 +423,7 @@ const AVFilter ff_vsrc_openclsrc = { · 5 unmodified lines
425423 .uninit = &program_opencl_uninit,
426424 .query_formats = &ff_opencl_filter_query_formats,
427425 .inputs = NULL,
428− .outputs = openclsrc_outputs,
426+ FILTER_OUTPUTS(openclsrc_outputs),
429427 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
430428 };
431429
libavfilter/vf_pseudocolor.c+2−4
@@ -894,7 +894,6 @@ static const AVFilterPad inputs[] = { · 893 unmodified lines
894894 .filter_frame = filter_frame,
895895 .config_props = config_input,
896896 },
897− { NULL }
898897 };
899898
900899 static const AVFilterPad outputs[] = {
@@ -902,7 +901,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
902901 .name = "default",
903902 .type = AVMEDIA_TYPE_VIDEO,
904903 },
905− { NULL }
906904 };
907905
908906 static av_cold void uninit(AVFilterContext *ctx)
@@ -925,8 +923,8 @@ const AVFilter ff_vf_pseudocolor = { · 16 unmodified lines
925923 .priv_class = &pseudocolor_class,
926924 .uninit = uninit,
927925 .query_formats = query_formats,
928− .inputs = inputs,
929− .outputs = outputs,
926+ FILTER_INPUTS(inputs),
927+ FILTER_OUTPUTS(outputs),
930928 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
931929 .process_command = process_command,
932930 };
libavfilter/vf_psnr.c+2−4
@@ -453,7 +453,6 @@ static const AVFilterPad psnr_inputs[] = { · 452 unmodified lines
453453 .type = AVMEDIA_TYPE_VIDEO,
454454 .config_props = config_input_ref,
455455 },
456− { NULL }
457456 };
458457
459458 static const AVFilterPad psnr_outputs[] = {
@@ -462,7 +461,6 @@ static const AVFilterPad psnr_outputs[] = { · 2 unmodified lines
462461 .type = AVMEDIA_TYPE_VIDEO,
463462 .config_props = config_output,
464463 },
465− { NULL }
466464 };
467465
468466 const AVFilter ff_vf_psnr = {
@@ -475,7 +473,7 @@ const AVFilter ff_vf_psnr = { · 6 unmodified lines
475473 .activate = activate,
476474 .priv_size = sizeof(PSNRContext),
477475 .priv_class = &psnr_class,
478− .inputs = psnr_inputs,
479− .outputs = psnr_outputs,
476+ FILTER_INPUTS(psnr_inputs),
477+ FILTER_OUTPUTS(psnr_outputs),
480478 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
481479 };
libavfilter/vf_pullup.c+2−4
@@ -750,7 +750,6 @@ static const AVFilterPad pullup_inputs[] = { · 749 unmodified lines
750750 .filter_frame = filter_frame,
751751 .config_props = config_input,
752752 },
753− { NULL }
754753 };
755754
756755 static const AVFilterPad pullup_outputs[] = {
@@ -758,7 +757,6 @@ static const AVFilterPad pullup_outputs[] = { · 1 unmodified line
758757 .name = "default",
759758 .type = AVMEDIA_TYPE_VIDEO,
760759 },
761− { NULL }
762760 };
763761
764762 const AVFilter ff_vf_pullup = {
@@ -768,6 +766,6 @@ const AVFilter ff_vf_pullup = { · 3 unmodified lines
768766 .priv_class = &pullup_class,
769767 .uninit = uninit,
770768 .query_formats = query_formats,
771− .inputs = pullup_inputs,
772− .outputs = pullup_outputs,
769+ FILTER_INPUTS(pullup_inputs),
770+ FILTER_OUTPUTS(pullup_outputs),
773771 };
libavfilter/vf_qp.c+2−4
@@ -182,7 +182,6 @@ static const AVFilterPad qp_inputs[] = { · 181 unmodified lines
182182 .filter_frame = filter_frame,
183183 .config_props = config_input,
184184 },
185− { NULL }
186185 };
187186
188187 static const AVFilterPad qp_outputs[] = {
@@ -190,15 +189,14 @@ static const AVFilterPad qp_outputs[] = { · 1 unmodified line
190189 .name = "default",
191190 .type = AVMEDIA_TYPE_VIDEO,
192191 },
193− { NULL }
194192 };
195193
196194 const AVFilter ff_vf_qp = {
197195 .name = "qp",
198196 .description = NULL_IF_CONFIG_SMALL("Change video quantization parameters."),
199197 .priv_size = sizeof(QPContext),
200− .inputs = qp_inputs,
201− .outputs = qp_outputs,
198+ FILTER_INPUTS(qp_inputs),
199+ FILTER_OUTPUTS(qp_outputs),
202200 .priv_class = &qp_class,
203201 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
204202 };
libavfilter/vf_random.c+2−4
@@ -127,7 +127,6 @@ static const AVFilterPad random_inputs[] = { · 126 unmodified lines
127127 .type = AVMEDIA_TYPE_VIDEO,
128128 .filter_frame = filter_frame,
129129 },
130− { NULL }
131130 };
132131
133132 static const AVFilterPad random_outputs[] = {
@@ -136,7 +135,6 @@ static const AVFilterPad random_outputs[] = { · 2 unmodified lines
136135 .type = AVMEDIA_TYPE_VIDEO,
137136 .request_frame = request_frame,
138137 },
139− { NULL }
140138 };
141139
142140 const AVFilter ff_vf_random = {
@@ -146,6 +144,6 @@ const AVFilter ff_vf_random = { · 3 unmodified lines
146144 .priv_class = &random_class,
147145 .init = init,
148146 .uninit = uninit,
149− .inputs = random_inputs,
150− .outputs = random_outputs,
147+ FILTER_INPUTS(random_inputs),
148+ FILTER_OUTPUTS(random_outputs),
151149 };
libavfilter/vf_readeia608.c+2−4
@@ -542,7 +542,6 @@ static const AVFilterPad readeia608_inputs[] = { · 541 unmodified lines
542542 .filter_frame = filter_frame,
543543 .config_props = config_input,
544544 },
545− { NULL }
546545 };
547546
548547 static const AVFilterPad readeia608_outputs[] = {
@@ -550,7 +549,6 @@ static const AVFilterPad readeia608_outputs[] = { · 1 unmodified line
550549 .name = "default",
551550 .type = AVMEDIA_TYPE_VIDEO,
552551 },
553− { NULL }
554552 };
555553
556554 const AVFilter ff_vf_readeia608 = {
@@ -559,8 +557,8 @@ const AVFilter ff_vf_readeia608 = { · 2 unmodified lines
559557 .priv_size = sizeof(ReadEIA608Context),
560558 .priv_class = &readeia608_class,
561559 .query_formats = query_formats,
562− .inputs = readeia608_inputs,
563− .outputs = readeia608_outputs,
560+ FILTER_INPUTS(readeia608_inputs),
561+ FILTER_OUTPUTS(readeia608_outputs),
564562 .uninit = uninit,
565563 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
566564 .process_command = process_command,
libavfilter/vf_readvitc.c+2−4
@@ -232,7 +232,6 @@ static const AVFilterPad inputs[] = { · 231 unmodified lines
232232 .filter_frame = filter_frame,
233233 .config_props = config_props,
234234 },
235− { NULL }
236235 };
237236
238237 static const AVFilterPad outputs[] = {
@@ -240,7 +239,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
240239 .name = "default",
241240 .type = AVMEDIA_TYPE_VIDEO,
242241 },
243− { NULL }
244242 };
245243
246244 const AVFilter ff_vf_readvitc = {
@@ -248,8 +246,8 @@ const AVFilter ff_vf_readvitc = { · 1 unmodified line
248246 .description = NULL_IF_CONFIG_SMALL("Read vertical interval timecode and write it to frame metadata."),
249247 .priv_size = sizeof(ReadVitcContext),
250248 .priv_class = &readvitc_class,
251− .inputs = inputs,
252− .outputs = outputs,
249+ FILTER_INPUTS(inputs),
250+ FILTER_OUTPUTS(outputs),
253251 .init = init,
254252 .query_formats = query_formats,
255253 };
libavfilter/vf_remap.c+2−4
@@ -387,7 +387,6 @@ static const AVFilterPad remap_inputs[] = { · 386 unmodified lines
387387 .name = "ymap",
388388 .type = AVMEDIA_TYPE_VIDEO,
389389 },
390− { NULL }
391390 };
392391
393392 static const AVFilterPad remap_outputs[] = {
@@ -396,7 +395,6 @@ static const AVFilterPad remap_outputs[] = { · 2 unmodified lines
396395 .type = AVMEDIA_TYPE_VIDEO,
397396 .config_props = config_output,
398397 },
399− { NULL }
400398 };
401399
402400 const AVFilter ff_vf_remap = {
@@ -406,8 +404,8 @@ const AVFilter ff_vf_remap = { · 3 unmodified lines
406404 .uninit = uninit,
407405 .query_formats = query_formats,
408406 .activate = activate,
409− .inputs = remap_inputs,
410− .outputs = remap_outputs,
407+ FILTER_INPUTS(remap_inputs),
408+ FILTER_OUTPUTS(remap_outputs),
411409 .priv_class = &remap_class,
412410 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
413411 };
libavfilter/vf_removegrain.c+2−4
@@ -634,7 +634,6 @@ static const AVFilterPad removegrain_inputs[] = { · 633 unmodified lines
634634 .filter_frame = filter_frame,
635635 .config_props = config_input,
636636 },
637− { NULL }
638637 };
639638
640639 static const AVFilterPad removegrain_outputs[] = {
@@ -642,7 +641,6 @@ static const AVFilterPad removegrain_outputs[] = { · 1 unmodified line
642641 .name = "default",
643642 .type = AVMEDIA_TYPE_VIDEO,
644643 },
645− { NULL }
646644 };
647645
648646 const AVFilter ff_vf_removegrain = {
@@ -650,8 +648,8 @@ const AVFilter ff_vf_removegrain = { · 1 unmodified line
650648 .description = NULL_IF_CONFIG_SMALL("Remove grain."),
651649 .priv_size = sizeof(RemoveGrainContext),
652650 .query_formats = query_formats,
653− .inputs = removegrain_inputs,
654− .outputs = removegrain_outputs,
651+ FILTER_INPUTS(removegrain_inputs),
652+ FILTER_OUTPUTS(removegrain_outputs),
655653 .priv_class = &removegrain_class,
656654 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
657655 };
libavfilter/vf_removelogo.c+2−4
@@ -559,7 +559,6 @@ static const AVFilterPad removelogo_inputs[] = { · 558 unmodified lines
559559 .config_props = config_props_input,
560560 .filter_frame = filter_frame,
561561 },
562− { NULL }
563562 };
564563
565564 static const AVFilterPad removelogo_outputs[] = {
@@ -567,7 +566,6 @@ static const AVFilterPad removelogo_outputs[] = { · 1 unmodified line
567566 .name = "default",
568567 .type = AVMEDIA_TYPE_VIDEO,
569568 },
570− { NULL }
571569 };
572570
573571 const AVFilter ff_vf_removelogo = {
@@ -577,8 +575,8 @@ const AVFilter ff_vf_removelogo = { · 3 unmodified lines
577575 .init = init,
578576 .uninit = uninit,
579577 .query_formats = query_formats,
580− .inputs = removelogo_inputs,
581− .outputs = removelogo_outputs,
578+ FILTER_INPUTS(removelogo_inputs),
579+ FILTER_OUTPUTS(removelogo_outputs),
582580 .priv_class = &removelogo_class,
583581 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
584582 };
libavfilter/vf_repeatfields.c+2−4
@@ -167,7 +167,6 @@ static const AVFilterPad repeatfields_inputs[] = { · 166 unmodified lines
167167 .filter_frame = filter_frame,
168168 .config_props = config_input,
169169 },
170− { NULL }
171170 };
172171
173172 static const AVFilterPad repeatfields_outputs[] = {
@@ -175,7 +174,6 @@ static const AVFilterPad repeatfields_outputs[] = { · 1 unmodified line
175174 .name = "default",
176175 .type = AVMEDIA_TYPE_VIDEO,
177176 },
178− { NULL }
179177 };
180178
181179 const AVFilter ff_vf_repeatfields = {
@@ -183,7 +181,7 @@ const AVFilter ff_vf_repeatfields = { · 1 unmodified line
183181 .description = NULL_IF_CONFIG_SMALL("Hard repeat fields based on MPEG repeat field flag."),
184182 .priv_size = sizeof(RepeatFieldsContext),
185183 .uninit = uninit,
186− .inputs = repeatfields_inputs,
187− .outputs = repeatfields_outputs,
184+ FILTER_INPUTS(repeatfields_inputs),
185+ FILTER_OUTPUTS(repeatfields_outputs),
188186 .query_formats = query_formats,
189187 };
libavfilter/vf_rotate.c+2−4
@@ -585,7 +585,6 @@ static const AVFilterPad rotate_inputs[] = { · 584 unmodified lines
585585 .type = AVMEDIA_TYPE_VIDEO,
586586 .filter_frame = filter_frame,
587587 },
588− { NULL }
589588 };
590589
591590 static const AVFilterPad rotate_outputs[] = {
@@ -594,7 +593,6 @@ static const AVFilterPad rotate_outputs[] = { · 2 unmodified lines
594593 .type = AVMEDIA_TYPE_VIDEO,
595594 .config_props = config_props,
596595 },
597− { NULL }
598596 };
599597
600598 const AVFilter ff_vf_rotate = {
@@ -605,8 +603,8 @@ const AVFilter ff_vf_rotate = { · 4 unmodified lines
605603 .uninit = uninit,
606604 .query_formats = query_formats,
607605 .process_command = process_command,
608− .inputs = rotate_inputs,
609− .outputs = rotate_outputs,
606+ FILTER_INPUTS(rotate_inputs),
607+ FILTER_OUTPUTS(rotate_outputs),
610608 .priv_class = &rotate_class,
611609 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
612610 };
libavfilter/vf_sab.c+2−4
@@ -309,7 +309,6 @@ static const AVFilterPad sab_inputs[] = { · 308 unmodified lines
309309 .filter_frame = filter_frame,
310310 .config_props = config_props,
311311 },
312− { NULL }
313312 };
314313
315314 static const AVFilterPad sab_outputs[] = {
@@ -317,7 +316,6 @@ static const AVFilterPad sab_outputs[] = { · 1 unmodified line
317316 .name = "default",
318317 .type = AVMEDIA_TYPE_VIDEO,
319318 },
320− { NULL }
321319 };
322320
323321 const AVFilter ff_vf_sab = {
@@ -327,8 +325,8 @@ const AVFilter ff_vf_sab = { · 3 unmodified lines
327325 .init = init,
328326 .uninit = uninit,
329327 .query_formats = query_formats,
330− .inputs = sab_inputs,
331− .outputs = sab_outputs,
328+ FILTER_INPUTS(sab_inputs),
329+ FILTER_OUTPUTS(sab_outputs),
332330 .priv_class = &sab_class,
333331 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
334332 };
libavfilter/vf_scale.c+4−8
@@ -957,7 +957,6 @@ static const AVFilterPad avfilter_vf_scale_inputs[] = { · 956 unmodified lines
957957 .type = AVMEDIA_TYPE_VIDEO,
958958 .filter_frame = filter_frame,
959959 },
960− { NULL }
961960 };
962961
963962 static const AVFilterPad avfilter_vf_scale_outputs[] = {
@@ -966,7 +965,6 @@ static const AVFilterPad avfilter_vf_scale_outputs[] = { · 2 unmodified lines
966965 .type = AVMEDIA_TYPE_VIDEO,
967966 .config_props = config_props,
968967 },
969− { NULL }
970968 };
971969
972970 const AVFilter ff_vf_scale = {
@@ -977,8 +975,8 @@ const AVFilter ff_vf_scale = { · 4 unmodified lines
977975 .query_formats = query_formats,
978976 .priv_size = sizeof(ScaleContext),
979977 .priv_class = &scale_class,
980− .inputs = avfilter_vf_scale_inputs,
981− .outputs = avfilter_vf_scale_outputs,
978+ FILTER_INPUTS(avfilter_vf_scale_inputs),
979+ FILTER_OUTPUTS(avfilter_vf_scale_outputs),
982980 .process_command = process_command,
983981 };
984982
@@ -1002,7 +1000,6 @@ static const AVFilterPad avfilter_vf_scale2ref_inputs[] = { · 17 unmodified lines
10021000 .type = AVMEDIA_TYPE_VIDEO,
10031001 .filter_frame = filter_frame_ref,
10041002 },
1005− { NULL }
10061003 };
10071004
10081005 static const AVFilterPad avfilter_vf_scale2ref_outputs[] = {
@@ -1018,7 +1015,6 @@ static const AVFilterPad avfilter_vf_scale2ref_outputs[] = { · 9 unmodified lines
10181015 .config_props = config_props_ref,
10191016 .request_frame= request_frame_ref,
10201017 },
1021− { NULL }
10221018 };
10231019
10241020 const AVFilter ff_vf_scale2ref = {
@@ -1029,7 +1025,7 @@ const AVFilter ff_vf_scale2ref = { · 4 unmodified lines
10291025 .query_formats = query_formats,
10301026 .priv_size = sizeof(ScaleContext),
10311027 .priv_class = &scale2ref_class,
1032− .inputs = avfilter_vf_scale2ref_inputs,
1033− .outputs = avfilter_vf_scale2ref_outputs,
1028+ FILTER_INPUTS(avfilter_vf_scale2ref_inputs),
1029+ FILTER_OUTPUTS(avfilter_vf_scale2ref_outputs),
10341030 .process_command = process_command,
10351031 };
libavfilter/vf_scale_cuda.c+2−4
@@ -625,7 +625,6 @@ static const AVFilterPad cudascale_inputs[] = { · 624 unmodified lines
625625 .filter_frame = cudascale_filter_frame,
626626 .get_buffer.video = cudascale_get_video_buffer,
627627 },
628− { NULL }
629628 };
630629
631630 static const AVFilterPad cudascale_outputs[] = {
@@ -634,7 +633,6 @@ static const AVFilterPad cudascale_outputs[] = { · 2 unmodified lines
634633 .type = AVMEDIA_TYPE_VIDEO,
635634 .config_props = cudascale_config_props,
636635 },
637− { NULL }
638636 };
639637
640638 const AVFilter ff_vf_scale_cuda = {
@@ -648,8 +646,8 @@ const AVFilter ff_vf_scale_cuda = { · 7 unmodified lines
648646 .priv_size = sizeof(CUDAScaleContext),
649647 .priv_class = &cudascale_class,
650648
651− .inputs = cudascale_inputs,
652− .outputs = cudascale_outputs,
649+ FILTER_INPUTS(cudascale_inputs),
650+ FILTER_OUTPUTS(cudascale_outputs),
653651
654652 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
655653 };
libavfilter/vf_scale_npp.c+2−4
@@ -577,7 +577,6 @@ static const AVFilterPad nppscale_inputs[] = { · 576 unmodified lines
577577 .type = AVMEDIA_TYPE_VIDEO,
578578 .filter_frame = nppscale_filter_frame,
579579 },
580− { NULL }
581580 };
582581
583582 static const AVFilterPad nppscale_outputs[] = {
@@ -586,7 +585,6 @@ static const AVFilterPad nppscale_outputs[] = { · 2 unmodified lines
586585 .type = AVMEDIA_TYPE_VIDEO,
587586 .config_props = nppscale_config_props,
588587 },
589− { NULL }
590588 };
591589
592590 const AVFilter ff_vf_scale_npp = {
@@ -601,8 +599,8 @@ const AVFilter ff_vf_scale_npp = { · 8 unmodified lines
601599 .priv_size = sizeof(NPPScaleContext),
602600 .priv_class = &nppscale_class,
603601
604− .inputs = nppscale_inputs,
605− .outputs = nppscale_outputs,
602+ FILTER_INPUTS(nppscale_inputs),
603+ FILTER_OUTPUTS(nppscale_outputs),
606604
607605 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
608606 };
libavfilter/vf_scale_qsv.c+2−4
@@ -650,7 +650,6 @@ static const AVFilterPad qsvscale_inputs[] = { · 649 unmodified lines
650650 .type = AVMEDIA_TYPE_VIDEO,
651651 .filter_frame = qsvscale_filter_frame,
652652 },
653− { NULL }
654653 };
655654
656655 static const AVFilterPad qsvscale_outputs[] = {
@@ -659,7 +658,6 @@ static const AVFilterPad qsvscale_outputs[] = { · 2 unmodified lines
659658 .type = AVMEDIA_TYPE_VIDEO,
660659 .config_props = qsvscale_config_props,
661660 },
662− { NULL }
663661 };
664662
665663 const AVFilter ff_vf_scale_qsv = {
@@ -673,8 +671,8 @@ const AVFilter ff_vf_scale_qsv = { · 7 unmodified lines
673671 .priv_size = sizeof(QSVScaleContext),
674672 .priv_class = &qsvscale_class,
675673
676− .inputs = qsvscale_inputs,
677− .outputs = qsvscale_outputs,
674+ FILTER_INPUTS(qsvscale_inputs),
675+ FILTER_OUTPUTS(qsvscale_outputs),
678676
679677 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
680678 };
libavfilter/vf_scale_vaapi.c+2−4
@@ -269,7 +269,6 @@ static const AVFilterPad scale_vaapi_inputs[] = { · 268 unmodified lines
269269 .filter_frame = &scale_vaapi_filter_frame,
270270 .config_props = &ff_vaapi_vpp_config_input,
271271 },
272− { NULL }
273272 };
274273
275274 static const AVFilterPad scale_vaapi_outputs[] = {
@@ -278,7 +277,6 @@ static const AVFilterPad scale_vaapi_outputs[] = { · 2 unmodified lines
278277 .type = AVMEDIA_TYPE_VIDEO,
279278 .config_props = &scale_vaapi_config_output,
280279 },
281− { NULL }
282280 };
283281
284282 const AVFilter ff_vf_scale_vaapi = {
@@ -288,8 +286,8 @@ const AVFilter ff_vf_scale_vaapi = { · 3 unmodified lines
288286 .init = &scale_vaapi_init,
289287 .uninit = &ff_vaapi_vpp_ctx_uninit,
290288 .query_formats = &ff_vaapi_vpp_query_formats,
291− .inputs = scale_vaapi_inputs,
292− .outputs = scale_vaapi_outputs,
289+ FILTER_INPUTS(scale_vaapi_inputs),
290+ FILTER_OUTPUTS(scale_vaapi_outputs),
293291 .priv_class = &scale_vaapi_class,
294292 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
295293 };
libavfilter/vf_scale_vulkan.c+2−4
@@ -512,7 +512,6 @@ static const AVFilterPad scale_vulkan_inputs[] = { · 511 unmodified lines
512512 .filter_frame = &scale_vulkan_filter_frame,
513513 .config_props = &ff_vk_filter_config_input,
514514 },
515− { NULL }
516515 };
517516
518517 static const AVFilterPad scale_vulkan_outputs[] = {
@@ -521,7 +520,6 @@ static const AVFilterPad scale_vulkan_outputs[] = { · 2 unmodified lines
521520 .type = AVMEDIA_TYPE_VIDEO,
522521 .config_props = &scale_vulkan_config_output,
523522 },
524− { NULL }
525523 };
526524
527525 const AVFilter ff_vf_scale_vulkan = {
@@ -531,8 +529,8 @@ const AVFilter ff_vf_scale_vulkan = { · 3 unmodified lines
531529 .init = &ff_vk_filter_init,
532530 .uninit = &scale_vulkan_uninit,
533531 .query_formats = &ff_vk_filter_query_formats,
534− .inputs = scale_vulkan_inputs,
535− .outputs = scale_vulkan_outputs,
532+ FILTER_INPUTS(scale_vulkan_inputs),
533+ FILTER_OUTPUTS(scale_vulkan_outputs),
536534 .priv_class = &scale_vulkan_class,
537535 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
538536 };
libavfilter/vf_scdet.c+2−4
@@ -196,7 +196,6 @@ static const AVFilterPad scdet_inputs[] = { · 195 unmodified lines
196196 .type = AVMEDIA_TYPE_VIDEO,
197197 .config_props = config_input,
198198 },
199− { NULL }
200199 };
201200
202201 static const AVFilterPad scdet_outputs[] = {
@@ -204,7 +203,6 @@ static const AVFilterPad scdet_outputs[] = { · 1 unmodified line
204203 .name = "default",
205204 .type = AVMEDIA_TYPE_VIDEO,
206205 },
207− { NULL }
208206 };
209207
210208 const AVFilter ff_vf_scdet = {
@@ -214,7 +212,7 @@ const AVFilter ff_vf_scdet = { · 3 unmodified lines
214212 .priv_class = &scdet_class,
215213 .uninit = uninit,
216214 .query_formats = query_formats,
217− .inputs = scdet_inputs,
218− .outputs = scdet_outputs,
215+ FILTER_INPUTS(scdet_inputs),
216+ FILTER_OUTPUTS(scdet_outputs),
219217 .activate = activate,
220218 };
libavfilter/vf_scroll.c+2−4
@@ -197,7 +197,6 @@ static const AVFilterPad scroll_inputs[] = { · 196 unmodified lines
197197 .config_props = config_input,
198198 .filter_frame = filter_frame,
199199 },
200− { NULL }
201200 };
202201
203202 static const AVFilterPad scroll_outputs[] = {
@@ -205,7 +204,6 @@ static const AVFilterPad scroll_outputs[] = { · 1 unmodified line
205204 .name = "default",
206205 .type = AVMEDIA_TYPE_VIDEO,
207206 },
208− { NULL }
209207 };
210208
211209 const AVFilter ff_vf_scroll = {
@@ -214,8 +212,8 @@ const AVFilter ff_vf_scroll = { · 2 unmodified lines
214212 .priv_size = sizeof(ScrollContext),
215213 .priv_class = &scroll_class,
216214 .query_formats = query_formats,
217− .inputs = scroll_inputs,
218− .outputs = scroll_outputs,
215+ FILTER_INPUTS(scroll_inputs),
216+ FILTER_OUTPUTS(scroll_outputs),
219217 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
220218 .process_command = ff_filter_process_command,
221219 };
libavfilter/vf_selectivecolor.c+2−4
@@ -456,7 +456,6 @@ static const AVFilterPad selectivecolor_inputs[] = { · 455 unmodified lines
456456 .filter_frame = filter_frame,
457457 .config_props = config_input,
458458 },
459− { NULL }
460459 };
461460
462461 static const AVFilterPad selectivecolor_outputs[] = {
@@ -464,7 +463,6 @@ static const AVFilterPad selectivecolor_outputs[] = { · 1 unmodified line
464463 .name = "default",
465464 .type = AVMEDIA_TYPE_VIDEO,
466465 },
467− { NULL }
468466 };
469467
470468 const AVFilter ff_vf_selectivecolor = {
@@ -472,8 +470,8 @@ const AVFilter ff_vf_selectivecolor = { · 1 unmodified line
472470 .description = NULL_IF_CONFIG_SMALL("Apply CMYK adjustments to specific color ranges."),
473471 .priv_size = sizeof(SelectiveColorContext),
474472 .query_formats = query_formats,
475− .inputs = selectivecolor_inputs,
476− .outputs = selectivecolor_outputs,
473+ FILTER_INPUTS(selectivecolor_inputs),
474+ FILTER_OUTPUTS(selectivecolor_outputs),
477475 .priv_class = &selectivecolor_class,
478476 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
479477 };
libavfilter/vf_separatefields.c+2−4
@@ -161,7 +161,6 @@ static const AVFilterPad separatefields_inputs[] = { · 160 unmodified lines
161161 .name = "default",
162162 .type = AVMEDIA_TYPE_VIDEO,
163163 },
164− { NULL }
165164 };
166165
167166 static const AVFilterPad separatefields_outputs[] = {
@@ -170,7 +169,6 @@ static const AVFilterPad separatefields_outputs[] = { · 2 unmodified lines
170169 .type = AVMEDIA_TYPE_VIDEO,
171170 .config_props = config_props_output,
172171 },
173− { NULL }
174172 };
175173
176174 const AVFilter ff_vf_separatefields = {
@@ -179,6 +177,6 @@ const AVFilter ff_vf_separatefields = { · 2 unmodified lines
179177 .priv_size = sizeof(SeparateFieldsContext),
180178 .activate = activate,
181179 .uninit = uninit,
182− .inputs = separatefields_inputs,
183− .outputs = separatefields_outputs,
180+ FILTER_INPUTS(separatefields_inputs),
181+ FILTER_OUTPUTS(separatefields_outputs),
184182 };
libavfilter/vf_setparams.c+6−8
@@ -151,7 +151,6 @@ static const AVFilterPad inputs[] = { · 150 unmodified lines
151151 .type = AVMEDIA_TYPE_VIDEO,
152152 .filter_frame = filter_frame,
153153 },
154− { NULL }
155154 };
156155
157156 static const AVFilterPad outputs[] = {
@@ -159,7 +158,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
159158 .name = "default",
160159 .type = AVMEDIA_TYPE_VIDEO,
161160 },
162− { NULL }
163161 };
164162
165163 const AVFilter ff_vf_setparams = {
@@ -167,8 +165,8 @@ const AVFilter ff_vf_setparams = { · 1 unmodified line
167165 .description = NULL_IF_CONFIG_SMALL("Force field, or color property for the output video frame."),
168166 .priv_size = sizeof(SetParamsContext),
169167 .priv_class = &setparams_class,
170− .inputs = inputs,
171− .outputs = outputs,
168+ FILTER_INPUTS(inputs),
169+ FILTER_OUTPUTS(outputs),
172170 };
173171
174172 #if CONFIG_SETRANGE_FILTER
@@ -206,8 +204,8 @@ const AVFilter ff_vf_setrange = { · 31 unmodified lines
206204 .priv_size = sizeof(SetParamsContext),
207205 .init = init_setrange,
208206 .priv_class = &setrange_class,
209− .inputs = inputs,
210− .outputs = outputs,
207+ FILTER_INPUTS(inputs),
208+ FILTER_OUTPUTS(outputs),
211209 };
212210 #endif /* CONFIG_SETRANGE_FILTER */
213211
@@ -240,7 +238,7 @@ const AVFilter ff_vf_setfield = { · 26 unmodified lines
240238 .priv_size = sizeof(SetParamsContext),
241239 .init = init_setfield,
242240 .priv_class = &setfield_class,
243− .inputs = inputs,
244− .outputs = outputs,
241+ FILTER_INPUTS(inputs),
242+ FILTER_OUTPUTS(outputs),
245243 };
246244 #endif /* CONFIG_SETFIELD_FILTER */
libavfilter/vf_shear.c+2−4
@@ -302,7 +302,6 @@ static const AVFilterPad inputs[] = { · 301 unmodified lines
302302 .type = AVMEDIA_TYPE_VIDEO,
303303 .filter_frame = filter_frame,
304304 },
305− { NULL }
306305 };
307306
308307 static const AVFilterPad outputs[] = {
@@ -311,7 +310,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
311310 .type = AVMEDIA_TYPE_VIDEO,
312311 .config_props = config_output,
313312 },
314− { NULL }
315313 };
316314
317315 const AVFilter ff_vf_shear = {
@@ -320,8 +318,8 @@ const AVFilter ff_vf_shear = { · 2 unmodified lines
320318 .priv_size = sizeof(ShearContext),
321319 .init = init,
322320 .query_formats = query_formats,
323− .inputs = inputs,
324− .outputs = outputs,
321+ FILTER_INPUTS(inputs),
322+ FILTER_OUTPUTS(outputs),
325323 .priv_class = &shear_class,
326324 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
327325 .process_command = process_command,
libavfilter/vf_showinfo.c+2−4
@@ -661,7 +661,6 @@ static const AVFilterPad avfilter_vf_showinfo_inputs[] = { · 660 unmodified lines
661661 .filter_frame = filter_frame,
662662 .config_props = config_props_in,
663663 },
664− { NULL }
665664 };
666665
667666 static const AVFilterPad avfilter_vf_showinfo_outputs[] = {
@@ -670,14 +669,13 @@ static const AVFilterPad avfilter_vf_showinfo_outputs[] = { · 2 unmodified lines
670669 .type = AVMEDIA_TYPE_VIDEO,
671670 .config_props = config_props_out,
672671 },
673− { NULL }
674672 };
675673
676674 const AVFilter ff_vf_showinfo = {
677675 .name = "showinfo",
678676 .description = NULL_IF_CONFIG_SMALL("Show textual information for each video frame."),
679− .inputs = avfilter_vf_showinfo_inputs,
680− .outputs = avfilter_vf_showinfo_outputs,
677+ FILTER_INPUTS(avfilter_vf_showinfo_inputs),
678+ FILTER_OUTPUTS(avfilter_vf_showinfo_outputs),
681679 .priv_size = sizeof(ShowInfoContext),
682680 .priv_class = &showinfo_class,
683681 };
libavfilter/vf_showpalette.c+2−4
@@ -100,7 +100,6 @@ static const AVFilterPad showpalette_inputs[] = { · 99 unmodified lines
100100 .type = AVMEDIA_TYPE_VIDEO,
101101 .filter_frame = filter_frame,
102102 },
103− { NULL }
104103 };
105104
106105 static const AVFilterPad showpalette_outputs[] = {
@@ -109,7 +108,6 @@ static const AVFilterPad showpalette_outputs[] = { · 2 unmodified lines
109108 .type = AVMEDIA_TYPE_VIDEO,
110109 .config_props = config_output,
111110 },
112− { NULL }
113111 };
114112
115113 const AVFilter ff_vf_showpalette = {
@@ -117,7 +115,7 @@ const AVFilter ff_vf_showpalette = { · 1 unmodified line
117115 .description = NULL_IF_CONFIG_SMALL("Display frame palette."),
118116 .priv_size = sizeof(ShowPaletteContext),
119117 .query_formats = query_formats,
120− .inputs = showpalette_inputs,
121− .outputs = showpalette_outputs,
118+ FILTER_INPUTS(showpalette_inputs),
119+ FILTER_OUTPUTS(showpalette_outputs),
122120 .priv_class = &showpalette_class,
123121 };
libavfilter/vf_shuffleframes.c+2−4
@@ -144,7 +144,6 @@ static const AVFilterPad shuffleframes_inputs[] = { · 143 unmodified lines
144144 .type = AVMEDIA_TYPE_VIDEO,
145145 .filter_frame = filter_frame,
146146 },
147− { NULL },
148147 };
149148
150149 static const AVFilterPad shuffleframes_outputs[] = {
@@ -152,7 +151,6 @@ static const AVFilterPad shuffleframes_outputs[] = { · 1 unmodified line
152151 .name = "default",
153152 .type = AVMEDIA_TYPE_VIDEO,
154153 },
155− { NULL },
156154 };
157155
158156 const AVFilter ff_vf_shuffleframes = {
@@ -162,7 +160,7 @@ const AVFilter ff_vf_shuffleframes = { · 3 unmodified lines
162160 .priv_class = &shuffleframes_class,
163161 .init = init,
164162 .uninit = uninit,
165− .inputs = shuffleframes_inputs,
166− .outputs = shuffleframes_outputs,
163+ FILTER_INPUTS(shuffleframes_inputs),
164+ FILTER_OUTPUTS(shuffleframes_outputs),
167165 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
168166 };
libavfilter/vf_shufflepixels.c+2−4
@@ -434,7 +434,6 @@ static const AVFilterPad shufflepixels_inputs[] = { · 433 unmodified lines
434434 .type = AVMEDIA_TYPE_VIDEO,
435435 .filter_frame = filter_frame,
436436 },
437− { NULL },
438437 };
439438
440439 static const AVFilterPad shufflepixels_outputs[] = {
@@ -443,7 +442,6 @@ static const AVFilterPad shufflepixels_outputs[] = { · 2 unmodified lines
443442 .type = AVMEDIA_TYPE_VIDEO,
444443 .config_props = config_output,
445444 },
446− { NULL },
447445 };
448446
449447 const AVFilter ff_vf_shufflepixels = {
@@ -453,7 +451,7 @@ const AVFilter ff_vf_shufflepixels = { · 3 unmodified lines
453451 .priv_class = &shufflepixels_class,
454452 .query_formats = query_formats,
455453 .uninit = uninit,
456− .inputs = shufflepixels_inputs,
457− .outputs = shufflepixels_outputs,
454+ FILTER_INPUTS(shufflepixels_inputs),
455+ FILTER_OUTPUTS(shufflepixels_outputs),
458456 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
459457 };
libavfilter/vf_shuffleplanes.c+2−4
@@ -151,7 +151,6 @@ static const AVFilterPad shuffleplanes_inputs[] = { · 150 unmodified lines
151151 .config_props = shuffleplanes_config_input,
152152 .filter_frame = shuffleplanes_filter_frame,
153153 },
154− { NULL },
155154 };
156155
157156 static const AVFilterPad shuffleplanes_outputs[] = {
@@ -159,7 +158,6 @@ static const AVFilterPad shuffleplanes_outputs[] = { · 1 unmodified line
159158 .name = "default",
160159 .type = AVMEDIA_TYPE_VIDEO,
161160 },
162− { NULL },
163161 };
164162
165163 const AVFilter ff_vf_shuffleplanes = {
@@ -168,7 +166,7 @@ const AVFilter ff_vf_shuffleplanes = { · 2 unmodified lines
168166 .priv_size = sizeof(ShufflePlanesContext),
169167 .priv_class = &shuffleplanes_class,
170168 .query_formats = query_formats,
171− .inputs = shuffleplanes_inputs,
172− .outputs = shuffleplanes_outputs,
169+ FILTER_INPUTS(shuffleplanes_inputs),
170+ FILTER_OUTPUTS(shuffleplanes_outputs),
173171 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
174172 };
libavfilter/vf_signalstats.c+2−4
@@ -997,7 +997,6 @@ static const AVFilterPad signalstats_inputs[] = { · 996 unmodified lines
997997 .type = AVMEDIA_TYPE_VIDEO,
998998 .filter_frame = filter_frame,
999999 },
1000− { NULL }
10011000 };
10021001
10031002 static const AVFilterPad signalstats_outputs[] = {
@@ -1006,7 +1005,6 @@ static const AVFilterPad signalstats_outputs[] = { · 2 unmodified lines
10061005 .config_props = config_output,
10071006 .type = AVMEDIA_TYPE_VIDEO,
10081007 },
1009− { NULL }
10101008 };
10111009
10121010 const AVFilter ff_vf_signalstats = {
@@ -1016,8 +1014,8 @@ const AVFilter ff_vf_signalstats = { · 3 unmodified lines
10161014 .uninit = uninit,
10171015 .query_formats = query_formats,
10181016 .priv_size = sizeof(SignalstatsContext),
1019− .inputs = signalstats_inputs,
1020− .outputs = signalstats_outputs,
1017+ FILTER_INPUTS(signalstats_inputs),
1018+ FILTER_OUTPUTS(signalstats_outputs),
10211019 .priv_class = &signalstats_class,
10221020 .flags = AVFILTER_FLAG_SLICE_THREADS,
10231021 };
libavfilter/vf_signature.c+1−2
@@ -755,7 +755,6 @@ static const AVFilterPad signature_outputs[] = { · 754 unmodified lines
755755 .request_frame = request_frame,
756756 .config_props = config_output,
757757 },
758− { NULL }
759758 };
760759
761760 const AVFilter ff_vf_signature = {
@@ -766,7 +765,7 @@ const AVFilter ff_vf_signature = { · 4 unmodified lines
766765 .init = init,
767766 .uninit = uninit,
768767 .query_formats = query_formats,
769− .outputs = signature_outputs,
768+ FILTER_OUTPUTS(signature_outputs),
770769 .inputs = NULL,
771770 .flags = AVFILTER_FLAG_DYNAMIC_INPUTS,
772771 };
libavfilter/vf_smartblur.c+2−4
@@ -277,7 +277,6 @@ static const AVFilterPad smartblur_inputs[] = { · 276 unmodified lines
277277 .filter_frame = filter_frame,
278278 .config_props = config_props,
279279 },
280− { NULL }
281280 };
282281
283282 static const AVFilterPad smartblur_outputs[] = {
@@ -285,7 +284,6 @@ static const AVFilterPad smartblur_outputs[] = { · 1 unmodified line
285284 .name = "default",
286285 .type = AVMEDIA_TYPE_VIDEO,
287286 },
288− { NULL }
289287 };
290288
291289 const AVFilter ff_vf_smartblur = {
@@ -295,8 +293,8 @@ const AVFilter ff_vf_smartblur = { · 3 unmodified lines
295293 .init = init,
296294 .uninit = uninit,
297295 .query_formats = query_formats,
298− .inputs = smartblur_inputs,
299− .outputs = smartblur_outputs,
296+ FILTER_INPUTS(smartblur_inputs),
297+ FILTER_OUTPUTS(smartblur_outputs),
300298 .priv_class = &smartblur_class,
301299 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
302300 };
libavfilter/vf_spp.c+2−4
@@ -495,7 +495,6 @@ static const AVFilterPad spp_inputs[] = { · 494 unmodified lines
495495 .config_props = config_input,
496496 .filter_frame = filter_frame,
497497 },
498− { NULL }
499498 };
500499
501500 static const AVFilterPad spp_outputs[] = {
@@ -503,7 +502,6 @@ static const AVFilterPad spp_outputs[] = { · 1 unmodified line
503502 .name = "default",
504503 .type = AVMEDIA_TYPE_VIDEO,
505504 },
506− { NULL }
507505 };
508506
509507 const AVFilter ff_vf_spp = {
@@ -513,8 +511,8 @@ const AVFilter ff_vf_spp = { · 3 unmodified lines
513511 .init_dict = init_dict,
514512 .uninit = uninit,
515513 .query_formats = query_formats,
516− .inputs = spp_inputs,
517− .outputs = spp_outputs,
514+ FILTER_INPUTS(spp_inputs),
515+ FILTER_OUTPUTS(spp_outputs),
518516 .process_command = process_command,
519517 .priv_class = &spp_class,
520518 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
libavfilter/vf_sr.c+2−4
@@ -174,7 +174,6 @@ static const AVFilterPad sr_inputs[] = { · 173 unmodified lines
174174 .type = AVMEDIA_TYPE_VIDEO,
175175 .filter_frame = filter_frame,
176176 },
177− { NULL }
178177 };
179178
180179 static const AVFilterPad sr_outputs[] = {
@@ -183,7 +182,6 @@ static const AVFilterPad sr_outputs[] = { · 2 unmodified lines
183182 .config_props = config_output,
184183 .type = AVMEDIA_TYPE_VIDEO,
185184 },
186− { NULL }
187185 };
188186
189187 const AVFilter ff_vf_sr = {
@@ -193,7 +191,7 @@ const AVFilter ff_vf_sr = { · 3 unmodified lines
193191 .init = init,
194192 .uninit = uninit,
195193 .query_formats = query_formats,
196− .inputs = sr_inputs,
197− .outputs = sr_outputs,
194+ FILTER_INPUTS(sr_inputs),
195+ FILTER_OUTPUTS(sr_outputs),
198196 .priv_class = &sr_class,
199197 };
libavfilter/vf_ssim.c+2−4
@@ -579,7 +579,6 @@ static const AVFilterPad ssim_inputs[] = { · 578 unmodified lines
579579 .type = AVMEDIA_TYPE_VIDEO,
580580 .config_props = config_input_ref,
581581 },
582− { NULL }
583582 };
584583
585584 static const AVFilterPad ssim_outputs[] = {
@@ -588,7 +587,6 @@ static const AVFilterPad ssim_outputs[] = { · 2 unmodified lines
588587 .type = AVMEDIA_TYPE_VIDEO,
589588 .config_props = config_output,
590589 },
591− { NULL }
592590 };
593591
594592 const AVFilter ff_vf_ssim = {
@@ -601,7 +599,7 @@ const AVFilter ff_vf_ssim = { · 6 unmodified lines
601599 .activate = activate,
602600 .priv_size = sizeof(SSIMContext),
603601 .priv_class = &ssim_class,
604− .inputs = ssim_inputs,
605− .outputs = ssim_outputs,
602+ FILTER_INPUTS(ssim_inputs),
603+ FILTER_OUTPUTS(ssim_outputs),
606604 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
607605 };
libavfilter/vf_stack.c+3−4
@@ -402,7 +402,6 @@ static const AVFilterPad outputs[] = { · 401 unmodified lines
402402 .type = AVMEDIA_TYPE_VIDEO,
403403 .config_props = config_output,
404404 },
405− { NULL }
406405 };
407406
408407 #if CONFIG_HSTACK_FILTER
@@ -416,7 +415,7 @@ const AVFilter ff_vf_hstack = { · 7 unmodified lines
416415 .priv_size = sizeof(StackContext),
417416 .priv_class = &hstack_class,
418417 .query_formats = query_formats,
419− .outputs = outputs,
418+ FILTER_OUTPUTS(outputs),
420419 .init = init,
421420 .uninit = uninit,
422421 .activate = activate,
@@ -436,7 +435,7 @@ const AVFilter ff_vf_vstack = { · 13 unmodified lines
436435 .priv_size = sizeof(StackContext),
437436 .priv_class = &vstack_class,
438437 .query_formats = query_formats,
439− .outputs = outputs,
438+ FILTER_OUTPUTS(outputs),
440439 .init = init,
441440 .uninit = uninit,
442441 .activate = activate,
@@ -463,7 +462,7 @@ const AVFilter ff_vf_xstack = { · 20 unmodified lines
463462 .priv_size = sizeof(StackContext),
464463 .priv_class = &xstack_class,
465464 .query_formats = query_formats,
466− .outputs = outputs,
465+ FILTER_OUTPUTS(outputs),
467466 .init = init,
468467 .uninit = uninit,
469468 .activate = activate,
libavfilter/vf_stereo3d.c+2−4
@@ -1096,7 +1096,6 @@ static const AVFilterPad stereo3d_inputs[] = { · 1095 unmodified lines
10961096 .type = AVMEDIA_TYPE_VIDEO,
10971097 .filter_frame = filter_frame,
10981098 },
1099− { NULL }
11001099 };
11011100
11021101 static const AVFilterPad stereo3d_outputs[] = {
@@ -1105,7 +1104,6 @@ static const AVFilterPad stereo3d_outputs[] = { · 2 unmodified lines
11051104 .type = AVMEDIA_TYPE_VIDEO,
11061105 .config_props = config_output,
11071106 },
1108− { NULL }
11091107 };
11101108
11111109 const AVFilter ff_vf_stereo3d = {
@@ -1114,8 +1112,8 @@ const AVFilter ff_vf_stereo3d = { · 2 unmodified lines
11141112 .priv_size = sizeof(Stereo3DContext),
11151113 .uninit = uninit,
11161114 .query_formats = query_formats,
1117− .inputs = stereo3d_inputs,
1118− .outputs = stereo3d_outputs,
1115+ FILTER_INPUTS(stereo3d_inputs),
1116+ FILTER_OUTPUTS(stereo3d_outputs),
11191117 .priv_class = &stereo3d_class,
11201118 .flags = AVFILTER_FLAG_SLICE_THREADS,
11211119 };
libavfilter/vf_subtitles.c+4−6
@@ -202,7 +202,6 @@ static const AVFilterPad ass_inputs[] = { · 201 unmodified lines
202202 .filter_frame = filter_frame,
203203 .config_props = config_input,
204204 },
205− { NULL }
206205 };
207206
208207 static const AVFilterPad ass_outputs[] = {
@@ -210,7 +209,6 @@ static const AVFilterPad ass_outputs[] = { · 1 unmodified line
210209 .name = "default",
211210 .type = AVMEDIA_TYPE_VIDEO,
212211 },
213− { NULL }
214212 };
215213
216214 #if CONFIG_ASS_FILTER
@@ -254,8 +252,8 @@ const AVFilter ff_vf_ass = { · 37 unmodified lines
254252 .init = init_ass,
255253 .uninit = uninit,
256254 .query_formats = query_formats,
257− .inputs = ass_inputs,
258− .outputs = ass_outputs,
255+ FILTER_INPUTS(ass_inputs),
256+ FILTER_OUTPUTS(ass_outputs),
259257 .priv_class = &ass_class,
260258 };
261259 #endif
@@ -488,8 +486,8 @@ const AVFilter ff_vf_subtitles = { · 226 unmodified lines
488486 .init = init_subtitles,
489487 .uninit = uninit,
490488 .query_formats = query_formats,
491− .inputs = ass_inputs,
492− .outputs = ass_outputs,
489+ FILTER_INPUTS(ass_inputs),
490+ FILTER_OUTPUTS(ass_outputs),
493491 .priv_class = &subtitles_class,
494492 };
495493 #endif
libavfilter/vf_super2xsai.c+2−4
@@ -345,7 +345,6 @@ static const AVFilterPad super2xsai_inputs[] = { · 344 unmodified lines
345345 .config_props = config_input,
346346 .filter_frame = filter_frame,
347347 },
348− { NULL }
349348 };
350349
351350 static const AVFilterPad super2xsai_outputs[] = {
@@ -354,7 +353,6 @@ static const AVFilterPad super2xsai_outputs[] = { · 2 unmodified lines
354353 .type = AVMEDIA_TYPE_VIDEO,
355354 .config_props = config_output,
356355 },
357− { NULL }
358356 };
359357
360358 const AVFilter ff_vf_super2xsai = {
@@ -362,7 +360,7 @@ const AVFilter ff_vf_super2xsai = { · 1 unmodified line
362360 .description = NULL_IF_CONFIG_SMALL("Scale the input by 2x using the Super2xSaI pixel art algorithm."),
363361 .priv_size = sizeof(Super2xSaIContext),
364362 .query_formats = query_formats,
365− .inputs = super2xsai_inputs,
366− .outputs = super2xsai_outputs,
363+ FILTER_INPUTS(super2xsai_inputs),
364+ FILTER_OUTPUTS(super2xsai_outputs),
367365 .flags = AVFILTER_FLAG_SLICE_THREADS,
368366 };
libavfilter/vf_swaprect.c+2−4
@@ -232,7 +232,6 @@ static const AVFilterPad inputs[] = { · 231 unmodified lines
232232 .filter_frame = filter_frame,
233233 .config_props = config_input,
234234 },
235− { NULL }
236235 };
237236
238237 static const AVFilterPad outputs[] = {
@@ -240,7 +239,6 @@ static const AVFilterPad outputs[] = { · 1 unmodified line
240239 .name = "default",
241240 .type = AVMEDIA_TYPE_VIDEO,
242241 },
243− { NULL }
244242 };
245243
246244 const AVFilter ff_vf_swaprect = {
@@ -250,8 +248,8 @@ const AVFilter ff_vf_swaprect = { · 3 unmodified lines
250248 .priv_class = &swaprect_class,
251249 .query_formats = query_formats,
252250 .uninit = uninit,
253− .inputs = inputs,
254− .outputs = outputs,
251+ FILTER_INPUTS(inputs),
252+ FILTER_OUTPUTS(outputs),
255253 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
256254 .process_command = ff_filter_process_command,
257255 };
libavfilter/vf_swapuv.c+2−4
@@ -100,7 +100,6 @@ static const AVFilterPad swapuv_inputs[] = { · 99 unmodified lines
100100 .get_buffer.video = get_video_buffer,
101101 .filter_frame = filter_frame,
102102 },
103− { NULL }
104103 };
105104
106105 static const AVFilterPad swapuv_outputs[] = {
@@ -108,7 +107,6 @@ static const AVFilterPad swapuv_outputs[] = { · 1 unmodified line
108107 .name = "default",
109108 .type = AVMEDIA_TYPE_VIDEO,
110109 },
111− { NULL }
112110 };
113111
114112 const AVFilter ff_vf_swapuv = {
@@ -117,7 +115,7 @@ const AVFilter ff_vf_swapuv = { · 2 unmodified lines
117115 .query_formats = query_formats,
118116 .priv_size = sizeof(SwapUVContext),
119117 .priv_class = &swapuv_class,
120− .inputs = swapuv_inputs,
121− .outputs = swapuv_outputs,
118+ FILTER_INPUTS(swapuv_inputs),
119+ FILTER_OUTPUTS(swapuv_outputs),
122120 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
123121 };
libavfilter/vf_telecine.c+2−4
@@ -275,7 +275,6 @@ static const AVFilterPad telecine_inputs[] = { · 274 unmodified lines
275275 .filter_frame = filter_frame,
276276 .config_props = config_input,
277277 },
278− { NULL }
279278 };
280279
281280 static const AVFilterPad telecine_outputs[] = {
@@ -284,7 +283,6 @@ static const AVFilterPad telecine_outputs[] = { · 2 unmodified lines
284283 .type = AVMEDIA_TYPE_VIDEO,
285284 .config_props = config_output,
286285 },
287− { NULL }
288286 };
289287
290288 const AVFilter ff_vf_telecine = {
@@ -295,6 +293,6 @@ const AVFilter ff_vf_telecine = { · 4 unmodified lines
295293 .init = init,
296294 .uninit = uninit,
297295 .query_formats = query_formats,
298− .inputs = telecine_inputs,
299− .outputs = telecine_outputs,
296+ FILTER_INPUTS(telecine_inputs),
297+ FILTER_OUTPUTS(telecine_outputs),
300298 };
libavfilter/vf_threshold.c+2−4
@@ -342,7 +342,6 @@ static const AVFilterPad inputs[] = { · 341 unmodified lines
342342 .name = "max",
343343 .type = AVMEDIA_TYPE_VIDEO,
344344 },
345− { NULL }
346345 };
347346
348347 static const AVFilterPad outputs[] = {
@@ -351,7 +350,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
351350 .type = AVMEDIA_TYPE_VIDEO,
352351 .config_props = config_output,
353352 },
354− { NULL }
355353 };
356354
357355 const AVFilter ff_vf_threshold = {
@@ -362,8 +360,8 @@ const AVFilter ff_vf_threshold = { · 4 unmodified lines
362360 .uninit = uninit,
363361 .query_formats = query_formats,
364362 .activate = activate,
365− .inputs = inputs,
366− .outputs = outputs,
363+ FILTER_INPUTS(inputs),
364+ FILTER_OUTPUTS(outputs),
367365 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
368366 .process_command = ff_filter_process_command,
369367 };
libavfilter/vf_thumbnail.c+2−4
@@ -272,7 +272,6 @@ static const AVFilterPad thumbnail_inputs[] = { · 271 unmodified lines
272272 .config_props = config_props,
273273 .filter_frame = filter_frame,
274274 },
275− { NULL }
276275 };
277276
278277 static const AVFilterPad thumbnail_outputs[] = {
@@ -281,7 +280,6 @@ static const AVFilterPad thumbnail_outputs[] = { · 2 unmodified lines
281280 .type = AVMEDIA_TYPE_VIDEO,
282281 .request_frame = request_frame,
283282 },
284− { NULL }
285283 };
286284
287285 const AVFilter ff_vf_thumbnail = {
@@ -291,8 +289,8 @@ const AVFilter ff_vf_thumbnail = { · 3 unmodified lines
291289 .init = init,
292290 .uninit = uninit,
293291 .query_formats = query_formats,
294− .inputs = thumbnail_inputs,
295− .outputs = thumbnail_outputs,
292+ FILTER_INPUTS(thumbnail_inputs),
293+ FILTER_OUTPUTS(thumbnail_outputs),
296294 .priv_class = &thumbnail_class,
297295 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
298296 };
libavfilter/vf_thumbnail_cuda.c+2−4
@@ -428,7 +428,6 @@ static const AVFilterPad thumbnail_cuda_inputs[] = { · 427 unmodified lines
428428 .config_props = config_props,
429429 .filter_frame = filter_frame,
430430 },
431− { NULL }
432431 };
433432
434433 static const AVFilterPad thumbnail_cuda_outputs[] = {
@@ -437,7 +436,6 @@ static const AVFilterPad thumbnail_cuda_outputs[] = { · 2 unmodified lines
437436 .type = AVMEDIA_TYPE_VIDEO,
438437 .request_frame = request_frame,
439438 },
440− { NULL }
441439 };
442440
443441 const AVFilter ff_vf_thumbnail_cuda = {
@@ -447,8 +445,8 @@ const AVFilter ff_vf_thumbnail_cuda = { · 3 unmodified lines
447445 .init = init,
448446 .uninit = uninit,
449447 .query_formats = query_formats,
450− .inputs = thumbnail_cuda_inputs,
451− .outputs = thumbnail_cuda_outputs,
448+ FILTER_INPUTS(thumbnail_cuda_inputs),
449+ FILTER_OUTPUTS(thumbnail_cuda_outputs),
452450 .priv_class = &thumbnail_cuda_class,
453451 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
454452 };
libavfilter/vf_tile.c+2−4
@@ -272,7 +272,6 @@ static const AVFilterPad tile_inputs[] = { · 271 unmodified lines
272272 .type = AVMEDIA_TYPE_VIDEO,
273273 .filter_frame = filter_frame,
274274 },
275− { NULL }
276275 };
277276
278277 static const AVFilterPad tile_outputs[] = {
@@ -282,7 +281,6 @@ static const AVFilterPad tile_outputs[] = { · 3 unmodified lines
282281 .config_props = config_props,
283282 .request_frame = request_frame,
284283 },
285− { NULL }
286284 };
287285
288286 const AVFilter ff_vf_tile = {
@@ -292,7 +290,7 @@ const AVFilter ff_vf_tile = { · 3 unmodified lines
292290 .uninit = uninit,
293291 .query_formats = query_formats,
294292 .priv_size = sizeof(TileContext),
295− .inputs = tile_inputs,
296− .outputs = tile_outputs,
293+ FILTER_INPUTS(tile_inputs),
294+ FILTER_OUTPUTS(tile_outputs),
297295 .priv_class = &tile_class,
298296 };
libavfilter/vf_tinterlace.c+4−6
@@ -540,7 +540,6 @@ static const AVFilterPad tinterlace_inputs[] = { · 539 unmodified lines
540540 .type = AVMEDIA_TYPE_VIDEO,
541541 .filter_frame = filter_frame,
542542 },
543− { NULL }
544543 };
545544
546545 static const AVFilterPad tinterlace_outputs[] = {
@@ -549,7 +548,6 @@ static const AVFilterPad tinterlace_outputs[] = { · 2 unmodified lines
549548 .type = AVMEDIA_TYPE_VIDEO,
550549 .config_props = config_out_props,
551550 },
552− { NULL }
553551 };
554552
555553 const AVFilter ff_vf_tinterlace = {
@@ -558,8 +556,8 @@ const AVFilter ff_vf_tinterlace = { · 2 unmodified lines
558556 .priv_size = sizeof(TInterlaceContext),
559557 .uninit = uninit,
560558 .query_formats = query_formats,
561− .inputs = tinterlace_inputs,
562− .outputs = tinterlace_outputs,
559+ FILTER_INPUTS(tinterlace_inputs),
560+ FILTER_OUTPUTS(tinterlace_outputs),
563561 .priv_class = &tinterlace_class,
564562 };
565563
@@ -571,7 +569,7 @@ const AVFilter ff_vf_interlace = { · 5 unmodified lines
571569 .init = init_interlace,
572570 .uninit = uninit,
573571 .query_formats = query_formats,
574− .inputs = tinterlace_inputs,
575− .outputs = tinterlace_outputs,
572+ FILTER_INPUTS(tinterlace_inputs),
573+ FILTER_OUTPUTS(tinterlace_outputs),
576574 .priv_class = &interlace_class,
577575 };
libavfilter/vf_tmidequalizer.c+2−4
@@ -415,7 +415,6 @@ static const AVFilterPad tmidequalizer_inputs[] = { · 414 unmodified lines
415415 .config_props = config_input,
416416 .filter_frame = filter_frame,
417417 },
418− { NULL }
419418 };
420419
421420 static const AVFilterPad tmidequalizer_outputs[] = {
@@ -424,7 +423,6 @@ static const AVFilterPad tmidequalizer_outputs[] = { · 2 unmodified lines
424423 .type = AVMEDIA_TYPE_VIDEO,
425424 .request_frame = request_frame,
426425 },
427− { NULL }
428426 };
429427
430428 const AVFilter ff_vf_tmidequalizer = {
@@ -433,8 +431,8 @@ const AVFilter ff_vf_tmidequalizer = { · 2 unmodified lines
433431 .priv_size = sizeof(TMidEqualizerContext),
434432 .uninit = uninit,
435433 .query_formats = query_formats,
436− .inputs = tmidequalizer_inputs,
437− .outputs = tmidequalizer_outputs,
434+ FILTER_INPUTS(tmidequalizer_inputs),
435+ FILTER_OUTPUTS(tmidequalizer_outputs),
438436 .priv_class = &tmidequalizer_class,
439437 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
440438 };
libavfilter/vf_tonemap.c+2−4
@@ -324,7 +324,6 @@ static const AVFilterPad tonemap_inputs[] = { · 323 unmodified lines
324324 .type = AVMEDIA_TYPE_VIDEO,
325325 .filter_frame = filter_frame,
326326 },
327− { NULL }
328327 };
329328
330329 static const AVFilterPad tonemap_outputs[] = {
@@ -332,7 +331,6 @@ static const AVFilterPad tonemap_outputs[] = { · 1 unmodified line
332331 .name = "default",
333332 .type = AVMEDIA_TYPE_VIDEO,
334333 },
335− { NULL }
336334 };
337335
338336 const AVFilter ff_vf_tonemap = {
@@ -342,7 +340,7 @@ const AVFilter ff_vf_tonemap = { · 3 unmodified lines
342340 .query_formats = query_formats,
343341 .priv_size = sizeof(TonemapContext),
344342 .priv_class = &tonemap_class,
345− .inputs = tonemap_inputs,
346− .outputs = tonemap_outputs,
343+ FILTER_INPUTS(tonemap_inputs),
344+ FILTER_OUTPUTS(tonemap_outputs),
347345 .flags = AVFILTER_FLAG_SLICE_THREADS,
348346 };
libavfilter/vf_tonemap_opencl.c+2−4
@@ -527,7 +527,6 @@ static const AVFilterPad tonemap_opencl_inputs[] = { · 526 unmodified lines
527527 .filter_frame = &tonemap_opencl_filter_frame,
528528 .config_props = &ff_opencl_filter_config_input,
529529 },
530− { NULL }
531530 };
532531
533532 static const AVFilterPad tonemap_opencl_outputs[] = {
@@ -536,7 +535,6 @@ static const AVFilterPad tonemap_opencl_outputs[] = { · 2 unmodified lines
536535 .type = AVMEDIA_TYPE_VIDEO,
537536 .config_props = &tonemap_opencl_config_output,
538537 },
539− { NULL }
540538 };
541539
542540 const AVFilter ff_vf_tonemap_opencl = {
@@ -547,7 +545,7 @@ const AVFilter ff_vf_tonemap_opencl = { · 4 unmodified lines
547545 .init = &ff_opencl_filter_init,
548546 .uninit = &tonemap_opencl_uninit,
549547 .query_formats = &ff_opencl_filter_query_formats,
550− .inputs = tonemap_opencl_inputs,
551− .outputs = tonemap_opencl_outputs,
548+ FILTER_INPUTS(tonemap_opencl_inputs),
549+ FILTER_OUTPUTS(tonemap_opencl_outputs),
552550 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
553551 };
libavfilter/vf_tonemap_vaapi.c+2−4
@@ -391,7 +391,6 @@ static const AVFilterPad tonemap_vaapi_inputs[] = { · 390 unmodified lines
391391 .filter_frame = &tonemap_vaapi_filter_frame,
392392 .config_props = &ff_vaapi_vpp_config_input,
393393 },
394− { NULL }
395394 };
396395
397396 static const AVFilterPad tonemap_vaapi_outputs[] = {
@@ -400,7 +399,6 @@ static const AVFilterPad tonemap_vaapi_outputs[] = { · 2 unmodified lines
400399 .type = AVMEDIA_TYPE_VIDEO,
401400 .config_props = &ff_vaapi_vpp_config_output,
402401 },
403− { NULL }
404402 };
405403
406404 const AVFilter ff_vf_tonemap_vaapi = {
@@ -410,8 +408,8 @@ const AVFilter ff_vf_tonemap_vaapi = { · 3 unmodified lines
410408 .init = &tonemap_vaapi_init,
411409 .uninit = &ff_vaapi_vpp_ctx_uninit,
412410 .query_formats = &ff_vaapi_vpp_query_formats,
413− .inputs = tonemap_vaapi_inputs,
414− .outputs = tonemap_vaapi_outputs,
411+ FILTER_INPUTS(tonemap_vaapi_inputs),
412+ FILTER_OUTPUTS(tonemap_vaapi_outputs),
415413 .priv_class = &tonemap_vaapi_class,
416414 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
417415 };
libavfilter/vf_tpad.c+2−4
@@ -193,7 +193,6 @@ static const AVFilterPad tpad_inputs[] = { · 192 unmodified lines
193193 .type = AVMEDIA_TYPE_VIDEO,
194194 .config_props = config_input,
195195 },
196− { NULL }
197196 };
198197
199198 static const AVFilterPad tpad_outputs[] = {
@@ -201,7 +200,6 @@ static const AVFilterPad tpad_outputs[] = { · 1 unmodified line
201200 .name = "default",
202201 .type = AVMEDIA_TYPE_VIDEO,
203202 },
204− { NULL }
205203 };
206204
207205 const AVFilter ff_vf_tpad = {
@@ -212,6 +210,6 @@ const AVFilter ff_vf_tpad = { · 4 unmodified lines
212210 .query_formats = query_formats,
213211 .activate = activate,
214212 .uninit = uninit,
215− .inputs = tpad_inputs,
216− .outputs = tpad_outputs,
213+ FILTER_INPUTS(tpad_inputs),
214+ FILTER_OUTPUTS(tpad_outputs),
217215 };
libavfilter/vf_transpose.c+2−4
@@ -386,7 +386,6 @@ static const AVFilterPad avfilter_vf_transpose_inputs[] = { · 385 unmodified lines
386386 .get_buffer.video = get_video_buffer,
387387 .filter_frame = filter_frame,
388388 },
389− { NULL }
390389 };
391390
392391 static const AVFilterPad avfilter_vf_transpose_outputs[] = {
@@ -395,7 +394,6 @@ static const AVFilterPad avfilter_vf_transpose_outputs[] = { · 2 unmodified lines
395394 .config_props = config_props_output,
396395 .type = AVMEDIA_TYPE_VIDEO,
397396 },
398− { NULL }
399397 };
400398
401399 const AVFilter ff_vf_transpose = {
@@ -404,7 +402,7 @@ const AVFilter ff_vf_transpose = { · 2 unmodified lines
404402 .priv_size = sizeof(TransContext),
405403 .priv_class = &transpose_class,
406404 .query_formats = query_formats,
407− .inputs = avfilter_vf_transpose_inputs,
408− .outputs = avfilter_vf_transpose_outputs,
405+ FILTER_INPUTS(avfilter_vf_transpose_inputs),
406+ FILTER_OUTPUTS(avfilter_vf_transpose_outputs),
409407 .flags = AVFILTER_FLAG_SLICE_THREADS,
410408 };
libavfilter/vf_transpose_npp.c+2−4
@@ -460,7 +460,6 @@ static const AVFilterPad npptranspose_inputs[] = { · 459 unmodified lines
460460 .type = AVMEDIA_TYPE_VIDEO,
461461 .filter_frame = npptranspose_filter_frame,
462462 },
463− { NULL }
464463 };
465464
466465 static const AVFilterPad npptranspose_outputs[] = {
@@ -469,7 +468,6 @@ static const AVFilterPad npptranspose_outputs[] = { · 2 unmodified lines
469468 .type = AVMEDIA_TYPE_VIDEO,
470469 .config_props = npptranspose_config_props,
471470 },
472− { NULL }
473471 };
474472
475473 const AVFilter ff_vf_transpose_npp = {
@@ -480,7 +478,7 @@ const AVFilter ff_vf_transpose_npp = { · 4 unmodified lines
480478 .query_formats = npptranspose_query_formats,
481479 .priv_size = sizeof(NPPTransposeContext),
482480 .priv_class = &npptranspose_class,
483− .inputs = npptranspose_inputs,
484− .outputs = npptranspose_outputs,
481+ FILTER_INPUTS(npptranspose_inputs),
482+ FILTER_OUTPUTS(npptranspose_outputs),
485483 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
486484 };
libavfilter/vf_transpose_opencl.c+2−4
@@ -260,7 +260,6 @@ static const AVFilterPad transpose_opencl_inputs[] = { · 259 unmodified lines
260260 .filter_frame = &transpose_opencl_filter_frame,
261261 .config_props = &ff_opencl_filter_config_input,
262262 },
263− { NULL }
264263 };
265264
266265 static const AVFilterPad transpose_opencl_outputs[] = {
@@ -269,7 +268,6 @@ static const AVFilterPad transpose_opencl_outputs[] = { · 2 unmodified lines
269268 .type = AVMEDIA_TYPE_VIDEO,
270269 .config_props = &transpose_opencl_config_output,
271270 },
272− { NULL }
273271 };
274272
275273 const AVFilter ff_vf_transpose_opencl = {
@@ -280,7 +278,7 @@ const AVFilter ff_vf_transpose_opencl = { · 4 unmodified lines
280278 .init = &ff_opencl_filter_init,
281279 .uninit = &transpose_opencl_uninit,
282280 .query_formats = &ff_opencl_filter_query_formats,
283− .inputs = transpose_opencl_inputs,
284− .outputs = transpose_opencl_outputs,
281+ FILTER_INPUTS(transpose_opencl_inputs),
282+ FILTER_OUTPUTS(transpose_opencl_outputs),
285283 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
286284 };
libavfilter/vf_transpose_vaapi.c+2−4
@@ -260,7 +260,6 @@ static const AVFilterPad transpose_vaapi_inputs[] = { · 259 unmodified lines
260260 .get_buffer.video = get_video_buffer,
261261 .config_props = &ff_vaapi_vpp_config_input,
262262 },
263− { NULL }
264263 };
265264
266265 static const AVFilterPad transpose_vaapi_outputs[] = {
@@ -269,7 +268,6 @@ static const AVFilterPad transpose_vaapi_outputs[] = { · 2 unmodified lines
269268 .type = AVMEDIA_TYPE_VIDEO,
270269 .config_props = &transpose_vaapi_vpp_config_output,
271270 },
272− { NULL }
273271 };
274272
275273 const AVFilter ff_vf_transpose_vaapi = {
@@ -279,8 +277,8 @@ const AVFilter ff_vf_transpose_vaapi = { · 3 unmodified lines
279277 .init = &transpose_vaapi_init,
280278 .uninit = &ff_vaapi_vpp_ctx_uninit,
281279 .query_formats = &ff_vaapi_vpp_query_formats,
282− .inputs = transpose_vaapi_inputs,
283− .outputs = transpose_vaapi_outputs,
280+ FILTER_INPUTS(transpose_vaapi_inputs),
281+ FILTER_OUTPUTS(transpose_vaapi_outputs),
284282 .priv_class = &transpose_vaapi_class,
285283 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
286284 };
libavfilter/vf_unsharp.c+2−4
@@ -343,7 +343,6 @@ static const AVFilterPad avfilter_vf_unsharp_inputs[] = { · 342 unmodified lines
343343 .filter_frame = filter_frame,
344344 .config_props = config_input,
345345 },
346− { NULL }
347346 };
348347
349348 static const AVFilterPad avfilter_vf_unsharp_outputs[] = {
@@ -351,7 +350,6 @@ static const AVFilterPad avfilter_vf_unsharp_outputs[] = { · 1 unmodified line
351350 .name = "default",
352351 .type = AVMEDIA_TYPE_VIDEO,
353352 },
354− { NULL }
355353 };
356354
357355 const AVFilter ff_vf_unsharp = {
@@ -362,7 +360,7 @@ const AVFilter ff_vf_unsharp = { · 4 unmodified lines
362360 .init = init,
363361 .uninit = uninit,
364362 .query_formats = query_formats,
365− .inputs = avfilter_vf_unsharp_inputs,
366− .outputs = avfilter_vf_unsharp_outputs,
363+ FILTER_INPUTS(avfilter_vf_unsharp_inputs),
364+ FILTER_OUTPUTS(avfilter_vf_unsharp_outputs),
367365 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
368366 };
libavfilter/vf_unsharp_opencl.c+2−4
@@ -386,7 +386,6 @@ static const AVFilterPad unsharp_opencl_inputs[] = { · 385 unmodified lines
386386 .filter_frame = &unsharp_opencl_filter_frame,
387387 .config_props = &ff_opencl_filter_config_input,
388388 },
389− { NULL }
390389 };
391390
392391 static const AVFilterPad unsharp_opencl_outputs[] = {
@@ -395,7 +394,6 @@ static const AVFilterPad unsharp_opencl_outputs[] = { · 2 unmodified lines
395394 .type = AVMEDIA_TYPE_VIDEO,
396395 .config_props = &ff_opencl_filter_config_output,
397396 },
398− { NULL }
399397 };
400398
401399 const AVFilter ff_vf_unsharp_opencl = {
@@ -406,7 +404,7 @@ const AVFilter ff_vf_unsharp_opencl = { · 4 unmodified lines
406404 .init = &ff_opencl_filter_init,
407405 .uninit = &unsharp_opencl_uninit,
408406 .query_formats = &ff_opencl_filter_query_formats,
409− .inputs = unsharp_opencl_inputs,
410− .outputs = unsharp_opencl_outputs,
407+ FILTER_INPUTS(unsharp_opencl_inputs),
408+ FILTER_OUTPUTS(unsharp_opencl_outputs),
411409 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
412410 };
libavfilter/vf_untile.c+2−4
@@ -172,7 +172,6 @@ static const AVFilterPad untile_inputs[] = { · 171 unmodified lines
172172 .name = "default",
173173 .type = AVMEDIA_TYPE_VIDEO,
174174 },
175− { NULL }
176175 };
177176
178177 static const AVFilterPad untile_outputs[] = {
@@ -181,7 +180,6 @@ static const AVFilterPad untile_outputs[] = { · 2 unmodified lines
181180 .type = AVMEDIA_TYPE_VIDEO,
182181 .config_props = config_output,
183182 },
184− { NULL }
185183 };
186184
187185 const AVFilter ff_vf_untile = {
@@ -192,7 +190,7 @@ const AVFilter ff_vf_untile = { · 4 unmodified lines
192190 .query_formats = query_formats,
193191 .activate = activate,
194192 .priv_size = sizeof(UntileContext),
195− .inputs = untile_inputs,
196− .outputs = untile_outputs,
193+ FILTER_INPUTS(untile_inputs),
194+ FILTER_OUTPUTS(untile_outputs),
197195 .priv_class = &untile_class,
198196 };
libavfilter/vf_uspp.c+2−4
@@ -480,7 +480,6 @@ static const AVFilterPad uspp_inputs[] = { · 479 unmodified lines
480480 .config_props = config_input,
481481 .filter_frame = filter_frame,
482482 },
483− { NULL }
484483 };
485484
486485 static const AVFilterPad uspp_outputs[] = {
@@ -488,7 +487,6 @@ static const AVFilterPad uspp_outputs[] = { · 1 unmodified line
488487 .name = "default",
489488 .type = AVMEDIA_TYPE_VIDEO,
490489 },
491− { NULL }
492490 };
493491
494492 const AVFilter ff_vf_uspp = {
@@ -497,8 +495,8 @@ const AVFilter ff_vf_uspp = { · 2 unmodified lines
497495 .priv_size = sizeof(USPPContext),
498496 .uninit = uninit,
499497 .query_formats = query_formats,
500− .inputs = uspp_inputs,
501− .outputs = uspp_outputs,
498+ FILTER_INPUTS(uspp_inputs),
499+ FILTER_OUTPUTS(uspp_outputs),
502500 .priv_class = &uspp_class,
503501 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
504502 };
libavfilter/vf_v360.c+2−4
@@ -4966,7 +4966,6 @@ static const AVFilterPad inputs[] = { · 4965 unmodified lines
49664966 .type = AVMEDIA_TYPE_VIDEO,
49674967 .filter_frame = filter_frame,
49684968 },
4969− { NULL }
49704969 };
49714970
49724971 static const AVFilterPad outputs[] = {
@@ -4975,7 +4974,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
49754974 .type = AVMEDIA_TYPE_VIDEO,
49764975 .config_props = config_output,
49774976 },
4978− { NULL }
49794977 };
49804978
49814979 const AVFilter ff_vf_v360 = {
@@ -4985,8 +4983,8 @@ const AVFilter ff_vf_v360 = { · 3 unmodified lines
49854983 .init = init,
49864984 .uninit = uninit,
49874985 .query_formats = query_formats,
4988− .inputs = inputs,
4989− .outputs = outputs,
4986+ FILTER_INPUTS(inputs),
4987+ FILTER_OUTPUTS(outputs),
49904988 .priv_class = &v360_class,
49914989 .flags = AVFILTER_FLAG_SLICE_THREADS,
49924990 .process_command = process_command,
libavfilter/vf_vaguedenoiser.c+2−4
@@ -595,7 +595,6 @@ static const AVFilterPad vaguedenoiser_inputs[] = { · 594 unmodified lines
595595 .config_props = config_input,
596596 .filter_frame = filter_frame,
597597 },
598− { NULL }
599598 };
600599
601600
@@ -604,7 +603,6 @@ static const AVFilterPad vaguedenoiser_outputs[] = { · 2 unmodified lines
604603 .name = "default",
605604 .type = AVMEDIA_TYPE_VIDEO
606605 },
607− { NULL }
608606 };
609607
610608 const AVFilter ff_vf_vaguedenoiser = {
@@ -615,7 +613,7 @@ const AVFilter ff_vf_vaguedenoiser = { · 4 unmodified lines
615613 .init = init,
616614 .uninit = uninit,
617615 .query_formats = query_formats,
618− .inputs = vaguedenoiser_inputs,
619− .outputs = vaguedenoiser_outputs,
616+ FILTER_INPUTS(vaguedenoiser_inputs),
617+ FILTER_OUTPUTS(vaguedenoiser_outputs),
620618 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
621619 };
libavfilter/vf_vectorscope.c+2−4
@@ -1575,7 +1575,6 @@ static const AVFilterPad inputs[] = { · 1574 unmodified lines
15751575 .filter_frame = filter_frame,
15761576 .config_props = config_input,
15771577 },
1578− { NULL }
15791578 };
15801579
15811580 static const AVFilterPad outputs[] = {
@@ -1584,7 +1583,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
15841583 .type = AVMEDIA_TYPE_VIDEO,
15851584 .config_props = config_output,
15861585 },
1587− { NULL }
15881586 };
15891587
15901588 const AVFilter ff_vf_vectorscope = {
@@ -1594,6 +1592,6 @@ const AVFilter ff_vf_vectorscope = { · 3 unmodified lines
15941592 .priv_class = &vectorscope_class,
15951593 .query_formats = query_formats,
15961594 .uninit = uninit,
1597− .inputs = inputs,
1598− .outputs = outputs,
1595+ FILTER_INPUTS(inputs),
1596+ FILTER_OUTPUTS(outputs),
15991597 };
libavfilter/vf_vflip.c+2−4
@@ -133,7 +133,6 @@ static const AVFilterPad avfilter_vf_vflip_inputs[] = { · 132 unmodified lines
133133 .filter_frame = filter_frame,
134134 .config_props = config_input,
135135 },
136− { NULL }
137136 };
138137
139138 static const AVFilterPad avfilter_vf_vflip_outputs[] = {
@@ -141,7 +140,6 @@ static const AVFilterPad avfilter_vf_vflip_outputs[] = { · 1 unmodified line
141140 .name = "default",
142141 .type = AVMEDIA_TYPE_VIDEO,
143142 },
144− { NULL }
145143 };
146144
147145 const AVFilter ff_vf_vflip = {
@@ -149,7 +147,7 @@ const AVFilter ff_vf_vflip = { · 1 unmodified line
149147 .description = NULL_IF_CONFIG_SMALL("Flip the input video vertically."),
150148 .priv_size = sizeof(FlipContext),
151149 .priv_class = &vflip_class,
152− .inputs = avfilter_vf_vflip_inputs,
153− .outputs = avfilter_vf_vflip_outputs,
150+ FILTER_INPUTS(avfilter_vf_vflip_inputs),
151+ FILTER_OUTPUTS(avfilter_vf_vflip_outputs),
154152 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
155153 };
libavfilter/vf_vfrdet.c+2−4
@@ -93,7 +93,6 @@ static const AVFilterPad vfrdet_inputs[] = { · 92 unmodified lines
9393 .type = AVMEDIA_TYPE_VIDEO,
9494 .filter_frame = filter_frame,
9595 },
96− { NULL }
9796 };
9897
9998 static const AVFilterPad vfrdet_outputs[] = {
@@ -101,7 +100,6 @@ static const AVFilterPad vfrdet_outputs[] = { · 1 unmodified line
101100 .name = "default",
102101 .type = AVMEDIA_TYPE_VIDEO,
103102 },
104− { NULL }
105103 };
106104
107105 const AVFilter ff_vf_vfrdet = {
@@ -110,6 +108,6 @@ const AVFilter ff_vf_vfrdet = { · 2 unmodified lines
110108 .priv_size = sizeof(VFRDETContext),
111109 .init = init,
112110 .uninit = uninit,
113− .inputs = vfrdet_inputs,
114− .outputs = vfrdet_outputs,
111+ FILTER_INPUTS(vfrdet_inputs),
112+ FILTER_OUTPUTS(vfrdet_outputs),
115113 };
libavfilter/vf_vibrance.c+2−4
@@ -344,7 +344,6 @@ static const AVFilterPad vibrance_inputs[] = { · 343 unmodified lines
344344 .filter_frame = filter_frame,
345345 .config_props = config_input,
346346 },
347− { NULL }
348347 };
349348
350349 static const AVFilterPad vibrance_outputs[] = {
@@ -352,7 +351,6 @@ static const AVFilterPad vibrance_outputs[] = { · 1 unmodified line
352351 .name = "default",
353352 .type = AVMEDIA_TYPE_VIDEO,
354353 },
355− { NULL }
356354 };
357355
358356 #define OFFSET(x) offsetof(VibranceContext, x)
@@ -378,8 +376,8 @@ const AVFilter ff_vf_vibrance = { · 19 unmodified lines
378376 .priv_size = sizeof(VibranceContext),
379377 .priv_class = &vibrance_class,
380378 .query_formats = query_formats,
381− .inputs = vibrance_inputs,
382− .outputs = vibrance_outputs,
379+ FILTER_INPUTS(vibrance_inputs),
380+ FILTER_OUTPUTS(vibrance_outputs),
383381 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
384382 .process_command = ff_filter_process_command,
385383 };
libavfilter/vf_vidstabdetect.c+2−4
@@ -193,7 +193,6 @@ static const AVFilterPad avfilter_vf_vidstabdetect_inputs[] = { · 192 unmodified lines
193193 .filter_frame = filter_frame,
194194 .config_props = config_input,
195195 },
196− { NULL }
197196 };
198197
199198 static const AVFilterPad avfilter_vf_vidstabdetect_outputs[] = {
@@ -201,7 +200,6 @@ static const AVFilterPad avfilter_vf_vidstabdetect_outputs[] = { · 1 unmodified line
201200 .name = "default",
202201 .type = AVMEDIA_TYPE_VIDEO,
203202 },
204− { NULL }
205203 };
206204
207205 const AVFilter ff_vf_vidstabdetect = {
@@ -213,7 +211,7 @@ const AVFilter ff_vf_vidstabdetect = { · 5 unmodified lines
213211 .init = init,
214212 .uninit = uninit,
215213 .query_formats = query_formats,
216− .inputs = avfilter_vf_vidstabdetect_inputs,
217− .outputs = avfilter_vf_vidstabdetect_outputs,
214+ FILTER_INPUTS(avfilter_vf_vidstabdetect_inputs),
215+ FILTER_OUTPUTS(avfilter_vf_vidstabdetect_outputs),
218216 .priv_class = &vidstabdetect_class,
219217 };
libavfilter/vf_vidstabtransform.c+2−4
@@ -294,7 +294,6 @@ static const AVFilterPad avfilter_vf_vidstabtransform_inputs[] = { · 293 unmodified lines
294294 .filter_frame = filter_frame,
295295 .config_props = config_input,
296296 },
297− { NULL }
298297 };
299298
300299 static const AVFilterPad avfilter_vf_vidstabtransform_outputs[] = {
@@ -302,7 +301,6 @@ static const AVFilterPad avfilter_vf_vidstabtransform_outputs[] = { · 1 unmodified line
302301 .name = "default",
303302 .type = AVMEDIA_TYPE_VIDEO,
304303 },
305− { NULL }
306304 };
307305
308306 const AVFilter ff_vf_vidstabtransform = {
@@ -314,7 +312,7 @@ const AVFilter ff_vf_vidstabtransform = { · 5 unmodified lines
314312 .init = init,
315313 .uninit = uninit,
316314 .query_formats = query_formats,
317− .inputs = avfilter_vf_vidstabtransform_inputs,
318− .outputs = avfilter_vf_vidstabtransform_outputs,
315+ FILTER_INPUTS(avfilter_vf_vidstabtransform_inputs),
316+ FILTER_OUTPUTS(avfilter_vf_vidstabtransform_outputs),
319317 .priv_class = &vidstabtransform_class,
320318 };
libavfilter/vf_vif.c+2−4
@@ -627,7 +627,6 @@ static const AVFilterPad vif_inputs[] = { · 626 unmodified lines
627627 .type = AVMEDIA_TYPE_VIDEO,
628628 .config_props = config_input_ref,
629629 },
630− { NULL }
631630 };
632631
633632 static const AVFilterPad vif_outputs[] = {
@@ -636,7 +635,6 @@ static const AVFilterPad vif_outputs[] = { · 2 unmodified lines
636635 .type = AVMEDIA_TYPE_VIDEO,
637636 .config_props = config_output,
638637 },
639− { NULL }
640638 };
641639
642640 const AVFilter ff_vf_vif = {
@@ -647,7 +645,7 @@ const AVFilter ff_vf_vif = { · 4 unmodified lines
647645 .priv_size = sizeof(VIFContext),
648646 .priv_class = &vif_class,
649647 .activate = activate,
650− .inputs = vif_inputs,
651− .outputs = vif_outputs,
648+ FILTER_INPUTS(vif_inputs),
649+ FILTER_OUTPUTS(vif_outputs),
652650 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
653651 };
libavfilter/vf_vignette.c+2−4
@@ -327,7 +327,6 @@ static const AVFilterPad vignette_inputs[] = { · 326 unmodified lines
327327 .filter_frame = filter_frame,
328328 .config_props = config_props,
329329 },
330− { NULL }
331330 };
332331
333332 static const AVFilterPad vignette_outputs[] = {
@@ -335,7 +334,6 @@ static const AVFilterPad vignette_outputs[] = { · 1 unmodified line
335334 .name = "default",
336335 .type = AVMEDIA_TYPE_VIDEO,
337336 },
338− { NULL }
339337 };
340338
341339 const AVFilter ff_vf_vignette = {
@@ -345,8 +343,8 @@ const AVFilter ff_vf_vignette = { · 3 unmodified lines
345343 .init = init,
346344 .uninit = uninit,
347345 .query_formats = query_formats,
348− .inputs = vignette_inputs,
349− .outputs = vignette_outputs,
346+ FILTER_INPUTS(vignette_inputs),
347+ FILTER_OUTPUTS(vignette_outputs),
350348 .priv_class = &vignette_class,
351349 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
352350 };
libavfilter/vf_vmafmotion.c+2−4
@@ -347,7 +347,6 @@ static const AVFilterPad vmafmotion_inputs[] = { · 346 unmodified lines
347347 .filter_frame = filter_frame,
348348 .config_props = config_input_ref,
349349 },
350− { NULL }
351350 };
352351
353352 static const AVFilterPad vmafmotion_outputs[] = {
@@ -355,7 +354,6 @@ static const AVFilterPad vmafmotion_outputs[] = { · 1 unmodified line
355354 .name = "default",
356355 .type = AVMEDIA_TYPE_VIDEO,
357356 },
358− { NULL }
359357 };
360358
361359 const AVFilter ff_vf_vmafmotion = {
@@ -366,6 +364,6 @@ const AVFilter ff_vf_vmafmotion = { · 4 unmodified lines
366364 .query_formats = query_formats,
367365 .priv_size = sizeof(VMAFMotionContext),
368366 .priv_class = &vmafmotion_class,
369− .inputs = vmafmotion_inputs,
370− .outputs = vmafmotion_outputs,
367+ FILTER_INPUTS(vmafmotion_inputs),
368+ FILTER_OUTPUTS(vmafmotion_outputs),
371369 };
libavfilter/vf_vpp_qsv.c+2−4
@@ -600,7 +600,6 @@ static const AVFilterPad vpp_inputs[] = { · 599 unmodified lines
600600 .type = AVMEDIA_TYPE_VIDEO,
601601 .config_props = config_input,
602602 },
603− { NULL }
604603 };
605604
606605 static const AVFilterPad vpp_outputs[] = {
@@ -609,7 +608,6 @@ static const AVFilterPad vpp_outputs[] = { · 2 unmodified lines
609608 .type = AVMEDIA_TYPE_VIDEO,
610609 .config_props = config_output,
611610 },
612− { NULL }
613611 };
614612
615613 const AVFilter ff_vf_vpp_qsv = {
@@ -619,8 +617,8 @@ const AVFilter ff_vf_vpp_qsv = { · 3 unmodified lines
619617 .query_formats = query_formats,
620618 .init = vpp_init,
621619 .uninit = vpp_uninit,
622− .inputs = vpp_inputs,
623− .outputs = vpp_outputs,
620+ FILTER_INPUTS(vpp_inputs),
621+ FILTER_OUTPUTS(vpp_outputs),
624622 .activate = activate,
625623 .priv_class = &vpp_class,
626624 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
libavfilter/vf_w3fdif.c+2−4
@@ -598,7 +598,6 @@ static const AVFilterPad w3fdif_inputs[] = { · 597 unmodified lines
598598 .filter_frame = filter_frame,
599599 .config_props = config_input,
600600 },
601− { NULL }
602601 };
603602
604603 static const AVFilterPad w3fdif_outputs[] = {
@@ -608,7 +607,6 @@ static const AVFilterPad w3fdif_outputs[] = { · 3 unmodified lines
608607 .config_props = config_output,
609608 .request_frame = request_frame,
610609 },
611− { NULL }
612610 };
613611
614612 const AVFilter ff_vf_w3fdif = {
@@ -618,8 +616,8 @@ const AVFilter ff_vf_w3fdif = { · 3 unmodified lines
618616 .priv_class = &w3fdif_class,
619617 .uninit = uninit,
620618 .query_formats = query_formats,
621− .inputs = w3fdif_inputs,
622− .outputs = w3fdif_outputs,
619+ FILTER_INPUTS(w3fdif_inputs),
620+ FILTER_OUTPUTS(w3fdif_outputs),
623621 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
624622 .process_command = ff_filter_process_command,
625623 };
libavfilter/vf_waveform.c+2−4
@@ -3503,7 +3503,6 @@ static const AVFilterPad inputs[] = { · 3502 unmodified lines
35033503 .filter_frame = filter_frame,
35043504 .config_props = config_input,
35053505 },
3506− { NULL }
35073506 };
35083507
35093508 static const AVFilterPad outputs[] = {
@@ -3512,7 +3511,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
35123511 .type = AVMEDIA_TYPE_VIDEO,
35133512 .config_props = config_output,
35143513 },
3515− { NULL }
35163514 };
35173515
35183516 const AVFilter ff_vf_waveform = {
@@ -3522,7 +3520,7 @@ const AVFilter ff_vf_waveform = { · 3 unmodified lines
35223520 .priv_class = &waveform_class,
35233521 .query_formats = query_formats,
35243522 .uninit = uninit,
3525− .inputs = inputs,
3526− .outputs = outputs,
3523+ FILTER_INPUTS(inputs),
3524+ FILTER_OUTPUTS(outputs),
35273525 .flags = AVFILTER_FLAG_SLICE_THREADS,
35283526 };
libavfilter/vf_weave.c+4−6
@@ -178,7 +178,6 @@ static const AVFilterPad weave_inputs[] = { · 177 unmodified lines
178178 .type = AVMEDIA_TYPE_VIDEO,
179179 .filter_frame = filter_frame,
180180 },
181− { NULL }
182181 };
183182
184183 static const AVFilterPad weave_outputs[] = {
@@ -187,7 +186,6 @@ static const AVFilterPad weave_outputs[] = { · 2 unmodified lines
187186 .type = AVMEDIA_TYPE_VIDEO,
188187 .config_props = config_props_output,
189188 },
190− { NULL }
191189 };
192190
193191 const AVFilter ff_vf_weave = {
@@ -197,8 +195,8 @@ const AVFilter ff_vf_weave = { · 3 unmodified lines
197195 .priv_class = &weave_class,
198196 .query_formats = query_formats,
199197 .uninit = uninit,
200− .inputs = weave_inputs,
201− .outputs = weave_outputs,
198+ FILTER_INPUTS(weave_inputs),
199+ FILTER_OUTPUTS(weave_outputs),
202200 .flags = AVFILTER_FLAG_SLICE_THREADS,
203201 };
204202
@@ -223,7 +221,7 @@ const AVFilter ff_vf_doubleweave = { · 18 unmodified lines
223221 .query_formats = query_formats,
224222 .init = init,
225223 .uninit = uninit,
226− .inputs = weave_inputs,
227− .outputs = weave_outputs,
224+ FILTER_INPUTS(weave_inputs),
225+ FILTER_OUTPUTS(weave_outputs),
228226 .flags = AVFILTER_FLAG_SLICE_THREADS,
229227 };
libavfilter/vf_xbr.c+2−4
@@ -410,7 +410,6 @@ static const AVFilterPad xbr_inputs[] = { · 409 unmodified lines
410410 .type = AVMEDIA_TYPE_VIDEO,
411411 .filter_frame = filter_frame,
412412 },
413− { NULL }
414413 };
415414
416415 static const AVFilterPad xbr_outputs[] = {
@@ -419,14 +418,13 @@ static const AVFilterPad xbr_outputs[] = { · 2 unmodified lines
419418 .type = AVMEDIA_TYPE_VIDEO,
420419 .config_props = config_output,
421420 },
422− { NULL }
423421 };
424422
425423 const AVFilter ff_vf_xbr = {
426424 .name = "xbr",
427425 .description = NULL_IF_CONFIG_SMALL("Scale the input using xBR algorithm."),
428− .inputs = xbr_inputs,
429− .outputs = xbr_outputs,
426+ FILTER_INPUTS(xbr_inputs),
427+ FILTER_OUTPUTS(xbr_outputs),
430428 .query_formats = query_formats,
431429 .priv_size = sizeof(XBRContext),
432430 .priv_class = &xbr_class,
libavfilter/vf_xfade.c+2−4
@@ -1942,7 +1942,6 @@ static const AVFilterPad xfade_inputs[] = { · 1941 unmodified lines
19421942 .name = "xfade",
19431943 .type = AVMEDIA_TYPE_VIDEO,
19441944 },
1945− { NULL }
19461945 };
19471946
19481947 static const AVFilterPad xfade_outputs[] = {
@@ -1951,7 +1950,6 @@ static const AVFilterPad xfade_outputs[] = { · 2 unmodified lines
19511950 .type = AVMEDIA_TYPE_VIDEO,
19521951 .config_props = config_output,
19531952 },
1954− { NULL }
19551953 };
19561954
19571955 const AVFilter ff_vf_xfade = {
@@ -1962,7 +1960,7 @@ const AVFilter ff_vf_xfade = { · 4 unmodified lines
19621960 .query_formats = query_formats,
19631961 .activate = xfade_activate,
19641962 .uninit = uninit,
1965− .inputs = xfade_inputs,
1966− .outputs = xfade_outputs,
1963+ FILTER_INPUTS(xfade_inputs),
1964+ FILTER_OUTPUTS(xfade_outputs),
19671965 .flags = AVFILTER_FLAG_SLICE_THREADS,
19681966 };
libavfilter/vf_xfade_opencl.c+2−4
@@ -411,7 +411,6 @@ static const AVFilterPad xfade_opencl_inputs[] = { · 410 unmodified lines
411411 .get_buffer.video = get_video_buffer,
412412 .config_props = &ff_opencl_filter_config_input,
413413 },
414− { NULL }
415414 };
416415
417416 static const AVFilterPad xfade_opencl_outputs[] = {
@@ -420,7 +419,6 @@ static const AVFilterPad xfade_opencl_outputs[] = { · 2 unmodified lines
420419 .type = AVMEDIA_TYPE_VIDEO,
421420 .config_props = &xfade_opencl_config_output,
422421 },
423− { NULL }
424422 };
425423
426424 const AVFilter ff_vf_xfade_opencl = {
@@ -432,7 +430,7 @@ const AVFilter ff_vf_xfade_opencl = { · 5 unmodified lines
432430 .uninit = &xfade_opencl_uninit,
433431 .query_formats = &ff_opencl_filter_query_formats,
434432 .activate = &xfade_opencl_activate,
435− .inputs = xfade_opencl_inputs,
436− .outputs = xfade_opencl_outputs,
433+ FILTER_INPUTS(xfade_opencl_inputs),
434+ FILTER_OUTPUTS(xfade_opencl_outputs),
437435 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
438436 };
libavfilter/vf_xmedian.c+3−6
@@ -383,7 +383,6 @@ static const AVFilterPad outputs[] = { · 382 unmodified lines
383383 .type = AVMEDIA_TYPE_VIDEO,
384384 .config_props = config_output,
385385 },
386− { NULL }
387386 };
388387
389388 #if CONFIG_XMEDIAN_FILTER
@@ -395,7 +394,7 @@ const AVFilter ff_vf_xmedian = { · 5 unmodified lines
395394 .priv_size = sizeof(XMedianContext),
396395 .priv_class = &xmedian_class,
397396 .query_formats = query_formats,
398− .outputs = outputs,
397+ FILTER_OUTPUTS(outputs),
399398 .preinit = xmedian_framesync_preinit,
400399 .init = init,
401400 .uninit = uninit,
@@ -460,7 +459,6 @@ static const AVFilterPad tmedian_inputs[] = { · 58 unmodified lines
460459 .type = AVMEDIA_TYPE_VIDEO,
461460 .filter_frame = tmedian_filter_frame,
462461 },
463− { NULL }
464462 };
465463
466464 static const AVFilterPad tmedian_outputs[] = {
@@ -469,7 +467,6 @@ static const AVFilterPad tmedian_outputs[] = { · 2 unmodified lines
469467 .type = AVMEDIA_TYPE_VIDEO,
470468 .config_props = config_output,
471469 },
472− { NULL }
473470 };
474471
475472 AVFILTER_DEFINE_CLASS(tmedian);
@@ -480,8 +477,8 @@ const AVFilter ff_vf_tmedian = { · 4 unmodified lines
480477 .priv_size = sizeof(XMedianContext),
481478 .priv_class = &tmedian_class,
482479 .query_formats = query_formats,
483− .inputs = tmedian_inputs,
484− .outputs = tmedian_outputs,
480+ FILTER_INPUTS(tmedian_inputs),
481+ FILTER_OUTPUTS(tmedian_outputs),
485482 .init = init,
486483 .uninit = uninit,
487484 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
libavfilter/vf_yadif.c+2−4
@@ -337,7 +337,6 @@ static const AVFilterPad avfilter_vf_yadif_inputs[] = { · 336 unmodified lines
337337 .type = AVMEDIA_TYPE_VIDEO,
338338 .filter_frame = ff_yadif_filter_frame,
339339 },
340− { NULL }
341340 };
342341
343342 static const AVFilterPad avfilter_vf_yadif_outputs[] = {
@@ -347,7 +346,6 @@ static const AVFilterPad avfilter_vf_yadif_outputs[] = { · 3 unmodified lines
347346 .request_frame = ff_yadif_request_frame,
348347 .config_props = config_output,
349348 },
350− { NULL }
351349 };
352350
353351 const AVFilter ff_vf_yadif = {
@@ -357,7 +355,7 @@ const AVFilter ff_vf_yadif = { · 3 unmodified lines
357355 .priv_class = &yadif_class,
358356 .uninit = uninit,
359357 .query_formats = query_formats,
360− .inputs = avfilter_vf_yadif_inputs,
361− .outputs = avfilter_vf_yadif_outputs,
358+ FILTER_INPUTS(avfilter_vf_yadif_inputs),
359+ FILTER_OUTPUTS(avfilter_vf_yadif_outputs),
362360 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
363361 };
libavfilter/vf_yadif_cuda.c+2−4
@@ -363,7 +363,6 @@ static const AVFilterPad deint_cuda_inputs[] = { · 362 unmodified lines
363363 .filter_frame = ff_yadif_filter_frame,
364364 .config_props = config_input,
365365 },
366− { NULL }
367366 };
368367
369368 static const AVFilterPad deint_cuda_outputs[] = {
@@ -373,7 +372,6 @@ static const AVFilterPad deint_cuda_outputs[] = { · 3 unmodified lines
373372 .request_frame = ff_yadif_request_frame,
374373 .config_props = config_output,
375374 },
376− { NULL }
377375 };
378376
379377 const AVFilter ff_vf_yadif_cuda = {
@@ -383,8 +381,8 @@ const AVFilter ff_vf_yadif_cuda = { · 3 unmodified lines
383381 .priv_class = &yadif_cuda_class,
384382 .uninit = deint_cuda_uninit,
385383 .query_formats = deint_cuda_query_formats,
386− .inputs = deint_cuda_inputs,
387− .outputs = deint_cuda_outputs,
384+ FILTER_INPUTS(deint_cuda_inputs),
385+ FILTER_OUTPUTS(deint_cuda_outputs),
388386 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
389387 .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
390388 };
libavfilter/vf_yaepblur.c+2−4
@@ -312,7 +312,6 @@ static const AVFilterPad yaep_inputs[] = { · 311 unmodified lines
312312 .config_props = config_input,
313313 .filter_frame = filter_frame,
314314 },
315− { NULL }
316315 };
317316
318317 static const AVFilterPad yaep_outputs[] = {
@@ -320,7 +319,6 @@ static const AVFilterPad yaep_outputs[] = { · 1 unmodified line
320319 .name = "default",
321320 .type = AVMEDIA_TYPE_VIDEO,
322321 },
323− { NULL }
324322 };
325323
326324 #define OFFSET(x) offsetof(YAEPContext, x)
@@ -345,8 +343,8 @@ const AVFilter ff_vf_yaepblur = { · 18 unmodified lines
345343 .priv_class = &yaepblur_class,
346344 .uninit = uninit,
347345 .query_formats = query_formats,
348− .inputs = yaep_inputs,
349− .outputs = yaep_outputs,
346+ FILTER_INPUTS(yaep_inputs),
347+ FILTER_OUTPUTS(yaep_outputs),
350348 .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
351349 .process_command = ff_filter_process_command,
352350 };
libavfilter/vf_zoompan.c+2−4
@@ -361,7 +361,6 @@ static const AVFilterPad inputs[] = { · 360 unmodified lines
361361 .name = "default",
362362 .type = AVMEDIA_TYPE_VIDEO,
363363 },
364− { NULL }
365364 };
366365
367366 static const AVFilterPad outputs[] = {
@@ -370,7 +369,6 @@ static const AVFilterPad outputs[] = { · 2 unmodified lines
370369 .type = AVMEDIA_TYPE_VIDEO,
371370 .config_props = config_output,
372371 },
373− { NULL }
374372 };
375373
376374 const AVFilter ff_vf_zoompan = {
@@ -382,6 +380,6 @@ const AVFilter ff_vf_zoompan = { · 5 unmodified lines
382380 .uninit = uninit,
383381 .query_formats = query_formats,
384382 .activate = activate,
385− .inputs = inputs,
386− .outputs = outputs,
383+ FILTER_INPUTS(inputs),
384+ FILTER_OUTPUTS(outputs),
387385 };
libavfilter/vf_zscale.c+2−4
@@ -914,7 +914,6 @@ static const AVFilterPad avfilter_vf_zscale_inputs[] = { · 913 unmodified lines
914914 .type = AVMEDIA_TYPE_VIDEO,
915915 .filter_frame = filter_frame,
916916 },
917− { NULL }
918917 };
919918
920919 static const AVFilterPad avfilter_vf_zscale_outputs[] = {
@@ -923,7 +922,6 @@ static const AVFilterPad avfilter_vf_zscale_outputs[] = { · 2 unmodified lines
923922 .type = AVMEDIA_TYPE_VIDEO,
924923 .config_props = config_props,
925924 },
926− { NULL }
927925 };
928926
929927 const AVFilter ff_vf_zscale = {
@@ -934,7 +932,7 @@ const AVFilter ff_vf_zscale = { · 4 unmodified lines
934932 .priv_size = sizeof(ZScaleContext),
935933 .priv_class = &zscale_class,
936934 .uninit = uninit,
937− .inputs = avfilter_vf_zscale_inputs,
938− .outputs = avfilter_vf_zscale_outputs,
935+ FILTER_INPUTS(avfilter_vf_zscale_inputs),
936+ FILTER_OUTPUTS(avfilter_vf_zscale_outputs),
939937 .process_command = process_command,
940938 };
libavfilter/vsink_nullsink.c+1−2
@@ -32,13 +32,12 @@ static const AVFilterPad avfilter_vsink_nullsink_inputs[] = { · 31 unmodified lines
3232 .type = AVMEDIA_TYPE_VIDEO,
3333 .filter_frame = filter_frame,
3434 },
35− { NULL },
3635 };
3736
3837 const AVFilter ff_vsink_nullsink = {
3938 .name = "nullsink",
4039 .description = NULL_IF_CONFIG_SMALL("Do absolutely nothing with the input video."),
4140 .priv_size = 0,
42− .inputs = avfilter_vsink_nullsink_inputs,
41+ FILTER_INPUTS(avfilter_vsink_nullsink_inputs),
4342 .outputs = NULL,
4443 };
libavfilter/vsrc_cellauto.c+1−2
@@ -321,7 +321,6 @@ static const AVFilterPad cellauto_outputs[] = { · 320 unmodified lines
321321 .request_frame = request_frame,
322322 .config_props = config_props,
323323 },
324− { NULL }
325324 };
326325
327326 const AVFilter ff_vsrc_cellauto = {
@@ -333,5 +332,5 @@ const AVFilter ff_vsrc_cellauto = { · 5 unmodified lines
333332 .uninit = uninit,
334333 .query_formats = query_formats,
335334 .inputs = NULL,
336− .outputs = cellauto_outputs,
335+ FILTER_OUTPUTS(cellauto_outputs),
337336 };
libavfilter/vsrc_gradients.c+1−2
@@ -292,7 +292,6 @@ static const AVFilterPad gradients_outputs[] = { · 291 unmodified lines
292292 .type = AVMEDIA_TYPE_VIDEO,
293293 .config_props = config_output,
294294 },
295− { NULL }
296295 };
297296
298297 const AVFilter ff_vsrc_gradients = {
@@ -302,7 +301,7 @@ const AVFilter ff_vsrc_gradients = { · 3 unmodified lines
302301 .priv_class = &gradients_class,
303302 .query_formats = query_formats,
304303 .inputs = NULL,
305− .outputs = gradients_outputs,
304+ FILTER_OUTPUTS(gradients_outputs),
306305 .activate = activate,
307306 .flags = AVFILTER_FLAG_SLICE_THREADS,
308307 };
libavfilter/vsrc_life.c+1−2
@@ -436,7 +436,6 @@ static const AVFilterPad life_outputs[] = { · 435 unmodified lines
436436 .request_frame = request_frame,
437437 .config_props = config_props,
438438 },
439− { NULL}
440439 };
441440
442441 const AVFilter ff_vsrc_life = {
@@ -448,5 +447,5 @@ const AVFilter ff_vsrc_life = { · 5 unmodified lines
448447 .uninit = uninit,
449448 .query_formats = query_formats,
450449 .inputs = NULL,
451− .outputs = life_outputs,
450+ FILTER_OUTPUTS(life_outputs),
452451 };
libavfilter/vsrc_mandelbrot.c+1−2
@@ -413,7 +413,6 @@ static const AVFilterPad mandelbrot_outputs[] = { · 412 unmodified lines
413413 .request_frame = request_frame,
414414 .config_props = config_props,
415415 },
416− { NULL }
417416 };
418417
419418 const AVFilter ff_vsrc_mandelbrot = {
@@ -425,5 +424,5 @@ const AVFilter ff_vsrc_mandelbrot = { · 5 unmodified lines
425424 .uninit = uninit,
426425 .query_formats = query_formats,
427426 .inputs = NULL,
428− .outputs = mandelbrot_outputs,
427+ FILTER_OUTPUTS(mandelbrot_outputs),
429428 };
libavfilter/vsrc_mptestsrc.c+1−2
@@ -351,7 +351,6 @@ static const AVFilterPad mptestsrc_outputs[] = { · 350 unmodified lines
351351 .request_frame = request_frame,
352352 .config_props = config_props,
353353 },
354− { NULL }
355354 };
356355
357356 const AVFilter ff_vsrc_mptestsrc = {
@@ -362,5 +361,5 @@ const AVFilter ff_vsrc_mptestsrc = { · 4 unmodified lines
362361 .init = init,
363362 .query_formats = query_formats,
364363 .inputs = NULL,
365− .outputs = mptestsrc_outputs,
364+ FILTER_OUTPUTS(mptestsrc_outputs),
366365 };
libavfilter/vsrc_sierpinski.c+1−2
@@ -218,7 +218,6 @@ static const AVFilterPad sierpinski_outputs[] = { · 217 unmodified lines
218218 .request_frame = sierpinski_request_frame,
219219 .config_props = config_output,
220220 },
221− { NULL }
222221 };
223222
224223 const AVFilter ff_vsrc_sierpinski = {
@@ -228,6 +227,6 @@ const AVFilter ff_vsrc_sierpinski = { · 3 unmodified lines
228227 .priv_class = &sierpinski_class,
229228 .query_formats = query_formats,
230229 .inputs = NULL,
231− .outputs = sierpinski_outputs,
230+ FILTER_OUTPUTS(sierpinski_outputs),
232231 .flags = AVFILTER_FLAG_SLICE_THREADS,
233232 };
libavfilter/vsrc_testsrc.c+13−23
@@ -263,7 +263,6 @@ static const AVFilterPad color_outputs[] = { · 262 unmodified lines
263263 .type = AVMEDIA_TYPE_VIDEO,
264264 .config_props = color_config_props,
265265 },
266− { NULL }
267266 };
268267
269268 const AVFilter ff_vsrc_color = {
@@ -276,7 +275,7 @@ const AVFilter ff_vsrc_color = { · 6 unmodified lines
276275 .activate = activate,
277276 .query_formats = color_query_formats,
278277 .inputs = NULL,
279− .outputs = color_outputs,
278+ FILTER_OUTPUTS(color_outputs),
280279 .process_command = color_process_command,
281280 };
282281
@@ -394,7 +393,6 @@ static const AVFilterPad haldclutsrc_outputs[] = { · 111 unmodified lines
394393 .type = AVMEDIA_TYPE_VIDEO,
395394 .config_props = haldclutsrc_config_props,
396395 },
397− { NULL }
398396 };
399397
400398 const AVFilter ff_vsrc_haldclutsrc = {
@@ -407,7 +405,7 @@ const AVFilter ff_vsrc_haldclutsrc = { · 6 unmodified lines
407405 .query_formats = haldclutsrc_query_formats,
408406 .activate = activate,
409407 .inputs = NULL,
410− .outputs = haldclutsrc_outputs,
408+ FILTER_OUTPUTS(haldclutsrc_outputs),
411409 };
412410 #endif /* CONFIG_HALDCLUTSRC_FILTER */
413411
@@ -432,7 +430,6 @@ static const AVFilterPad nullsrc_outputs[] = { · 18 unmodified lines
432430 .type = AVMEDIA_TYPE_VIDEO,
433431 .config_props = config_props,
434432 },
435− { NULL },
436433 };
437434
438435 const AVFilter ff_vsrc_nullsrc = {
@@ -444,7 +441,7 @@ const AVFilter ff_vsrc_nullsrc = { · 5 unmodified lines
444441 .priv_size = sizeof(TestSourceContext),
445442 .priv_class = &nullsrc_class,
446443 .inputs = NULL,
447− .outputs = nullsrc_outputs,
444+ FILTER_OUTPUTS(nullsrc_outputs),
448445 };
449446
450447 #endif /* CONFIG_NULLSRC_FILTER */
@@ -665,7 +662,6 @@ static const AVFilterPad avfilter_vsrc_testsrc_outputs[] = { · 214 unmodified lines
665662 .type = AVMEDIA_TYPE_VIDEO,
666663 .config_props = config_props,
667664 },
668− { NULL }
669665 };
670666
671667 const AVFilter ff_vsrc_testsrc = {
@@ -678,7 +674,7 @@ const AVFilter ff_vsrc_testsrc = { · 6 unmodified lines
678674 .query_formats = test_query_formats,
679675 .activate = activate,
680676 .inputs = NULL,
681− .outputs = avfilter_vsrc_testsrc_outputs,
677+ FILTER_OUTPUTS(avfilter_vsrc_testsrc_outputs),
682678 };
683679
684680 #endif /* CONFIG_TESTSRC_FILTER */
@@ -938,7 +934,6 @@ static const AVFilterPad avfilter_vsrc_testsrc2_outputs[] = { · 253 unmodified lines
938934 .type = AVMEDIA_TYPE_VIDEO,
939935 .config_props = test2_config_props,
940936 },
941− { NULL }
942937 };
943938
944939 const AVFilter ff_vsrc_testsrc2 = {
@@ -951,7 +946,7 @@ const AVFilter ff_vsrc_testsrc2 = { · 6 unmodified lines
951946 .query_formats = test2_query_formats,
952947 .activate = activate,
953948 .inputs = NULL,
954− .outputs = avfilter_vsrc_testsrc2_outputs,
949+ FILTER_OUTPUTS(avfilter_vsrc_testsrc2_outputs),
955950 };
956951
957952 #endif /* CONFIG_TESTSRC2_FILTER */
@@ -1110,7 +1105,6 @@ static const AVFilterPad avfilter_vsrc_rgbtestsrc_outputs[] = { · 152 unmodified lines
11101105 .type = AVMEDIA_TYPE_VIDEO,
11111106 .config_props = rgbtest_config_props,
11121107 },
1113− { NULL }
11141108 };
11151109
11161110 const AVFilter ff_vsrc_rgbtestsrc = {
@@ -1123,7 +1117,7 @@ const AVFilter ff_vsrc_rgbtestsrc = { · 6 unmodified lines
11231117 .query_formats = rgbtest_query_formats,
11241118 .activate = activate,
11251119 .inputs = NULL,
1126− .outputs = avfilter_vsrc_rgbtestsrc_outputs,
1120+ FILTER_OUTPUTS(avfilter_vsrc_rgbtestsrc_outputs),
11271121 };
11281122
11291123 #endif /* CONFIG_RGBTESTSRC_FILTER */
@@ -1283,7 +1277,6 @@ static const AVFilterPad avfilter_vsrc_yuvtestsrc_outputs[] = { · 153 unmodified lines
12831277 .type = AVMEDIA_TYPE_VIDEO,
12841278 .config_props = yuvtest_config_props,
12851279 },
1286− { NULL }
12871280 };
12881281
12891282 const AVFilter ff_vsrc_yuvtestsrc = {
@@ -1296,7 +1289,7 @@ const AVFilter ff_vsrc_yuvtestsrc = { · 6 unmodified lines
12961289 .query_formats = yuvtest_query_formats,
12971290 .activate = activate,
12981291 .inputs = NULL,
1299− .outputs = avfilter_vsrc_yuvtestsrc_outputs,
1292+ FILTER_OUTPUTS(avfilter_vsrc_yuvtestsrc_outputs),
13001293 };
13011294
13021295 #endif /* CONFIG_YUVTESTSRC_FILTER */
@@ -1423,7 +1416,6 @@ static const AVFilterPad smptebars_outputs[] = { · 120 unmodified lines
14231416 .type = AVMEDIA_TYPE_VIDEO,
14241417 .config_props = config_props,
14251418 },
1426− { NULL }
14271419 };
14281420
14291421 #if CONFIG_PAL75BARS_FILTER
@@ -1470,7 +1462,7 @@ const AVFilter ff_vsrc_pal75bars = { · 40 unmodified lines
14701462 .query_formats = smptebars_query_formats,
14711463 .activate = activate,
14721464 .inputs = NULL,
1473− .outputs = smptebars_outputs,
1465+ FILTER_OUTPUTS(smptebars_outputs),
14741466 };
14751467
14761468 #endif /* CONFIG_PAL75BARS_FILTER */
@@ -1517,7 +1509,7 @@ const AVFilter ff_vsrc_pal100bars = { · 40 unmodified lines
15171509 .query_formats = smptebars_query_formats,
15181510 .activate = activate,
15191511 .inputs = NULL,
1520− .outputs = smptebars_outputs,
1512+ FILTER_OUTPUTS(smptebars_outputs),
15211513 };
15221514
15231515 #endif /* CONFIG_PAL100BARS_FILTER */
@@ -1585,7 +1577,7 @@ const AVFilter ff_vsrc_smptebars = { · 61 unmodified lines
15851577 .query_formats = smptebars_query_formats,
15861578 .activate = activate,
15871579 .inputs = NULL,
1588− .outputs = smptebars_outputs,
1580+ FILTER_OUTPUTS(smptebars_outputs),
15891581 };
15901582
15911583 #endif /* CONFIG_SMPTEBARS_FILTER */
@@ -1691,7 +1683,7 @@ const AVFilter ff_vsrc_smptehdbars = { · 99 unmodified lines
16911683 .query_formats = smptebars_query_formats,
16921684 .activate = activate,
16931685 .inputs = NULL,
1694− .outputs = smptebars_outputs,
1686+ FILTER_OUTPUTS(smptebars_outputs),
16951687 };
16961688
16971689 #endif /* CONFIG_SMPTEHDBARS_FILTER */
@@ -1753,7 +1745,6 @@ static const AVFilterPad avfilter_vsrc_allyuv_outputs[] = { · 55 unmodified lines
17531745 .type = AVMEDIA_TYPE_VIDEO,
17541746 .config_props = config_props,
17551747 },
1756− { NULL }
17571748 };
17581749
17591750 const AVFilter ff_vsrc_allyuv = {
@@ -1766,7 +1757,7 @@ const AVFilter ff_vsrc_allyuv = { · 6 unmodified lines
17661757 .query_formats = allyuv_query_formats,
17671758 .activate = activate,
17681759 .inputs = NULL,
1769− .outputs = avfilter_vsrc_allyuv_outputs,
1760+ FILTER_OUTPUTS(avfilter_vsrc_allyuv_outputs),
17701761 };
17711762
17721763 #endif /* CONFIG_ALLYUV_FILTER */
@@ -1827,7 +1818,6 @@ static const AVFilterPad avfilter_vsrc_allrgb_outputs[] = { · 54 unmodified lines
18271818 .type = AVMEDIA_TYPE_VIDEO,
18281819 .config_props = allrgb_config_props,
18291820 },
1830− { NULL }
18311821 };
18321822
18331823 const AVFilter ff_vsrc_allrgb = {
@@ -1840,7 +1830,7 @@ const AVFilter ff_vsrc_allrgb = { · 6 unmodified lines
18401830 .query_formats = allrgb_query_formats,
18411831 .activate = activate,
18421832 .inputs = NULL,
1843− .outputs = avfilter_vsrc_allrgb_outputs,
1833+ FILTER_OUTPUTS(avfilter_vsrc_allrgb_outputs),
18441834 };
18451835
18461836 #endif /* CONFIG_ALLRGB_FILTER */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t