Browse Source

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.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Andreas Rheinhardt 4 years ago
parent
commit
8be701d9f7
100 changed files with 202 additions and 392 deletions
  1. 3 6
      libavfilter/aeval.c
  2. 2 4
      libavfilter/af_acontrast.c
  3. 2 4
      libavfilter/af_acopy.c
  4. 1 2
      libavfilter/af_acrossover.c
  5. 2 4
      libavfilter/af_acrusher.c
  6. 4 6
      libavfilter/af_adeclick.c
  7. 2 4
      libavfilter/af_adelay.c
  8. 2 4
      libavfilter/af_adenorm.c
  9. 4 6
      libavfilter/af_aderivative.c
  10. 2 4
      libavfilter/af_aecho.c
  11. 2 4
      libavfilter/af_aemphasis.c
  12. 2 4
      libavfilter/af_aexciter.c
  13. 4 8
      libavfilter/af_afade.c
  14. 2 4
      libavfilter/af_afftdn.c
  15. 2 4
      libavfilter/af_afftfilt.c
  16. 2 4
      libavfilter/af_aformat.c
  17. 4 6
      libavfilter/af_afreqshift.c
  18. 2 4
      libavfilter/af_afwtdn.c
  19. 4 8
      libavfilter/af_agate.c
  20. 1 2
      libavfilter/af_aiir.c
  21. 2 4
      libavfilter/af_alimiter.c
  22. 1 2
      libavfilter/af_amerge.c
  23. 1 2
      libavfilter/af_amix.c
  24. 2 4
      libavfilter/af_amultiply.c
  25. 1 2
      libavfilter/af_anequalizer.c
  26. 2 4
      libavfilter/af_anlmdn.c
  27. 2 4
      libavfilter/af_anlms.c
  28. 2 4
      libavfilter/af_anull.c
  29. 2 4
      libavfilter/af_apad.c
  30. 2 4
      libavfilter/af_aphaser.c
  31. 2 4
      libavfilter/af_apulsator.c
  32. 2 4
      libavfilter/af_aresample.c
  33. 2 4
      libavfilter/af_arnndn.c
  34. 2 4
      libavfilter/af_asetnsamples.c
  35. 2 4
      libavfilter/af_asetrate.c
  36. 2 4
      libavfilter/af_ashowinfo.c
  37. 2 4
      libavfilter/af_asoftclip.c
  38. 2 4
      libavfilter/af_asr.c
  39. 2 4
      libavfilter/af_astats.c
  40. 2 4
      libavfilter/af_asubboost.c
  41. 8 10
      libavfilter/af_asupercut.c
  42. 2 4
      libavfilter/af_atempo.c
  43. 2 4
      libavfilter/af_axcorrelate.c
  44. 2 4
      libavfilter/af_biquads.c
  45. 2 4
      libavfilter/af_bs2b.c
  46. 2 4
      libavfilter/af_channelmap.c
  47. 1 2
      libavfilter/af_channelsplit.c
  48. 2 4
      libavfilter/af_chorus.c
  49. 2 4
      libavfilter/af_compand.c
  50. 2 4
      libavfilter/af_compensationdelay.c
  51. 2 4
      libavfilter/af_crossfeed.c
  52. 2 4
      libavfilter/af_crystalizer.c
  53. 2 4
      libavfilter/af_dcshift.c
  54. 2 4
      libavfilter/af_deesser.c
  55. 2 4
      libavfilter/af_drmeter.c
  56. 2 4
      libavfilter/af_dynaudnorm.c
  57. 2 4
      libavfilter/af_earwax.c
  58. 2 4
      libavfilter/af_extrastereo.c
  59. 2 4
      libavfilter/af_firequalizer.c
  60. 2 4
      libavfilter/af_flanger.c
  61. 2 4
      libavfilter/af_haas.c
  62. 2 4
      libavfilter/af_hdcd.c
  63. 1 2
      libavfilter/af_headphone.c
  64. 1 2
      libavfilter/af_join.c
  65. 1 2
      libavfilter/af_ladspa.c
  66. 2 4
      libavfilter/af_loudnorm.c
  67. 1 2
      libavfilter/af_lv2.c
  68. 2 4
      libavfilter/af_mcompand.c
  69. 2 4
      libavfilter/af_pan.c
  70. 2 4
      libavfilter/af_replaygain.c
  71. 2 4
      libavfilter/af_rubberband.c
  72. 4 8
      libavfilter/af_sidechaincompress.c
  73. 2 4
      libavfilter/af_silencedetect.c
  74. 2 4
      libavfilter/af_silenceremove.c
  75. 2 4
      libavfilter/af_sofalizer.c
  76. 2 4
      libavfilter/af_speechnorm.c
  77. 2 4
      libavfilter/af_stereotools.c
  78. 2 4
      libavfilter/af_stereowiden.c
  79. 2 4
      libavfilter/af_superequalizer.c
  80. 2 4
      libavfilter/af_surround.c
  81. 2 4
      libavfilter/af_tremolo.c
  82. 2 4
      libavfilter/af_vibrato.c
  83. 2 4
      libavfilter/af_volume.c
  84. 2 4
      libavfilter/af_volumedetect.c
  85. 1 2
      libavfilter/asink_anullsink.c
  86. 1 2
      libavfilter/asrc_afirsrc.c
  87. 1 2
      libavfilter/asrc_anoisesrc.c
  88. 1 2
      libavfilter/asrc_anullsrc.c
  89. 1 2
      libavfilter/asrc_flite.c
  90. 1 2
      libavfilter/asrc_hilbert.c
  91. 1 2
      libavfilter/asrc_sinc.c
  92. 1 2
      libavfilter/asrc_sine.c
  93. 2 4
      libavfilter/avf_abitscope.c
  94. 2 4
      libavfilter/avf_ahistogram.c
  95. 1 2
      libavfilter/avf_aphasemeter.c
  96. 2 4
      libavfilter/avf_avectorscope.c
  97. 2 4
      libavfilter/avf_showcqt.c
  98. 2 4
      libavfilter/avf_showfreqs.c
  99. 2 4
      libavfilter/avf_showspatial.c
  100. 4 8
      libavfilter/avf_showspectrum.c

+ 3 - 6
libavfilter/aeval.c

@@ -307,7 +307,6 @@ static const AVFilterPad aevalsrc_outputs[] = {
         .config_props  = config_props,
         .config_props  = config_props,
         .request_frame = request_frame,
         .request_frame = request_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_asrc_aevalsrc = {
 const AVFilter ff_asrc_aevalsrc = {
@@ -318,7 +317,7 @@ const AVFilter ff_asrc_aevalsrc = {
     .uninit        = uninit,
     .uninit        = uninit,
     .priv_size     = sizeof(EvalContext),
     .priv_size     = sizeof(EvalContext),
     .inputs        = NULL,
     .inputs        = NULL,
-    .outputs       = aevalsrc_outputs,
+    FILTER_OUTPUTS(aevalsrc_outputs),
     .priv_class    = &aevalsrc_class,
     .priv_class    = &aevalsrc_class,
 };
 };
 
 
@@ -445,7 +444,6 @@ static const AVFilterPad aeval_inputs[] = {
         .type           = AVMEDIA_TYPE_AUDIO,
         .type           = AVMEDIA_TYPE_AUDIO,
         .filter_frame   = filter_frame,
         .filter_frame   = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad aeval_outputs[] = {
 static const AVFilterPad aeval_outputs[] = {
@@ -454,7 +452,6 @@ static const AVFilterPad aeval_outputs[] = {
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
         .config_props  = aeval_config_output,
         .config_props  = aeval_config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_aeval = {
 const AVFilter ff_af_aeval = {
@@ -464,8 +461,8 @@ const AVFilter ff_af_aeval = {
     .init          = init,
     .init          = init,
     .uninit        = uninit,
     .uninit        = uninit,
     .priv_size     = sizeof(EvalContext),
     .priv_size     = sizeof(EvalContext),
-    .inputs        = aeval_inputs,
-    .outputs       = aeval_outputs,
+    FILTER_INPUTS(aeval_inputs),
+    FILTER_OUTPUTS(aeval_outputs),
     .priv_class    = &aeval_class,
     .priv_class    = &aeval_class,
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
 };
 };

+ 2 - 4
libavfilter/af_acontrast.c

@@ -187,7 +187,6 @@ static const AVFilterPad inputs[] = {
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -195,7 +194,6 @@ static const AVFilterPad outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_acontrast = {
 const AVFilter ff_af_acontrast = {
@@ -204,6 +202,6 @@ const AVFilter ff_af_acontrast = {
     .query_formats  = query_formats,
     .query_formats  = query_formats,
     .priv_size      = sizeof(AudioContrastContext),
     .priv_size      = sizeof(AudioContrastContext),
     .priv_class     = &acontrast_class,
     .priv_class     = &acontrast_class,
-    .inputs         = inputs,
-    .outputs        = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
 };
 };

+ 2 - 4
libavfilter/af_acopy.c

@@ -51,7 +51,6 @@ static const AVFilterPad acopy_inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad acopy_outputs[] = {
 static const AVFilterPad acopy_outputs[] = {
@@ -59,12 +58,11 @@ static const AVFilterPad acopy_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_acopy = {
 const AVFilter ff_af_acopy = {
     .name          = "acopy",
     .name          = "acopy",
     .description   = NULL_IF_CONFIG_SMALL("Copy the input audio unchanged to the output."),
     .description   = NULL_IF_CONFIG_SMALL("Copy the input audio unchanged to the output."),
-    .inputs        = acopy_inputs,
-    .outputs       = acopy_outputs,
+    FILTER_INPUTS(acopy_inputs),
+    FILTER_OUTPUTS(acopy_outputs),
 };
 };

+ 1 - 2
libavfilter/af_acrossover.c

@@ -555,7 +555,6 @@ static const AVFilterPad inputs[] = {
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_acrossover = {
 const AVFilter ff_af_acrossover = {
@@ -566,7 +565,7 @@ const AVFilter ff_af_acrossover = {
     .init           = init,
     .init           = init,
     .uninit         = uninit,
     .uninit         = uninit,
     .query_formats  = query_formats,
     .query_formats  = query_formats,
-    .inputs         = inputs,
+    FILTER_INPUTS(inputs),
     .outputs        = NULL,
     .outputs        = NULL,
     .flags          = AVFILTER_FLAG_DYNAMIC_OUTPUTS |
     .flags          = AVFILTER_FLAG_DYNAMIC_OUTPUTS |
                       AVFILTER_FLAG_SLICE_THREADS,
                       AVFILTER_FLAG_SLICE_THREADS,

+ 2 - 4
libavfilter/af_acrusher.c

@@ -342,7 +342,6 @@ static const AVFilterPad avfilter_af_acrusher_inputs[] = {
         .config_props = config_input,
         .config_props = config_input,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad avfilter_af_acrusher_outputs[] = {
 static const AVFilterPad avfilter_af_acrusher_outputs[] = {
@@ -350,7 +349,6 @@ static const AVFilterPad avfilter_af_acrusher_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_acrusher = {
 const AVFilter ff_af_acrusher = {
@@ -360,7 +358,7 @@ const AVFilter ff_af_acrusher = {
     .priv_class    = &acrusher_class,
     .priv_class    = &acrusher_class,
     .uninit        = uninit,
     .uninit        = uninit,
     .query_formats = query_formats,
     .query_formats = query_formats,
-    .inputs        = avfilter_af_acrusher_inputs,
-    .outputs       = avfilter_af_acrusher_outputs,
+    FILTER_INPUTS(avfilter_af_acrusher_inputs),
+    FILTER_OUTPUTS(avfilter_af_acrusher_outputs),
     .process_command = process_command,
     .process_command = process_command,
 };
 };

+ 4 - 6
libavfilter/af_adeclick.c

@@ -741,7 +741,6 @@ static const AVFilterPad inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -749,7 +748,6 @@ static const AVFilterPad outputs[] = {
         .name          = "default",
         .name          = "default",
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_adeclick = {
 const AVFilter ff_af_adeclick = {
@@ -761,8 +759,8 @@ const AVFilter ff_af_adeclick = {
     .init          = init,
     .init          = init,
     .activate      = activate,
     .activate      = activate,
     .uninit        = uninit,
     .uninit        = uninit,
-    .inputs        = inputs,
-    .outputs       = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .flags         = AVFILTER_FLAG_SLICE_THREADS | AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
     .flags         = AVFILTER_FLAG_SLICE_THREADS | AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
 };
 };
 
 
@@ -797,7 +795,7 @@ const AVFilter ff_af_adeclip = {
     .init          = init,
     .init          = init,
     .activate      = activate,
     .activate      = activate,
     .uninit        = uninit,
     .uninit        = uninit,
-    .inputs        = inputs,
-    .outputs       = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .flags         = AVFILTER_FLAG_SLICE_THREADS | AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
     .flags         = AVFILTER_FLAG_SLICE_THREADS | AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
 };
 };

+ 2 - 4
libavfilter/af_adelay.c

@@ -326,7 +326,6 @@ static const AVFilterPad adelay_inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad adelay_outputs[] = {
 static const AVFilterPad adelay_outputs[] = {
@@ -334,7 +333,6 @@ static const AVFilterPad adelay_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_adelay = {
 const AVFilter ff_af_adelay = {
@@ -345,7 +343,7 @@ const AVFilter ff_af_adelay = {
     .priv_class    = &adelay_class,
     .priv_class    = &adelay_class,
     .activate      = activate,
     .activate      = activate,
     .uninit        = uninit,
     .uninit        = uninit,
-    .inputs        = adelay_inputs,
-    .outputs       = adelay_outputs,
+    FILTER_INPUTS(adelay_inputs),
+    FILTER_OUTPUTS(adelay_outputs),
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
 };
 };

+ 2 - 4
libavfilter/af_adenorm.c

@@ -279,7 +279,6 @@ static const AVFilterPad adenorm_inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad adenorm_outputs[] = {
 static const AVFilterPad adenorm_outputs[] = {
@@ -288,7 +287,6 @@ static const AVFilterPad adenorm_outputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_output,
         .config_props = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 #define OFFSET(x) offsetof(ADenormContext, x)
 #define OFFSET(x) offsetof(ADenormContext, x)
@@ -311,8 +309,8 @@ const AVFilter ff_af_adenorm = {
     .description     = NULL_IF_CONFIG_SMALL("Remedy denormals by adding extremely low-level noise."),
     .description     = NULL_IF_CONFIG_SMALL("Remedy denormals by adding extremely low-level noise."),
     .query_formats   = query_formats,
     .query_formats   = query_formats,
     .priv_size       = sizeof(ADenormContext),
     .priv_size       = sizeof(ADenormContext),
-    .inputs          = adenorm_inputs,
-    .outputs         = adenorm_outputs,
+    FILTER_INPUTS(adenorm_inputs),
+    FILTER_OUTPUTS(adenorm_outputs),
     .priv_class      = &adenorm_class,
     .priv_class      = &adenorm_class,
     .process_command = process_command,
     .process_command = process_command,
     .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
     .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |

+ 4 - 6
libavfilter/af_aderivative.c

@@ -163,7 +163,6 @@ static const AVFilterPad aderivative_inputs[] = {
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad aderivative_outputs[] = {
 static const AVFilterPad aderivative_outputs[] = {
@@ -171,7 +170,6 @@ static const AVFilterPad aderivative_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_aderivative = {
 const AVFilter ff_af_aderivative = {
@@ -180,8 +178,8 @@ const AVFilter ff_af_aderivative = {
     .query_formats = query_formats,
     .query_formats = query_formats,
     .priv_size     = sizeof(ADerivativeContext),
     .priv_size     = sizeof(ADerivativeContext),
     .uninit        = uninit,
     .uninit        = uninit,
-    .inputs        = aderivative_inputs,
-    .outputs       = aderivative_outputs,
+    FILTER_INPUTS(aderivative_inputs),
+    FILTER_OUTPUTS(aderivative_outputs),
 };
 };
 
 
 const AVFilter ff_af_aintegral = {
 const AVFilter ff_af_aintegral = {
@@ -190,6 +188,6 @@ const AVFilter ff_af_aintegral = {
     .query_formats = query_formats,
     .query_formats = query_formats,
     .priv_size     = sizeof(ADerivativeContext),
     .priv_size     = sizeof(ADerivativeContext),
     .uninit        = uninit,
     .uninit        = uninit,
-    .inputs        = aderivative_inputs,
-    .outputs       = aderivative_outputs,
+    FILTER_INPUTS(aderivative_inputs),
+    FILTER_OUTPUTS(aderivative_outputs),
 };
 };

+ 2 - 4
libavfilter/af_aecho.c

@@ -351,7 +351,6 @@ static const AVFilterPad aecho_inputs[] = {
         .name         = "default",
         .name         = "default",
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad aecho_outputs[] = {
 static const AVFilterPad aecho_outputs[] = {
@@ -360,7 +359,6 @@ static const AVFilterPad aecho_outputs[] = {
         .config_props  = config_output,
         .config_props  = config_output,
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_aecho = {
 const AVFilter ff_af_aecho = {
@@ -372,6 +370,6 @@ const AVFilter ff_af_aecho = {
     .init          = init,
     .init          = init,
     .activate      = activate,
     .activate      = activate,
     .uninit        = uninit,
     .uninit        = uninit,
-    .inputs        = aecho_inputs,
-    .outputs       = aecho_outputs,
+    FILTER_INPUTS(aecho_inputs),
+    FILTER_OUTPUTS(aecho_outputs),
 };
 };

+ 2 - 4
libavfilter/af_aemphasis.c

@@ -376,7 +376,6 @@ static const AVFilterPad avfilter_af_aemphasis_inputs[] = {
         .config_props = config_input,
         .config_props = config_input,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad avfilter_af_aemphasis_outputs[] = {
 static const AVFilterPad avfilter_af_aemphasis_outputs[] = {
@@ -384,7 +383,6 @@ static const AVFilterPad avfilter_af_aemphasis_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_aemphasis = {
 const AVFilter ff_af_aemphasis = {
@@ -394,8 +392,8 @@ const AVFilter ff_af_aemphasis = {
     .priv_class    = &aemphasis_class,
     .priv_class    = &aemphasis_class,
     .uninit        = uninit,
     .uninit        = uninit,
     .query_formats = query_formats,
     .query_formats = query_formats,
-    .inputs        = avfilter_af_aemphasis_inputs,
-    .outputs       = avfilter_af_aemphasis_outputs,
+    FILTER_INPUTS(avfilter_af_aemphasis_inputs),
+    FILTER_OUTPUTS(avfilter_af_aemphasis_outputs),
     .process_command = process_command,
     .process_command = process_command,
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
                      AVFILTER_FLAG_SLICE_THREADS,
                      AVFILTER_FLAG_SLICE_THREADS,

+ 2 - 4
libavfilter/af_aexciter.c

@@ -279,7 +279,6 @@ static const AVFilterPad avfilter_af_aexciter_inputs[] = {
         .config_props = config_input,
         .config_props = config_input,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad avfilter_af_aexciter_outputs[] = {
 static const AVFilterPad avfilter_af_aexciter_outputs[] = {
@@ -287,7 +286,6 @@ static const AVFilterPad avfilter_af_aexciter_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_aexciter = {
 const AVFilter ff_af_aexciter = {
@@ -297,8 +295,8 @@ const AVFilter ff_af_aexciter = {
     .priv_class    = &aexciter_class,
     .priv_class    = &aexciter_class,
     .uninit        = uninit,
     .uninit        = uninit,
     .query_formats = query_formats,
     .query_formats = query_formats,
-    .inputs        = avfilter_af_aexciter_inputs,
-    .outputs       = avfilter_af_aexciter_outputs,
+    FILTER_INPUTS(avfilter_af_aexciter_inputs),
+    FILTER_OUTPUTS(avfilter_af_aexciter_outputs),
     .process_command = process_command,
     .process_command = process_command,
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
 };
 };

+ 4 - 8
libavfilter/af_afade.c

@@ -340,7 +340,6 @@ static const AVFilterPad avfilter_af_afade_inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad avfilter_af_afade_outputs[] = {
 static const AVFilterPad avfilter_af_afade_outputs[] = {
@@ -349,7 +348,6 @@ static const AVFilterPad avfilter_af_afade_outputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_output,
         .config_props = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_afade = {
 const AVFilter ff_af_afade = {
@@ -358,8 +356,8 @@ const AVFilter ff_af_afade = {
     .query_formats = query_formats,
     .query_formats = query_formats,
     .priv_size     = sizeof(AudioFadeContext),
     .priv_size     = sizeof(AudioFadeContext),
     .init          = init,
     .init          = init,
-    .inputs        = avfilter_af_afade_inputs,
-    .outputs       = avfilter_af_afade_outputs,
+    FILTER_INPUTS(avfilter_af_afade_inputs),
+    FILTER_OUTPUTS(avfilter_af_afade_outputs),
     .priv_class    = &afade_class,
     .priv_class    = &afade_class,
     .process_command = process_command,
     .process_command = process_command,
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
@@ -628,7 +626,6 @@ static const AVFilterPad avfilter_af_acrossfade_inputs[] = {
         .name         = "crossfade1",
         .name         = "crossfade1",
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad avfilter_af_acrossfade_outputs[] = {
 static const AVFilterPad avfilter_af_acrossfade_outputs[] = {
@@ -637,7 +634,6 @@ static const AVFilterPad avfilter_af_acrossfade_outputs[] = {
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
         .config_props  = acrossfade_config_output,
         .config_props  = acrossfade_config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_acrossfade = {
 const AVFilter ff_af_acrossfade = {
@@ -647,8 +643,8 @@ const AVFilter ff_af_acrossfade = {
     .priv_size     = sizeof(AudioFadeContext),
     .priv_size     = sizeof(AudioFadeContext),
     .activate      = activate,
     .activate      = activate,
     .priv_class    = &acrossfade_class,
     .priv_class    = &acrossfade_class,
-    .inputs        = avfilter_af_acrossfade_inputs,
-    .outputs       = avfilter_af_acrossfade_outputs,
+    FILTER_INPUTS(avfilter_af_acrossfade_inputs),
+    FILTER_OUTPUTS(avfilter_af_acrossfade_outputs),
 };
 };
 
 
 #endif /* CONFIG_ACROSSFADE_FILTER */
 #endif /* CONFIG_ACROSSFADE_FILTER */

+ 2 - 4
libavfilter/af_afftdn.c

@@ -1400,7 +1400,6 @@ static const AVFilterPad inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -1408,7 +1407,6 @@ static const AVFilterPad outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_afftdn = {
 const AVFilter ff_af_afftdn = {
@@ -1419,8 +1417,8 @@ const AVFilter ff_af_afftdn = {
     .priv_class      = &afftdn_class,
     .priv_class      = &afftdn_class,
     .activate        = activate,
     .activate        = activate,
     .uninit          = uninit,
     .uninit          = uninit,
-    .inputs          = inputs,
-    .outputs         = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .process_command = process_command,
     .process_command = process_command,
     .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
     .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
                        AVFILTER_FLAG_SLICE_THREADS,
                        AVFILTER_FLAG_SLICE_THREADS,

+ 2 - 4
libavfilter/af_afftfilt.c

@@ -466,7 +466,6 @@ static const AVFilterPad inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -474,7 +473,6 @@ static const AVFilterPad outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_afftfilt = {
 const AVFilter ff_af_afftfilt = {
@@ -482,8 +480,8 @@ const AVFilter ff_af_afftfilt = {
     .description     = NULL_IF_CONFIG_SMALL("Apply arbitrary expressions to samples in frequency domain."),
     .description     = NULL_IF_CONFIG_SMALL("Apply arbitrary expressions to samples in frequency domain."),
     .priv_size       = sizeof(AFFTFiltContext),
     .priv_size       = sizeof(AFFTFiltContext),
     .priv_class      = &afftfilt_class,
     .priv_class      = &afftfilt_class,
-    .inputs          = inputs,
-    .outputs         = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .activate        = activate,
     .activate        = activate,
     .query_formats   = query_formats,
     .query_formats   = query_formats,
     .uninit          = uninit,
     .uninit          = uninit,

+ 2 - 4
libavfilter/af_aformat.c

@@ -146,7 +146,6 @@ static const AVFilterPad avfilter_af_aformat_inputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad avfilter_af_aformat_outputs[] = {
 static const AVFilterPad avfilter_af_aformat_outputs[] = {
@@ -154,7 +153,6 @@ static const AVFilterPad avfilter_af_aformat_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO
         .type = AVMEDIA_TYPE_AUDIO
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_aformat = {
 const AVFilter ff_af_aformat = {
@@ -165,6 +163,6 @@ const AVFilter ff_af_aformat = {
     .query_formats = query_formats,
     .query_formats = query_formats,
     .priv_size     = sizeof(AFormatContext),
     .priv_size     = sizeof(AFormatContext),
     .priv_class    = &aformat_class,
     .priv_class    = &aformat_class,
-    .inputs        = avfilter_af_aformat_inputs,
-    .outputs       = avfilter_af_aformat_outputs,
+    FILTER_INPUTS(avfilter_af_aformat_inputs),
+    FILTER_OUTPUTS(avfilter_af_aformat_outputs),
 };
 };

+ 4 - 6
libavfilter/af_afreqshift.c

@@ -367,7 +367,6 @@ static const AVFilterPad inputs[] = {
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -375,7 +374,6 @@ static const AVFilterPad outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_afreqshift = {
 const AVFilter ff_af_afreqshift = {
@@ -385,8 +383,8 @@ const AVFilter ff_af_afreqshift = {
     .priv_size       = sizeof(AFreqShift),
     .priv_size       = sizeof(AFreqShift),
     .priv_class      = &afreqshift_class,
     .priv_class      = &afreqshift_class,
     .uninit          = uninit,
     .uninit          = uninit,
-    .inputs          = inputs,
-    .outputs         = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .process_command = ff_filter_process_command,
     .process_command = ff_filter_process_command,
     .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
     .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
                        AVFILTER_FLAG_SLICE_THREADS,
                        AVFILTER_FLAG_SLICE_THREADS,
@@ -407,8 +405,8 @@ const AVFilter ff_af_aphaseshift = {
     .priv_size       = sizeof(AFreqShift),
     .priv_size       = sizeof(AFreqShift),
     .priv_class      = &aphaseshift_class,
     .priv_class      = &aphaseshift_class,
     .uninit          = uninit,
     .uninit          = uninit,
-    .inputs          = inputs,
-    .outputs         = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .process_command = ff_filter_process_command,
     .process_command = ff_filter_process_command,
     .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
     .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
                        AVFILTER_FLAG_SLICE_THREADS,
                        AVFILTER_FLAG_SLICE_THREADS,

+ 2 - 4
libavfilter/af_afwtdn.c

@@ -1311,7 +1311,6 @@ static const AVFilterPad inputs[] = {
         .name         = "default",
         .name         = "default",
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -1320,7 +1319,6 @@ static const AVFilterPad outputs[] = {
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
         .config_props  = config_output,
         .config_props  = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_afwtdn = {
 const AVFilter ff_af_afwtdn = {
@@ -1331,8 +1329,8 @@ const AVFilter ff_af_afwtdn = {
     .priv_class      = &afwtdn_class,
     .priv_class      = &afwtdn_class,
     .activate        = activate,
     .activate        = activate,
     .uninit          = uninit,
     .uninit          = uninit,
-    .inputs          = inputs,
-    .outputs         = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .process_command = process_command,
     .process_command = process_command,
     .flags           = AVFILTER_FLAG_SLICE_THREADS,
     .flags           = AVFILTER_FLAG_SLICE_THREADS,
 };
 };

+ 4 - 8
libavfilter/af_agate.c

@@ -240,7 +240,6 @@ static const AVFilterPad inputs[] = {
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
         .config_props = agate_config_input,
         .config_props = agate_config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -248,7 +247,6 @@ static const AVFilterPad outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_agate = {
 const AVFilter ff_af_agate = {
@@ -257,8 +255,8 @@ const AVFilter ff_af_agate = {
     .query_formats  = query_formats,
     .query_formats  = query_formats,
     .priv_size      = sizeof(AudioGateContext),
     .priv_size      = sizeof(AudioGateContext),
     .priv_class     = &agate_class,
     .priv_class     = &agate_class,
-    .inputs         = inputs,
-    .outputs        = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .process_command = ff_filter_process_command,
     .process_command = ff_filter_process_command,
     .flags          = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
     .flags          = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
 };
 };
@@ -413,7 +411,6 @@ static const AVFilterPad sidechaingate_inputs[] = {
         .name           = "sidechain",
         .name           = "sidechain",
         .type           = AVMEDIA_TYPE_AUDIO,
         .type           = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad sidechaingate_outputs[] = {
 static const AVFilterPad sidechaingate_outputs[] = {
@@ -422,7 +419,6 @@ static const AVFilterPad sidechaingate_outputs[] = {
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
         .config_props  = scconfig_output,
         .config_props  = scconfig_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_sidechaingate = {
 const AVFilter ff_af_sidechaingate = {
@@ -433,8 +429,8 @@ const AVFilter ff_af_sidechaingate = {
     .query_formats  = scquery_formats,
     .query_formats  = scquery_formats,
     .activate       = activate,
     .activate       = activate,
     .uninit         = uninit,
     .uninit         = uninit,
-    .inputs         = sidechaingate_inputs,
-    .outputs        = sidechaingate_outputs,
+    FILTER_INPUTS(sidechaingate_inputs),
+    FILTER_OUTPUTS(sidechaingate_outputs),
     .process_command = ff_filter_process_command,
     .process_command = ff_filter_process_command,
     .flags          = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
     .flags          = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
 };
 };

+ 1 - 2
libavfilter/af_aiir.c

@@ -1518,7 +1518,6 @@ static const AVFilterPad inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 #define OFFSET(x) offsetof(AudioIIRContext, x)
 #define OFFSET(x) offsetof(AudioIIRContext, x)
@@ -1574,7 +1573,7 @@ const AVFilter ff_af_aiir = {
     .init          = init,
     .init          = init,
     .uninit        = uninit,
     .uninit        = uninit,
     .query_formats = query_formats,
     .query_formats = query_formats,
-    .inputs        = inputs,
+    FILTER_INPUTS(inputs),
     .flags         = AVFILTER_FLAG_DYNAMIC_OUTPUTS |
     .flags         = AVFILTER_FLAG_DYNAMIC_OUTPUTS |
                      AVFILTER_FLAG_SLICE_THREADS,
                      AVFILTER_FLAG_SLICE_THREADS,
 };
 };

+ 2 - 4
libavfilter/af_alimiter.c

@@ -337,7 +337,6 @@ static const AVFilterPad alimiter_inputs[] = {
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad alimiter_outputs[] = {
 static const AVFilterPad alimiter_outputs[] = {
@@ -345,7 +344,6 @@ static const AVFilterPad alimiter_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_alimiter = {
 const AVFilter ff_af_alimiter = {
@@ -356,6 +354,6 @@ const AVFilter ff_af_alimiter = {
     .init           = init,
     .init           = init,
     .uninit         = uninit,
     .uninit         = uninit,
     .query_formats  = query_formats,
     .query_formats  = query_formats,
-    .inputs         = alimiter_inputs,
-    .outputs        = alimiter_outputs,
+    FILTER_INPUTS(alimiter_inputs),
+    FILTER_OUTPUTS(alimiter_outputs),
 };
 };

+ 1 - 2
libavfilter/af_amerge.c

@@ -342,7 +342,6 @@ static const AVFilterPad amerge_outputs[] = {
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
         .config_props  = config_output,
         .config_props  = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_amerge = {
 const AVFilter ff_af_amerge = {
@@ -355,7 +354,7 @@ const AVFilter ff_af_amerge = {
     .query_formats = query_formats,
     .query_formats = query_formats,
     .activate      = activate,
     .activate      = activate,
     .inputs        = NULL,
     .inputs        = NULL,
-    .outputs       = amerge_outputs,
+    FILTER_OUTPUTS(amerge_outputs),
     .priv_class    = &amerge_class,
     .priv_class    = &amerge_class,
     .flags         = AVFILTER_FLAG_DYNAMIC_INPUTS,
     .flags         = AVFILTER_FLAG_DYNAMIC_INPUTS,
 };
 };

+ 1 - 2
libavfilter/af_amix.c

@@ -634,7 +634,6 @@ static const AVFilterPad avfilter_af_amix_outputs[] = {
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
         .config_props  = config_output,
         .config_props  = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_amix = {
 const AVFilter ff_af_amix = {
@@ -647,7 +646,7 @@ const AVFilter ff_af_amix = {
     .activate       = activate,
     .activate       = activate,
     .query_formats  = query_formats,
     .query_formats  = query_formats,
     .inputs         = NULL,
     .inputs         = NULL,
-    .outputs        = avfilter_af_amix_outputs,
+    FILTER_OUTPUTS(avfilter_af_amix_outputs),
     .process_command = process_command,
     .process_command = process_command,
     .flags          = AVFILTER_FLAG_DYNAMIC_INPUTS,
     .flags          = AVFILTER_FLAG_DYNAMIC_INPUTS,
 };
 };

+ 2 - 4
libavfilter/af_amultiply.c

@@ -179,7 +179,6 @@ static const AVFilterPad inputs[] = {
         .name = "multiply1",
         .name = "multiply1",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -188,7 +187,6 @@ static const AVFilterPad outputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_output,
         .config_props = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_amultiply = {
 const AVFilter ff_af_amultiply = {
@@ -199,6 +197,6 @@ const AVFilter ff_af_amultiply = {
     .uninit         = uninit,
     .uninit         = uninit,
     .activate       = activate,
     .activate       = activate,
     .query_formats  = query_formats,
     .query_formats  = query_formats,
-    .inputs         = inputs,
-    .outputs        = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
 };
 };

+ 1 - 2
libavfilter/af_anequalizer.c

@@ -761,7 +761,6 @@ static const AVFilterPad inputs[] = {
         .config_props   = config_input,
         .config_props   = config_input,
         .filter_frame   = filter_frame,
         .filter_frame   = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_anequalizer = {
 const AVFilter ff_af_anequalizer = {
@@ -772,7 +771,7 @@ const AVFilter ff_af_anequalizer = {
     .init          = init,
     .init          = init,
     .uninit        = uninit,
     .uninit        = uninit,
     .query_formats = query_formats,
     .query_formats = query_formats,
-    .inputs        = inputs,
+    FILTER_INPUTS(inputs),
     .outputs       = NULL,
     .outputs       = NULL,
     .process_command = process_command,
     .process_command = process_command,
     .flags         = AVFILTER_FLAG_DYNAMIC_OUTPUTS |
     .flags         = AVFILTER_FLAG_DYNAMIC_OUTPUTS |

+ 2 - 4
libavfilter/af_anlmdn.c

@@ -388,7 +388,6 @@ static const AVFilterPad inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -398,7 +397,6 @@ static const AVFilterPad outputs[] = {
         .config_props  = config_output,
         .config_props  = config_output,
         .request_frame = request_frame,
         .request_frame = request_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_anlmdn = {
 const AVFilter ff_af_anlmdn = {
@@ -408,8 +406,8 @@ const AVFilter ff_af_anlmdn = {
     .priv_size     = sizeof(AudioNLMeansContext),
     .priv_size     = sizeof(AudioNLMeansContext),
     .priv_class    = &anlmdn_class,
     .priv_class    = &anlmdn_class,
     .uninit        = uninit,
     .uninit        = uninit,
-    .inputs        = inputs,
-    .outputs       = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .process_command = process_command,
     .process_command = process_command,
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL |
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL |
                      AVFILTER_FLAG_SLICE_THREADS,
                      AVFILTER_FLAG_SLICE_THREADS,

+ 2 - 4
libavfilter/af_anlms.c

@@ -288,7 +288,6 @@ static const AVFilterPad inputs[] = {
         .name = "desired",
         .name = "desired",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -297,7 +296,6 @@ static const AVFilterPad outputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_output,
         .config_props = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_anlms = {
 const AVFilter ff_af_anlms = {
@@ -309,8 +307,8 @@ const AVFilter ff_af_anlms = {
     .uninit         = uninit,
     .uninit         = uninit,
     .activate       = activate,
     .activate       = activate,
     .query_formats  = query_formats,
     .query_formats  = query_formats,
-    .inputs         = inputs,
-    .outputs        = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .flags          = AVFILTER_FLAG_SLICE_THREADS,
     .flags          = AVFILTER_FLAG_SLICE_THREADS,
     .process_command = ff_filter_process_command,
     .process_command = ff_filter_process_command,
 };
 };

+ 2 - 4
libavfilter/af_anull.c

@@ -32,7 +32,6 @@ static const AVFilterPad avfilter_af_anull_inputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad avfilter_af_anull_outputs[] = {
 static const AVFilterPad avfilter_af_anull_outputs[] = {
@@ -40,12 +39,11 @@ static const AVFilterPad avfilter_af_anull_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_anull = {
 const AVFilter ff_af_anull = {
     .name          = "anull",
     .name          = "anull",
     .description   = NULL_IF_CONFIG_SMALL("Pass the source unchanged to the output."),
     .description   = NULL_IF_CONFIG_SMALL("Pass the source unchanged to the output."),
-    .inputs        = avfilter_af_anull_inputs,
-    .outputs       = avfilter_af_anull_outputs,
+    FILTER_INPUTS(avfilter_af_anull_inputs),
+    FILTER_OUTPUTS(avfilter_af_anull_outputs),
 };
 };

+ 2 - 4
libavfilter/af_apad.c

@@ -155,7 +155,6 @@ static const AVFilterPad apad_inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad apad_outputs[] = {
 static const AVFilterPad apad_outputs[] = {
@@ -165,7 +164,6 @@ static const AVFilterPad apad_outputs[] = {
         .config_props  = config_output,
         .config_props  = config_output,
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_apad = {
 const AVFilter ff_af_apad = {
@@ -173,8 +171,8 @@ const AVFilter ff_af_apad = {
     .description   = NULL_IF_CONFIG_SMALL("Pad audio with silence."),
     .description   = NULL_IF_CONFIG_SMALL("Pad audio with silence."),
     .init          = init,
     .init          = init,
     .priv_size     = sizeof(APadContext),
     .priv_size     = sizeof(APadContext),
-    .inputs        = apad_inputs,
-    .outputs       = apad_outputs,
+    FILTER_INPUTS(apad_inputs),
+    FILTER_OUTPUTS(apad_outputs),
     .priv_class    = &apad_class,
     .priv_class    = &apad_class,
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
 };
 };

+ 2 - 4
libavfilter/af_aphaser.c

@@ -265,7 +265,6 @@ static const AVFilterPad aphaser_inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad aphaser_outputs[] = {
 static const AVFilterPad aphaser_outputs[] = {
@@ -274,7 +273,6 @@ static const AVFilterPad aphaser_outputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_output,
         .config_props = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_aphaser = {
 const AVFilter ff_af_aphaser = {
@@ -284,7 +282,7 @@ const AVFilter ff_af_aphaser = {
     .priv_size     = sizeof(AudioPhaserContext),
     .priv_size     = sizeof(AudioPhaserContext),
     .init          = init,
     .init          = init,
     .uninit        = uninit,
     .uninit        = uninit,
-    .inputs        = aphaser_inputs,
-    .outputs       = aphaser_outputs,
+    FILTER_INPUTS(aphaser_inputs),
+    FILTER_OUTPUTS(aphaser_outputs),
     .priv_class    = &aphaser_class,
     .priv_class    = &aphaser_class,
 };
 };

+ 2 - 4
libavfilter/af_apulsator.c

@@ -235,7 +235,6 @@ static const AVFilterPad inputs[] = {
         .config_props = config_input,
         .config_props = config_input,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -243,7 +242,6 @@ static const AVFilterPad outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_apulsator = {
 const AVFilter ff_af_apulsator = {
@@ -252,6 +250,6 @@ const AVFilter ff_af_apulsator = {
     .priv_size     = sizeof(AudioPulsatorContext),
     .priv_size     = sizeof(AudioPulsatorContext),
     .priv_class    = &apulsator_class,
     .priv_class    = &apulsator_class,
     .query_formats = query_formats,
     .query_formats = query_formats,
-    .inputs        = inputs,
-    .outputs       = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
 };
 };

+ 2 - 4
libavfilter/af_aresample.c

@@ -329,7 +329,6 @@ static const AVFilterPad aresample_inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad aresample_outputs[] = {
 static const AVFilterPad aresample_outputs[] = {
@@ -339,7 +338,6 @@ static const AVFilterPad aresample_outputs[] = {
         .request_frame = request_frame,
         .request_frame = request_frame,
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_aresample = {
 const AVFilter ff_af_aresample = {
@@ -350,6 +348,6 @@ const AVFilter ff_af_aresample = {
     .query_formats = query_formats,
     .query_formats = query_formats,
     .priv_size     = sizeof(AResampleContext),
     .priv_size     = sizeof(AResampleContext),
     .priv_class    = &aresample_class,
     .priv_class    = &aresample_class,
-    .inputs        = aresample_inputs,
-    .outputs       = aresample_outputs,
+    FILTER_INPUTS(aresample_inputs),
+    FILTER_OUTPUTS(aresample_outputs),
 };
 };

+ 2 - 4
libavfilter/af_arnndn.c

@@ -1584,7 +1584,6 @@ static const AVFilterPad inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -1592,7 +1591,6 @@ static const AVFilterPad outputs[] = {
         .name          = "default",
         .name          = "default",
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 #define OFFSET(x) offsetof(AudioRNNContext, x)
 #define OFFSET(x) offsetof(AudioRNNContext, x)
@@ -1616,8 +1614,8 @@ const AVFilter ff_af_arnndn = {
     .activate      = activate,
     .activate      = activate,
     .init          = init,
     .init          = init,
     .uninit        = uninit,
     .uninit        = uninit,
-    .inputs        = inputs,
-    .outputs       = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL |
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL |
                      AVFILTER_FLAG_SLICE_THREADS,
                      AVFILTER_FLAG_SLICE_THREADS,
     .process_command = process_command,
     .process_command = process_command,

+ 2 - 4
libavfilter/af_asetnsamples.c

@@ -106,7 +106,6 @@ static const AVFilterPad asetnsamples_inputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad asetnsamples_outputs[] = {
 static const AVFilterPad asetnsamples_outputs[] = {
@@ -114,7 +113,6 @@ static const AVFilterPad asetnsamples_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_asetnsamples = {
 const AVFilter ff_af_asetnsamples = {
@@ -122,7 +120,7 @@ const AVFilter ff_af_asetnsamples = {
     .description = NULL_IF_CONFIG_SMALL("Set the number of samples for each output audio frames."),
     .description = NULL_IF_CONFIG_SMALL("Set the number of samples for each output audio frames."),
     .priv_size   = sizeof(ASNSContext),
     .priv_size   = sizeof(ASNSContext),
     .priv_class  = &asetnsamples_class,
     .priv_class  = &asetnsamples_class,
-    .inputs      = asetnsamples_inputs,
-    .outputs     = asetnsamples_outputs,
+    FILTER_INPUTS(asetnsamples_inputs),
+    FILTER_OUTPUTS(asetnsamples_outputs),
     .activate    = activate,
     .activate    = activate,
 };
 };

+ 2 - 4
libavfilter/af_asetrate.c

@@ -94,7 +94,6 @@ static const AVFilterPad asetrate_inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad asetrate_outputs[] = {
 static const AVFilterPad asetrate_outputs[] = {
@@ -103,7 +102,6 @@ static const AVFilterPad asetrate_outputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_props,
         .config_props = config_props,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_asetrate = {
 const AVFilter ff_af_asetrate = {
@@ -112,7 +110,7 @@ const AVFilter ff_af_asetrate = {
                                           "altering the data."),
                                           "altering the data."),
     .query_formats = query_formats,
     .query_formats = query_formats,
     .priv_size     = sizeof(ASetRateContext),
     .priv_size     = sizeof(ASetRateContext),
-    .inputs        = asetrate_inputs,
-    .outputs       = asetrate_outputs,
+    FILTER_INPUTS(asetrate_inputs),
+    FILTER_OUTPUTS(asetrate_outputs),
     .priv_class    = &asetrate_class,
     .priv_class    = &asetrate_class,
 };
 };

+ 2 - 4
libavfilter/af_ashowinfo.c

@@ -243,7 +243,6 @@ static const AVFilterPad inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -251,7 +250,6 @@ static const AVFilterPad outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_ashowinfo = {
 const AVFilter ff_af_ashowinfo = {
@@ -259,6 +257,6 @@ const AVFilter ff_af_ashowinfo = {
     .description = NULL_IF_CONFIG_SMALL("Show textual information for each audio frame."),
     .description = NULL_IF_CONFIG_SMALL("Show textual information for each audio frame."),
     .priv_size   = sizeof(AShowInfoContext),
     .priv_size   = sizeof(AShowInfoContext),
     .uninit      = uninit,
     .uninit      = uninit,
-    .inputs      = inputs,
-    .outputs     = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
 };
 };

+ 2 - 4
libavfilter/af_asoftclip.c

@@ -451,7 +451,6 @@ static const AVFilterPad inputs[] = {
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -459,7 +458,6 @@ static const AVFilterPad outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_asoftclip = {
 const AVFilter ff_af_asoftclip = {
@@ -468,8 +466,8 @@ const AVFilter ff_af_asoftclip = {
     .query_formats  = query_formats,
     .query_formats  = query_formats,
     .priv_size      = sizeof(ASoftClipContext),
     .priv_size      = sizeof(ASoftClipContext),
     .priv_class     = &asoftclip_class,
     .priv_class     = &asoftclip_class,
-    .inputs         = inputs,
-    .outputs        = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .uninit         = uninit,
     .uninit         = uninit,
     .process_command = ff_filter_process_command,
     .process_command = ff_filter_process_command,
     .flags          = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
     .flags          = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |

+ 2 - 4
libavfilter/af_asr.c

@@ -156,7 +156,6 @@ static const AVFilterPad asr_inputs[] = {
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad asr_outputs[] = {
 static const AVFilterPad asr_outputs[] = {
@@ -164,7 +163,6 @@ static const AVFilterPad asr_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_asr = {
 const AVFilter ff_af_asr = {
@@ -175,6 +173,6 @@ const AVFilter ff_af_asr = {
     .init          = asr_init,
     .init          = asr_init,
     .uninit        = asr_uninit,
     .uninit        = asr_uninit,
     .query_formats = query_formats,
     .query_formats = query_formats,
-    .inputs        = asr_inputs,
-    .outputs       = asr_outputs,
+    FILTER_INPUTS(asr_inputs),
+    FILTER_OUTPUTS(asr_outputs),
 };
 };

+ 2 - 4
libavfilter/af_astats.c

@@ -815,7 +815,6 @@ static const AVFilterPad astats_inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad astats_outputs[] = {
 static const AVFilterPad astats_outputs[] = {
@@ -824,7 +823,6 @@ static const AVFilterPad astats_outputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_output,
         .config_props = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_astats = {
 const AVFilter ff_af_astats = {
@@ -834,7 +832,7 @@ const AVFilter ff_af_astats = {
     .priv_size     = sizeof(AudioStatsContext),
     .priv_size     = sizeof(AudioStatsContext),
     .priv_class    = &astats_class,
     .priv_class    = &astats_class,
     .uninit        = uninit,
     .uninit        = uninit,
-    .inputs        = astats_inputs,
-    .outputs       = astats_outputs,
+    FILTER_INPUTS(astats_inputs),
+    FILTER_OUTPUTS(astats_outputs),
     .flags         = AVFILTER_FLAG_SLICE_THREADS,
     .flags         = AVFILTER_FLAG_SLICE_THREADS,
 };
 };

+ 2 - 4
libavfilter/af_asubboost.c

@@ -221,7 +221,6 @@ static const AVFilterPad inputs[] = {
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -229,7 +228,6 @@ static const AVFilterPad outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_asubboost = {
 const AVFilter ff_af_asubboost = {
@@ -239,8 +237,8 @@ const AVFilter ff_af_asubboost = {
     .priv_size      = sizeof(ASubBoostContext),
     .priv_size      = sizeof(ASubBoostContext),
     .priv_class     = &asubboost_class,
     .priv_class     = &asubboost_class,
     .uninit         = uninit,
     .uninit         = uninit,
-    .inputs         = inputs,
-    .outputs        = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .process_command = process_command,
     .process_command = process_command,
     .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL |
     .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL |
                        AVFILTER_FLAG_SLICE_THREADS,
                        AVFILTER_FLAG_SLICE_THREADS,

+ 8 - 10
libavfilter/af_asupercut.c

@@ -345,7 +345,6 @@ static const AVFilterPad inputs[] = {
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -353,7 +352,6 @@ static const AVFilterPad outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_asupercut = {
 const AVFilter ff_af_asupercut = {
@@ -363,8 +361,8 @@ const AVFilter ff_af_asupercut = {
     .priv_size       = sizeof(ASuperCutContext),
     .priv_size       = sizeof(ASuperCutContext),
     .priv_class      = &asupercut_class,
     .priv_class      = &asupercut_class,
     .uninit          = uninit,
     .uninit          = uninit,
-    .inputs          = inputs,
-    .outputs         = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .process_command = process_command,
     .process_command = process_command,
     .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
     .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
                        AVFILTER_FLAG_SLICE_THREADS,
                        AVFILTER_FLAG_SLICE_THREADS,
@@ -386,8 +384,8 @@ const AVFilter ff_af_asubcut = {
     .priv_size       = sizeof(ASuperCutContext),
     .priv_size       = sizeof(ASuperCutContext),
     .priv_class      = &asubcut_class,
     .priv_class      = &asubcut_class,
     .uninit          = uninit,
     .uninit          = uninit,
-    .inputs          = inputs,
-    .outputs         = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .process_command = process_command,
     .process_command = process_command,
     .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
     .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
                        AVFILTER_FLAG_SLICE_THREADS,
                        AVFILTER_FLAG_SLICE_THREADS,
@@ -411,8 +409,8 @@ const AVFilter ff_af_asuperpass = {
     .priv_size       = sizeof(ASuperCutContext),
     .priv_size       = sizeof(ASuperCutContext),
     .priv_class      = &asuperpass_class,
     .priv_class      = &asuperpass_class,
     .uninit          = uninit,
     .uninit          = uninit,
-    .inputs          = inputs,
-    .outputs         = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .process_command = process_command,
     .process_command = process_command,
     .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
     .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
                        AVFILTER_FLAG_SLICE_THREADS,
                        AVFILTER_FLAG_SLICE_THREADS,
@@ -428,8 +426,8 @@ const AVFilter ff_af_asuperstop = {
     .priv_size       = sizeof(ASuperCutContext),
     .priv_size       = sizeof(ASuperCutContext),
     .priv_class      = &asuperstop_class,
     .priv_class      = &asuperstop_class,
     .uninit          = uninit,
     .uninit          = uninit,
-    .inputs          = inputs,
-    .outputs         = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .process_command = process_command,
     .process_command = process_command,
     .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
     .flags           = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC |
                        AVFILTER_FLAG_SLICE_THREADS,
                        AVFILTER_FLAG_SLICE_THREADS,

+ 2 - 4
libavfilter/af_atempo.c

@@ -1173,7 +1173,6 @@ static const AVFilterPad atempo_inputs[] = {
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
         .config_props = config_props,
         .config_props = config_props,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad atempo_outputs[] = {
 static const AVFilterPad atempo_outputs[] = {
@@ -1182,7 +1181,6 @@ static const AVFilterPad atempo_outputs[] = {
         .request_frame = request_frame,
         .request_frame = request_frame,
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_atempo = {
 const AVFilter ff_af_atempo = {
@@ -1194,6 +1192,6 @@ const AVFilter ff_af_atempo = {
     .process_command = process_command,
     .process_command = process_command,
     .priv_size       = sizeof(ATempoContext),
     .priv_size       = sizeof(ATempoContext),
     .priv_class      = &atempo_class,
     .priv_class      = &atempo_class,
-    .inputs          = atempo_inputs,
-    .outputs         = atempo_outputs,
+    FILTER_INPUTS(atempo_inputs),
+    FILTER_OUTPUTS(atempo_outputs),
 };
 };

+ 2 - 4
libavfilter/af_axcorrelate.c

@@ -326,7 +326,6 @@ static const AVFilterPad inputs[] = {
         .name = "axcorrelate1",
         .name = "axcorrelate1",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -335,7 +334,6 @@ static const AVFilterPad outputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_output,
         .config_props = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 #define AF AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
 #define AF AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
@@ -359,6 +357,6 @@ const AVFilter ff_af_axcorrelate = {
     .query_formats  = query_formats,
     .query_formats  = query_formats,
     .activate       = activate,
     .activate       = activate,
     .uninit         = uninit,
     .uninit         = uninit,
-    .inputs         = inputs,
-    .outputs        = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
 };
 };

+ 2 - 4
libavfilter/af_biquads.c

@@ -839,7 +839,6 @@ static const AVFilterPad inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -848,7 +847,6 @@ static const AVFilterPad outputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_output,
         .config_props = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 #define OFFSET(x) offsetof(BiquadsContext, x)
 #define OFFSET(x) offsetof(BiquadsContext, x)
@@ -871,8 +869,8 @@ const AVFilter ff_af_##name_ = {                               \
     .init          = name_##_init,                       \
     .init          = name_##_init,                       \
     .uninit        = uninit,                             \
     .uninit        = uninit,                             \
     .query_formats = query_formats,                      \
     .query_formats = query_formats,                      \
-    .inputs        = inputs,                             \
-    .outputs       = outputs,                            \
+    FILTER_INPUTS(inputs),                               \
+    FILTER_OUTPUTS(outputs),                             \
     .priv_class    = &name_##_class,                     \
     .priv_class    = &name_##_class,                     \
     .process_command = process_command,                  \
     .process_command = process_command,                  \
     .flags         = AVFILTER_FLAG_SLICE_THREADS | AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL, \
     .flags         = AVFILTER_FLAG_SLICE_THREADS | AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL, \

+ 2 - 4
libavfilter/af_bs2b.c

@@ -192,7 +192,6 @@ static const AVFilterPad bs2b_inputs[] = {
         .type           = AVMEDIA_TYPE_AUDIO,
         .type           = AVMEDIA_TYPE_AUDIO,
         .filter_frame   = filter_frame,
         .filter_frame   = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad bs2b_outputs[] = {
 static const AVFilterPad bs2b_outputs[] = {
@@ -201,7 +200,6 @@ static const AVFilterPad bs2b_outputs[] = {
         .type           = AVMEDIA_TYPE_AUDIO,
         .type           = AVMEDIA_TYPE_AUDIO,
         .config_props   = config_output,
         .config_props   = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_bs2b = {
 const AVFilter ff_af_bs2b = {
@@ -212,6 +210,6 @@ const AVFilter ff_af_bs2b = {
     .priv_class     = &bs2b_class,
     .priv_class     = &bs2b_class,
     .init           = init,
     .init           = init,
     .uninit         = uninit,
     .uninit         = uninit,
-    .inputs         = bs2b_inputs,
-    .outputs        = bs2b_outputs,
+    FILTER_INPUTS(bs2b_inputs),
+    FILTER_OUTPUTS(bs2b_outputs),
 };
 };

+ 2 - 4
libavfilter/af_channelmap.c

@@ -387,7 +387,6 @@ static const AVFilterPad avfilter_af_channelmap_inputs[] = {
         .filter_frame   = channelmap_filter_frame,
         .filter_frame   = channelmap_filter_frame,
         .config_props   = channelmap_config_input,
         .config_props   = channelmap_config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad avfilter_af_channelmap_outputs[] = {
 static const AVFilterPad avfilter_af_channelmap_outputs[] = {
@@ -395,7 +394,6 @@ static const AVFilterPad avfilter_af_channelmap_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO
         .type = AVMEDIA_TYPE_AUDIO
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_channelmap = {
 const AVFilter ff_af_channelmap = {
@@ -405,6 +403,6 @@ const AVFilter ff_af_channelmap = {
     .query_formats = channelmap_query_formats,
     .query_formats = channelmap_query_formats,
     .priv_size     = sizeof(ChannelMapContext),
     .priv_size     = sizeof(ChannelMapContext),
     .priv_class    = &channelmap_class,
     .priv_class    = &channelmap_class,
-    .inputs        = avfilter_af_channelmap_inputs,
-    .outputs       = avfilter_af_channelmap_outputs,
+    FILTER_INPUTS(avfilter_af_channelmap_inputs),
+    FILTER_OUTPUTS(avfilter_af_channelmap_outputs),
 };
 };

+ 1 - 2
libavfilter/af_channelsplit.c

@@ -164,7 +164,6 @@ static const AVFilterPad avfilter_af_channelsplit_inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_channelsplit = {
 const AVFilter ff_af_channelsplit = {
@@ -174,7 +173,7 @@ const AVFilter ff_af_channelsplit = {
     .priv_class     = &channelsplit_class,
     .priv_class     = &channelsplit_class,
     .init           = init,
     .init           = init,
     .query_formats  = query_formats,
     .query_formats  = query_formats,
-    .inputs         = avfilter_af_channelsplit_inputs,
+    FILTER_INPUTS(avfilter_af_channelsplit_inputs),
     .outputs        = NULL,
     .outputs        = NULL,
     .flags          = AVFILTER_FLAG_DYNAMIC_OUTPUTS,
     .flags          = AVFILTER_FLAG_DYNAMIC_OUTPUTS,
 };
 };

+ 2 - 4
libavfilter/af_chorus.c

@@ -343,7 +343,6 @@ static const AVFilterPad chorus_inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad chorus_outputs[] = {
 static const AVFilterPad chorus_outputs[] = {
@@ -353,7 +352,6 @@ static const AVFilterPad chorus_outputs[] = {
         .request_frame = request_frame,
         .request_frame = request_frame,
         .config_props  = config_output,
         .config_props  = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_chorus = {
 const AVFilter ff_af_chorus = {
@@ -364,6 +362,6 @@ const AVFilter ff_af_chorus = {
     .priv_class    = &chorus_class,
     .priv_class    = &chorus_class,
     .init          = init,
     .init          = init,
     .uninit        = uninit,
     .uninit        = uninit,
-    .inputs        = chorus_inputs,
-    .outputs       = chorus_outputs,
+    FILTER_INPUTS(chorus_inputs),
+    FILTER_OUTPUTS(chorus_outputs),
 };
 };

+ 2 - 4
libavfilter/af_compand.c

@@ -558,7 +558,6 @@ static const AVFilterPad compand_inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad compand_outputs[] = {
 static const AVFilterPad compand_outputs[] = {
@@ -568,7 +567,6 @@ static const AVFilterPad compand_outputs[] = {
         .config_props  = config_output,
         .config_props  = config_output,
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 
 
@@ -581,6 +579,6 @@ const AVFilter ff_af_compand = {
     .priv_class     = &compand_class,
     .priv_class     = &compand_class,
     .init           = init,
     .init           = init,
     .uninit         = uninit,
     .uninit         = uninit,
-    .inputs         = compand_inputs,
-    .outputs        = compand_outputs,
+    FILTER_INPUTS(compand_inputs),
+    FILTER_OUTPUTS(compand_outputs),
 };
 };

+ 2 - 4
libavfilter/af_compensationdelay.c

@@ -162,7 +162,6 @@ static const AVFilterPad compensationdelay_inputs[] = {
         .config_props = config_input,
         .config_props = config_input,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad compensationdelay_outputs[] = {
 static const AVFilterPad compensationdelay_outputs[] = {
@@ -170,7 +169,6 @@ static const AVFilterPad compensationdelay_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_compensationdelay = {
 const AVFilter ff_af_compensationdelay = {
@@ -180,6 +178,6 @@ const AVFilter ff_af_compensationdelay = {
     .priv_size     = sizeof(CompensationDelayContext),
     .priv_size     = sizeof(CompensationDelayContext),
     .priv_class    = &compensationdelay_class,
     .priv_class    = &compensationdelay_class,
     .uninit        = uninit,
     .uninit        = uninit,
-    .inputs        = compensationdelay_inputs,
-    .outputs       = compensationdelay_outputs,
+    FILTER_INPUTS(compensationdelay_inputs),
+    FILTER_OUTPUTS(compensationdelay_outputs),
 };
 };

+ 2 - 4
libavfilter/af_crossfeed.c

@@ -164,7 +164,6 @@ static const AVFilterPad inputs[] = {
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -172,7 +171,6 @@ static const AVFilterPad outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_crossfeed = {
 const AVFilter ff_af_crossfeed = {
@@ -181,8 +179,8 @@ const AVFilter ff_af_crossfeed = {
     .query_formats  = query_formats,
     .query_formats  = query_formats,
     .priv_size      = sizeof(CrossfeedContext),
     .priv_size      = sizeof(CrossfeedContext),
     .priv_class     = &crossfeed_class,
     .priv_class     = &crossfeed_class,
-    .inputs         = inputs,
-    .outputs        = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .flags          = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
     .flags          = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
     .process_command = process_command,
     .process_command = process_command,
 };
 };

+ 2 - 4
libavfilter/af_crystalizer.c

@@ -433,7 +433,6 @@ static const AVFilterPad inputs[] = {
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -441,7 +440,6 @@ static const AVFilterPad outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_crystalizer = {
 const AVFilter ff_af_crystalizer = {
@@ -451,8 +449,8 @@ const AVFilter ff_af_crystalizer = {
     .priv_size      = sizeof(CrystalizerContext),
     .priv_size      = sizeof(CrystalizerContext),
     .priv_class     = &crystalizer_class,
     .priv_class     = &crystalizer_class,
     .uninit         = uninit,
     .uninit         = uninit,
-    .inputs         = inputs,
-    .outputs        = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .process_command = process_command,
     .process_command = process_command,
     .flags          = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL |
     .flags          = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL |
                       AVFILTER_FLAG_SLICE_THREADS,
                       AVFILTER_FLAG_SLICE_THREADS,

+ 2 - 4
libavfilter/af_dcshift.c

@@ -136,7 +136,6 @@ static const AVFilterPad dcshift_inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad dcshift_outputs[] = {
 static const AVFilterPad dcshift_outputs[] = {
@@ -144,7 +143,6 @@ static const AVFilterPad dcshift_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_dcshift = {
 const AVFilter ff_af_dcshift = {
@@ -154,7 +152,7 @@ const AVFilter ff_af_dcshift = {
     .priv_size      = sizeof(DCShiftContext),
     .priv_size      = sizeof(DCShiftContext),
     .priv_class     = &dcshift_class,
     .priv_class     = &dcshift_class,
     .init           = init,
     .init           = init,
-    .inputs         = dcshift_inputs,
-    .outputs        = dcshift_outputs,
+    FILTER_INPUTS(dcshift_inputs),
+    FILTER_OUTPUTS(dcshift_outputs),
     .flags          = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
     .flags          = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
 };
 };

+ 2 - 4
libavfilter/af_deesser.c

@@ -208,7 +208,6 @@ static const AVFilterPad inputs[] = {
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -216,7 +215,6 @@ static const AVFilterPad outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_deesser = {
 const AVFilter ff_af_deesser = {
@@ -226,7 +224,7 @@ const AVFilter ff_af_deesser = {
     .priv_size     = sizeof(DeesserContext),
     .priv_size     = sizeof(DeesserContext),
     .priv_class    = &deesser_class,
     .priv_class    = &deesser_class,
     .uninit        = uninit,
     .uninit        = uninit,
-    .inputs        = inputs,
-    .outputs       = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
 };
 };

+ 2 - 4
libavfilter/af_drmeter.c

@@ -201,7 +201,6 @@ static const AVFilterPad drmeter_inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad drmeter_outputs[] = {
 static const AVFilterPad drmeter_outputs[] = {
@@ -210,7 +209,6 @@ static const AVFilterPad drmeter_outputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_output,
         .config_props = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_drmeter = {
 const AVFilter ff_af_drmeter = {
@@ -220,6 +218,6 @@ const AVFilter ff_af_drmeter = {
     .priv_size     = sizeof(DRMeterContext),
     .priv_size     = sizeof(DRMeterContext),
     .priv_class    = &drmeter_class,
     .priv_class    = &drmeter_class,
     .uninit        = uninit,
     .uninit        = uninit,
-    .inputs        = drmeter_inputs,
-    .outputs       = drmeter_outputs,
+    FILTER_INPUTS(drmeter_inputs),
+    FILTER_OUTPUTS(drmeter_outputs),
 };
 };

+ 2 - 4
libavfilter/af_dynaudnorm.c

@@ -844,7 +844,6 @@ static const AVFilterPad avfilter_af_dynaudnorm_inputs[] = {
         .type           = AVMEDIA_TYPE_AUDIO,
         .type           = AVMEDIA_TYPE_AUDIO,
         .config_props   = config_input,
         .config_props   = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad avfilter_af_dynaudnorm_outputs[] = {
 static const AVFilterPad avfilter_af_dynaudnorm_outputs[] = {
@@ -852,7 +851,6 @@ static const AVFilterPad avfilter_af_dynaudnorm_outputs[] = {
         .name          = "default",
         .name          = "default",
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_dynaudnorm = {
 const AVFilter ff_af_dynaudnorm = {
@@ -863,8 +861,8 @@ const AVFilter ff_af_dynaudnorm = {
     .init          = init,
     .init          = init,
     .uninit        = uninit,
     .uninit        = uninit,
     .activate      = activate,
     .activate      = activate,
-    .inputs        = avfilter_af_dynaudnorm_inputs,
-    .outputs       = avfilter_af_dynaudnorm_outputs,
+    FILTER_INPUTS(avfilter_af_dynaudnorm_inputs),
+    FILTER_OUTPUTS(avfilter_af_dynaudnorm_outputs),
     .priv_class    = &dynaudnorm_class,
     .priv_class    = &dynaudnorm_class,
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
     .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
     .process_command = process_command,
     .process_command = process_command,

+ 2 - 4
libavfilter/af_earwax.c

@@ -220,7 +220,6 @@ static const AVFilterPad earwax_inputs[] = {
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad earwax_outputs[] = {
 static const AVFilterPad earwax_outputs[] = {
@@ -228,7 +227,6 @@ static const AVFilterPad earwax_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_earwax = {
 const AVFilter ff_af_earwax = {
@@ -237,6 +235,6 @@ const AVFilter ff_af_earwax = {
     .query_formats  = query_formats,
     .query_formats  = query_formats,
     .priv_size      = sizeof(EarwaxContext),
     .priv_size      = sizeof(EarwaxContext),
     .uninit         = uninit,
     .uninit         = uninit,
-    .inputs         = earwax_inputs,
-    .outputs        = earwax_outputs,
+    FILTER_INPUTS(earwax_inputs),
+    FILTER_OUTPUTS(earwax_outputs),
 };
 };

+ 2 - 4
libavfilter/af_extrastereo.c

@@ -108,7 +108,6 @@ static const AVFilterPad inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -116,7 +115,6 @@ static const AVFilterPad outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_extrastereo = {
 const AVFilter ff_af_extrastereo = {
@@ -125,8 +123,8 @@ const AVFilter ff_af_extrastereo = {
     .query_formats  = query_formats,
     .query_formats  = query_formats,
     .priv_size      = sizeof(ExtraStereoContext),
     .priv_size      = sizeof(ExtraStereoContext),
     .priv_class     = &extrastereo_class,
     .priv_class     = &extrastereo_class,
-    .inputs         = inputs,
-    .outputs        = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .flags          = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
     .flags          = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
     .process_command = ff_filter_process_command,
     .process_command = ff_filter_process_command,
 };
 };

+ 2 - 4
libavfilter/af_firequalizer.c

@@ -944,7 +944,6 @@ static const AVFilterPad firequalizer_inputs[] = {
         .filter_frame   = filter_frame,
         .filter_frame   = filter_frame,
         .type           = AVMEDIA_TYPE_AUDIO,
         .type           = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad firequalizer_outputs[] = {
 static const AVFilterPad firequalizer_outputs[] = {
@@ -953,7 +952,6 @@ static const AVFilterPad firequalizer_outputs[] = {
         .request_frame  = request_frame,
         .request_frame  = request_frame,
         .type           = AVMEDIA_TYPE_AUDIO,
         .type           = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_firequalizer = {
 const AVFilter ff_af_firequalizer = {
@@ -963,7 +961,7 @@ const AVFilter ff_af_firequalizer = {
     .query_formats      = query_formats,
     .query_formats      = query_formats,
     .process_command    = process_command,
     .process_command    = process_command,
     .priv_size          = sizeof(FIREqualizerContext),
     .priv_size          = sizeof(FIREqualizerContext),
-    .inputs             = firequalizer_inputs,
-    .outputs            = firequalizer_outputs,
+    FILTER_INPUTS(firequalizer_inputs),
+    FILTER_OUTPUTS(firequalizer_outputs),
     .priv_class         = &firequalizer_class,
     .priv_class         = &firequalizer_class,
 };
 };

+ 2 - 4
libavfilter/af_flanger.c

@@ -209,7 +209,6 @@ static const AVFilterPad flanger_inputs[] = {
         .config_props = config_input,
         .config_props = config_input,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad flanger_outputs[] = {
 static const AVFilterPad flanger_outputs[] = {
@@ -217,7 +216,6 @@ static const AVFilterPad flanger_outputs[] = {
         .name          = "default",
         .name          = "default",
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_flanger = {
 const AVFilter ff_af_flanger = {
@@ -228,6 +226,6 @@ const AVFilter ff_af_flanger = {
     .priv_class    = &flanger_class,
     .priv_class    = &flanger_class,
     .init          = init,
     .init          = init,
     .uninit        = uninit,
     .uninit        = uninit,
-    .inputs        = flanger_inputs,
-    .outputs       = flanger_outputs,
+    FILTER_INPUTS(flanger_inputs),
+    FILTER_OUTPUTS(flanger_outputs),
 };
 };

+ 2 - 4
libavfilter/af_haas.c

@@ -204,7 +204,6 @@ static const AVFilterPad inputs[] = {
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -212,7 +211,6 @@ static const AVFilterPad outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_haas = {
 const AVFilter ff_af_haas = {
@@ -222,6 +220,6 @@ const AVFilter ff_af_haas = {
     .priv_size      = sizeof(HaasContext),
     .priv_size      = sizeof(HaasContext),
     .priv_class     = &haas_class,
     .priv_class     = &haas_class,
     .uninit         = uninit,
     .uninit         = uninit,
-    .inputs         = inputs,
-    .outputs        = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
 };
 };

+ 2 - 4
libavfilter/af_hdcd.c

@@ -1761,7 +1761,6 @@ static const AVFilterPad avfilter_af_hdcd_inputs[] = {
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad avfilter_af_hdcd_outputs[] = {
 static const AVFilterPad avfilter_af_hdcd_outputs[] = {
@@ -1769,7 +1768,6 @@ static const AVFilterPad avfilter_af_hdcd_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_hdcd = {
 const AVFilter ff_af_hdcd = {
@@ -1780,6 +1778,6 @@ const AVFilter ff_af_hdcd = {
     .init          = init,
     .init          = init,
     .uninit        = uninit,
     .uninit        = uninit,
     .query_formats = query_formats,
     .query_formats = query_formats,
-    .inputs        = avfilter_af_hdcd_inputs,
-    .outputs       = avfilter_af_hdcd_outputs,
+    FILTER_INPUTS(avfilter_af_hdcd_inputs),
+    FILTER_OUTPUTS(avfilter_af_hdcd_outputs),
 };
 };

+ 1 - 2
libavfilter/af_headphone.c

@@ -759,7 +759,6 @@ static const AVFilterPad outputs[] = {
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
         .config_props  = config_output,
         .config_props  = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_headphone = {
 const AVFilter ff_af_headphone = {
@@ -772,6 +771,6 @@ const AVFilter ff_af_headphone = {
     .query_formats = query_formats,
     .query_formats = query_formats,
     .activate      = activate,
     .activate      = activate,
     .inputs        = NULL,
     .inputs        = NULL,
-    .outputs       = outputs,
+    FILTER_OUTPUTS(outputs),
     .flags         = AVFILTER_FLAG_SLICE_THREADS | AVFILTER_FLAG_DYNAMIC_INPUTS,
     .flags         = AVFILTER_FLAG_SLICE_THREADS | AVFILTER_FLAG_DYNAMIC_INPUTS,
 };
 };

+ 1 - 2
libavfilter/af_join.c

@@ -536,7 +536,6 @@ static const AVFilterPad avfilter_af_join_outputs[] = {
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
         .config_props  = join_config_output,
         .config_props  = join_config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_join = {
 const AVFilter ff_af_join = {
@@ -550,6 +549,6 @@ const AVFilter ff_af_join = {
     .activate       = activate,
     .activate       = activate,
     .query_formats  = join_query_formats,
     .query_formats  = join_query_formats,
     .inputs         = NULL,
     .inputs         = NULL,
-    .outputs        = avfilter_af_join_outputs,
+    FILTER_OUTPUTS(avfilter_af_join_outputs),
     .flags          = AVFILTER_FLAG_DYNAMIC_INPUTS,
     .flags          = AVFILTER_FLAG_DYNAMIC_INPUTS,
 };
 };

+ 1 - 2
libavfilter/af_ladspa.c

@@ -774,7 +774,6 @@ static const AVFilterPad ladspa_outputs[] = {
         .config_props  = config_output,
         .config_props  = config_output,
         .request_frame = request_frame,
         .request_frame = request_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_ladspa = {
 const AVFilter ff_af_ladspa = {
@@ -787,6 +786,6 @@ const AVFilter ff_af_ladspa = {
     .query_formats = query_formats,
     .query_formats = query_formats,
     .process_command = process_command,
     .process_command = process_command,
     .inputs        = 0,
     .inputs        = 0,
-    .outputs       = ladspa_outputs,
+    FILTER_OUTPUTS(ladspa_outputs),
     .flags         = AVFILTER_FLAG_DYNAMIC_INPUTS,
     .flags         = AVFILTER_FLAG_DYNAMIC_INPUTS,
 };
 };

+ 2 - 4
libavfilter/af_loudnorm.c

@@ -896,7 +896,6 @@ static const AVFilterPad avfilter_af_loudnorm_inputs[] = {
         .config_props = config_input,
         .config_props = config_input,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad avfilter_af_loudnorm_outputs[] = {
 static const AVFilterPad avfilter_af_loudnorm_outputs[] = {
@@ -905,7 +904,6 @@ static const AVFilterPad avfilter_af_loudnorm_outputs[] = {
         .request_frame = request_frame,
         .request_frame = request_frame,
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_loudnorm = {
 const AVFilter ff_af_loudnorm = {
@@ -916,6 +914,6 @@ const AVFilter ff_af_loudnorm = {
     .query_formats = query_formats,
     .query_formats = query_formats,
     .init          = init,
     .init          = init,
     .uninit        = uninit,
     .uninit        = uninit,
-    .inputs        = avfilter_af_loudnorm_inputs,
-    .outputs       = avfilter_af_loudnorm_outputs,
+    FILTER_INPUTS(avfilter_af_loudnorm_inputs),
+    FILTER_OUTPUTS(avfilter_af_loudnorm_outputs),
 };
 };

+ 1 - 2
libavfilter/af_lv2.c

@@ -574,7 +574,6 @@ static const AVFilterPad lv2_outputs[] = {
         .config_props  = config_output,
         .config_props  = config_output,
         .request_frame = request_frame,
         .request_frame = request_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_lv2 = {
 const AVFilter ff_af_lv2 = {
@@ -586,6 +585,6 @@ const AVFilter ff_af_lv2 = {
     .uninit        = uninit,
     .uninit        = uninit,
     .query_formats = query_formats,
     .query_formats = query_formats,
     .inputs        = 0,
     .inputs        = 0,
-    .outputs       = lv2_outputs,
+    FILTER_OUTPUTS(lv2_outputs),
     .flags         = AVFILTER_FLAG_DYNAMIC_INPUTS,
     .flags         = AVFILTER_FLAG_DYNAMIC_INPUTS,
 };
 };

+ 2 - 4
libavfilter/af_mcompand.c

@@ -638,7 +638,6 @@ static const AVFilterPad mcompand_inputs[] = {
         .type           = AVMEDIA_TYPE_AUDIO,
         .type           = AVMEDIA_TYPE_AUDIO,
         .filter_frame   = filter_frame,
         .filter_frame   = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad mcompand_outputs[] = {
 static const AVFilterPad mcompand_outputs[] = {
@@ -648,7 +647,6 @@ static const AVFilterPad mcompand_outputs[] = {
         .request_frame = request_frame,
         .request_frame = request_frame,
         .config_props  = config_output,
         .config_props  = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 
 
@@ -660,6 +658,6 @@ const AVFilter ff_af_mcompand = {
     .priv_size      = sizeof(MCompandContext),
     .priv_size      = sizeof(MCompandContext),
     .priv_class     = &mcompand_class,
     .priv_class     = &mcompand_class,
     .uninit         = uninit,
     .uninit         = uninit,
-    .inputs         = mcompand_inputs,
-    .outputs        = mcompand_outputs,
+    FILTER_INPUTS(mcompand_inputs),
+    FILTER_OUTPUTS(mcompand_outputs),
 };
 };

+ 2 - 4
libavfilter/af_pan.c

@@ -435,7 +435,6 @@ static const AVFilterPad pan_inputs[] = {
         .config_props = config_props,
         .config_props = config_props,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad pan_outputs[] = {
 static const AVFilterPad pan_outputs[] = {
@@ -443,7 +442,6 @@ static const AVFilterPad pan_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_pan = {
 const AVFilter ff_af_pan = {
@@ -454,6 +452,6 @@ const AVFilter ff_af_pan = {
     .init          = init,
     .init          = init,
     .uninit        = uninit,
     .uninit        = uninit,
     .query_formats = query_formats,
     .query_formats = query_formats,
-    .inputs        = pan_inputs,
-    .outputs       = pan_outputs,
+    FILTER_INPUTS(pan_inputs),
+    FILTER_OUTPUTS(pan_outputs),
 };
 };

+ 2 - 4
libavfilter/af_replaygain.c

@@ -592,7 +592,6 @@ static const AVFilterPad replaygain_inputs[] = {
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad replaygain_outputs[] = {
 static const AVFilterPad replaygain_outputs[] = {
@@ -600,7 +599,6 @@ static const AVFilterPad replaygain_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_replaygain = {
 const AVFilter ff_af_replaygain = {
@@ -609,6 +607,6 @@ const AVFilter ff_af_replaygain = {
     .query_formats = query_formats,
     .query_formats = query_formats,
     .uninit        = uninit,
     .uninit        = uninit,
     .priv_size     = sizeof(ReplayGainContext),
     .priv_size     = sizeof(ReplayGainContext),
-    .inputs        = replaygain_inputs,
-    .outputs       = replaygain_outputs,
+    FILTER_INPUTS(replaygain_inputs),
+    FILTER_OUTPUTS(replaygain_outputs),
 };
 };

+ 2 - 4
libavfilter/af_rubberband.c

@@ -210,7 +210,6 @@ static const AVFilterPad rubberband_inputs[] = {
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
         .config_props  = config_input,
         .config_props  = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad rubberband_outputs[] = {
 static const AVFilterPad rubberband_outputs[] = {
@@ -218,7 +217,6 @@ static const AVFilterPad rubberband_outputs[] = {
         .name          = "default",
         .name          = "default",
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_rubberband = {
 const AVFilter ff_af_rubberband = {
@@ -229,7 +227,7 @@ const AVFilter ff_af_rubberband = {
     .priv_class    = &rubberband_class,
     .priv_class    = &rubberband_class,
     .uninit        = uninit,
     .uninit        = uninit,
     .activate      = activate,
     .activate      = activate,
-    .inputs        = rubberband_inputs,
-    .outputs       = rubberband_outputs,
+    FILTER_INPUTS(rubberband_inputs),
+    FILTER_OUTPUTS(rubberband_outputs),
     .process_command = process_command,
     .process_command = process_command,
 };
 };

+ 4 - 8
libavfilter/af_sidechaincompress.c

@@ -371,7 +371,6 @@ static const AVFilterPad sidechaincompress_inputs[] = {
         .name           = "sidechain",
         .name           = "sidechain",
         .type           = AVMEDIA_TYPE_AUDIO,
         .type           = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad sidechaincompress_outputs[] = {
 static const AVFilterPad sidechaincompress_outputs[] = {
@@ -380,7 +379,6 @@ static const AVFilterPad sidechaincompress_outputs[] = {
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
         .config_props  = config_output,
         .config_props  = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_sidechaincompress = {
 const AVFilter ff_af_sidechaincompress = {
@@ -391,8 +389,8 @@ const AVFilter ff_af_sidechaincompress = {
     .query_formats  = query_formats,
     .query_formats  = query_formats,
     .activate       = activate,
     .activate       = activate,
     .uninit         = uninit,
     .uninit         = uninit,
-    .inputs         = sidechaincompress_inputs,
-    .outputs        = sidechaincompress_outputs,
+    FILTER_INPUTS(sidechaincompress_inputs),
+    FILTER_OUTPUTS(sidechaincompress_outputs),
     .process_command = process_command,
     .process_command = process_command,
 };
 };
 #endif  /* CONFIG_SIDECHAINCOMPRESS_FILTER */
 #endif  /* CONFIG_SIDECHAINCOMPRESS_FILTER */
@@ -454,7 +452,6 @@ static const AVFilterPad acompressor_inputs[] = {
         .type           = AVMEDIA_TYPE_AUDIO,
         .type           = AVMEDIA_TYPE_AUDIO,
         .filter_frame   = acompressor_filter_frame,
         .filter_frame   = acompressor_filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad acompressor_outputs[] = {
 static const AVFilterPad acompressor_outputs[] = {
@@ -463,7 +460,6 @@ static const AVFilterPad acompressor_outputs[] = {
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
         .config_props  = compressor_config_output,
         .config_props  = compressor_config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_acompressor = {
 const AVFilter ff_af_acompressor = {
@@ -472,8 +468,8 @@ const AVFilter ff_af_acompressor = {
     .priv_size      = sizeof(SidechainCompressContext),
     .priv_size      = sizeof(SidechainCompressContext),
     .priv_class     = &acompressor_class,
     .priv_class     = &acompressor_class,
     .query_formats  = acompressor_query_formats,
     .query_formats  = acompressor_query_formats,
-    .inputs         = acompressor_inputs,
-    .outputs        = acompressor_outputs,
+    FILTER_INPUTS(acompressor_inputs),
+    FILTER_OUTPUTS(acompressor_outputs),
     .process_command = process_command,
     .process_command = process_command,
 };
 };
 #endif  /* CONFIG_ACOMPRESSOR_FILTER */
 #endif  /* CONFIG_ACOMPRESSOR_FILTER */

+ 2 - 4
libavfilter/af_silencedetect.c

@@ -240,7 +240,6 @@ static const AVFilterPad silencedetect_inputs[] = {
         .config_props = config_input,
         .config_props = config_input,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad silencedetect_outputs[] = {
 static const AVFilterPad silencedetect_outputs[] = {
@@ -248,7 +247,6 @@ static const AVFilterPad silencedetect_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_silencedetect = {
 const AVFilter ff_af_silencedetect = {
@@ -257,7 +255,7 @@ const AVFilter ff_af_silencedetect = {
     .priv_size     = sizeof(SilenceDetectContext),
     .priv_size     = sizeof(SilenceDetectContext),
     .query_formats = query_formats,
     .query_formats = query_formats,
     .uninit        = uninit,
     .uninit        = uninit,
-    .inputs        = silencedetect_inputs,
-    .outputs       = silencedetect_outputs,
+    FILTER_INPUTS(silencedetect_inputs),
+    FILTER_OUTPUTS(silencedetect_outputs),
     .priv_class    = &silencedetect_class,
     .priv_class    = &silencedetect_class,
 };
 };

+ 2 - 4
libavfilter/af_silenceremove.c

@@ -923,7 +923,6 @@ static const AVFilterPad silenceremove_inputs[] = {
         .config_props = config_input,
         .config_props = config_input,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad silenceremove_outputs[] = {
 static const AVFilterPad silenceremove_outputs[] = {
@@ -932,7 +931,6 @@ static const AVFilterPad silenceremove_outputs[] = {
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
         .request_frame = request_frame,
         .request_frame = request_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_silenceremove = {
 const AVFilter ff_af_silenceremove = {
@@ -943,6 +941,6 @@ const AVFilter ff_af_silenceremove = {
     .init          = init,
     .init          = init,
     .uninit        = uninit,
     .uninit        = uninit,
     .query_formats = query_formats,
     .query_formats = query_formats,
-    .inputs        = silenceremove_inputs,
-    .outputs       = silenceremove_outputs,
+    FILTER_INPUTS(silenceremove_inputs),
+    FILTER_OUTPUTS(silenceremove_outputs),
 };
 };

+ 2 - 4
libavfilter/af_sofalizer.c

@@ -1095,7 +1095,6 @@ static const AVFilterPad inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -1103,7 +1102,6 @@ static const AVFilterPad outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_sofalizer = {
 const AVFilter ff_af_sofalizer = {
@@ -1115,7 +1113,7 @@ const AVFilter ff_af_sofalizer = {
     .activate      = activate,
     .activate      = activate,
     .uninit        = uninit,
     .uninit        = uninit,
     .query_formats = query_formats,
     .query_formats = query_formats,
-    .inputs        = inputs,
-    .outputs       = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .flags         = AVFILTER_FLAG_SLICE_THREADS,
     .flags         = AVFILTER_FLAG_SLICE_THREADS,
 };
 };

+ 2 - 4
libavfilter/af_speechnorm.c

@@ -542,7 +542,6 @@ static const AVFilterPad inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -550,7 +549,6 @@ static const AVFilterPad outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_speechnorm = {
 const AVFilter ff_af_speechnorm = {
@@ -561,7 +559,7 @@ const AVFilter ff_af_speechnorm = {
     .priv_class      = &speechnorm_class,
     .priv_class      = &speechnorm_class,
     .activate        = activate,
     .activate        = activate,
     .uninit          = uninit,
     .uninit          = uninit,
-    .inputs          = inputs,
-    .outputs         = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .process_command = process_command,
     .process_command = process_command,
 };
 };

+ 2 - 4
libavfilter/af_stereotools.c

@@ -363,7 +363,6 @@ static const AVFilterPad inputs[] = {
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -371,7 +370,6 @@ static const AVFilterPad outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_stereotools = {
 const AVFilter ff_af_stereotools = {
@@ -381,8 +379,8 @@ const AVFilter ff_af_stereotools = {
     .priv_size      = sizeof(StereoToolsContext),
     .priv_size      = sizeof(StereoToolsContext),
     .priv_class     = &stereotools_class,
     .priv_class     = &stereotools_class,
     .uninit         = uninit,
     .uninit         = uninit,
-    .inputs         = inputs,
-    .outputs        = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .process_command = process_command,
     .process_command = process_command,
     .flags          = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
     .flags          = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
 };
 };

+ 2 - 4
libavfilter/af_stereowiden.c

@@ -144,7 +144,6 @@ static const AVFilterPad inputs[] = {
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -152,7 +151,6 @@ static const AVFilterPad outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_stereowiden = {
 const AVFilter ff_af_stereowiden = {
@@ -162,8 +160,8 @@ const AVFilter ff_af_stereowiden = {
     .priv_size      = sizeof(StereoWidenContext),
     .priv_size      = sizeof(StereoWidenContext),
     .priv_class     = &stereowiden_class,
     .priv_class     = &stereowiden_class,
     .uninit         = uninit,
     .uninit         = uninit,
-    .inputs         = inputs,
-    .outputs        = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .flags          = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
     .flags          = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
     .process_command = ff_filter_process_command,
     .process_command = ff_filter_process_command,
 };
 };

+ 2 - 4
libavfilter/af_superequalizer.c

@@ -326,7 +326,6 @@ static const AVFilterPad superequalizer_inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad superequalizer_outputs[] = {
 static const AVFilterPad superequalizer_outputs[] = {
@@ -335,7 +334,6 @@ static const AVFilterPad superequalizer_outputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_output,
         .config_props = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 #define AF AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
 #define AF AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
@@ -374,6 +372,6 @@ const AVFilter ff_af_superequalizer = {
     .init          = init,
     .init          = init,
     .activate      = activate,
     .activate      = activate,
     .uninit        = uninit,
     .uninit        = uninit,
-    .inputs        = superequalizer_inputs,
-    .outputs       = superequalizer_outputs,
+    FILTER_INPUTS(superequalizer_inputs),
+    FILTER_OUTPUTS(superequalizer_outputs),
 };
 };

+ 2 - 4
libavfilter/af_surround.c

@@ -1770,7 +1770,6 @@ static const AVFilterPad inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -1779,7 +1778,6 @@ static const AVFilterPad outputs[] = {
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
         .config_props  = config_output,
         .config_props  = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_surround = {
 const AVFilter ff_af_surround = {
@@ -1791,7 +1789,7 @@ const AVFilter ff_af_surround = {
     .init           = init,
     .init           = init,
     .uninit         = uninit,
     .uninit         = uninit,
     .activate       = activate,
     .activate       = activate,
-    .inputs         = inputs,
-    .outputs        = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .flags          = AVFILTER_FLAG_SLICE_THREADS,
     .flags          = AVFILTER_FLAG_SLICE_THREADS,
 };
 };

+ 2 - 4
libavfilter/af_tremolo.c

@@ -136,7 +136,6 @@ static const AVFilterPad avfilter_af_tremolo_inputs[] = {
         .config_props = config_input,
         .config_props = config_input,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad avfilter_af_tremolo_outputs[] = {
 static const AVFilterPad avfilter_af_tremolo_outputs[] = {
@@ -144,7 +143,6 @@ static const AVFilterPad avfilter_af_tremolo_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_tremolo = {
 const AVFilter ff_af_tremolo = {
@@ -154,6 +152,6 @@ const AVFilter ff_af_tremolo = {
     .priv_class    = &tremolo_class,
     .priv_class    = &tremolo_class,
     .uninit        = uninit,
     .uninit        = uninit,
     .query_formats = query_formats,
     .query_formats = query_formats,
-    .inputs        = avfilter_af_tremolo_inputs,
-    .outputs       = avfilter_af_tremolo_outputs,
+    FILTER_INPUTS(avfilter_af_tremolo_inputs),
+    FILTER_OUTPUTS(avfilter_af_tremolo_outputs),
 };
 };

+ 2 - 4
libavfilter/af_vibrato.c

@@ -174,7 +174,6 @@ static const AVFilterPad avfilter_af_vibrato_inputs[] = {
         .config_props = config_input,
         .config_props = config_input,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad avfilter_af_vibrato_outputs[] = {
 static const AVFilterPad avfilter_af_vibrato_outputs[] = {
@@ -182,7 +181,6 @@ static const AVFilterPad avfilter_af_vibrato_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_vibrato = {
 const AVFilter ff_af_vibrato = {
@@ -192,6 +190,6 @@ const AVFilter ff_af_vibrato = {
     .priv_class    = &vibrato_class,
     .priv_class    = &vibrato_class,
     .uninit        = uninit,
     .uninit        = uninit,
     .query_formats = query_formats,
     .query_formats = query_formats,
-    .inputs        = avfilter_af_vibrato_inputs,
-    .outputs       = avfilter_af_vibrato_outputs,
+    FILTER_INPUTS(avfilter_af_vibrato_inputs),
+    FILTER_OUTPUTS(avfilter_af_vibrato_outputs),
 };
 };

+ 2 - 4
libavfilter/af_volume.c

@@ -452,7 +452,6 @@ static const AVFilterPad avfilter_af_volume_inputs[] = {
         .type           = AVMEDIA_TYPE_AUDIO,
         .type           = AVMEDIA_TYPE_AUDIO,
         .filter_frame   = filter_frame,
         .filter_frame   = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad avfilter_af_volume_outputs[] = {
 static const AVFilterPad avfilter_af_volume_outputs[] = {
@@ -461,7 +460,6 @@ static const AVFilterPad avfilter_af_volume_outputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_output,
         .config_props = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_volume = {
 const AVFilter ff_af_volume = {
@@ -472,8 +470,8 @@ const AVFilter ff_af_volume = {
     .priv_class     = &volume_class,
     .priv_class     = &volume_class,
     .init           = init,
     .init           = init,
     .uninit         = uninit,
     .uninit         = uninit,
-    .inputs         = avfilter_af_volume_inputs,
-    .outputs        = avfilter_af_volume_outputs,
+    FILTER_INPUTS(avfilter_af_volume_inputs),
+    FILTER_OUTPUTS(avfilter_af_volume_outputs),
     .flags          = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
     .flags          = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
     .process_command = process_command,
     .process_command = process_command,
 };
 };

+ 2 - 4
libavfilter/af_volumedetect.c

@@ -134,7 +134,6 @@ static const AVFilterPad volumedetect_inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad volumedetect_outputs[] = {
 static const AVFilterPad volumedetect_outputs[] = {
@@ -142,7 +141,6 @@ static const AVFilterPad volumedetect_outputs[] = {
         .name = "default",
         .name = "default",
         .type = AVMEDIA_TYPE_AUDIO,
         .type = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_af_volumedetect = {
 const AVFilter ff_af_volumedetect = {
@@ -151,6 +149,6 @@ const AVFilter ff_af_volumedetect = {
     .priv_size     = sizeof(VolDetectContext),
     .priv_size     = sizeof(VolDetectContext),
     .query_formats = query_formats,
     .query_formats = query_formats,
     .uninit        = uninit,
     .uninit        = uninit,
-    .inputs        = volumedetect_inputs,
-    .outputs       = volumedetect_outputs,
+    FILTER_INPUTS(volumedetect_inputs),
+    FILTER_OUTPUTS(volumedetect_outputs),
 };
 };

+ 1 - 2
libavfilter/asink_anullsink.c

@@ -34,13 +34,12 @@ static const AVFilterPad avfilter_asink_anullsink_inputs[] = {
         .type           = AVMEDIA_TYPE_AUDIO,
         .type           = AVMEDIA_TYPE_AUDIO,
         .filter_frame   = null_filter_frame,
         .filter_frame   = null_filter_frame,
     },
     },
-    { NULL },
 };
 };
 
 
 const AVFilter ff_asink_anullsink = {
 const AVFilter ff_asink_anullsink = {
     .name        = "anullsink",
     .name        = "anullsink",
     .description = NULL_IF_CONFIG_SMALL("Do absolutely nothing with the input audio."),
     .description = NULL_IF_CONFIG_SMALL("Do absolutely nothing with the input audio."),
     .priv_size   = 0,
     .priv_size   = 0,
-    .inputs      = avfilter_asink_anullsink_inputs,
+    FILTER_INPUTS(avfilter_asink_anullsink_inputs),
     .outputs     = NULL,
     .outputs     = NULL,
 };
 };

+ 1 - 2
libavfilter/asrc_afirsrc.c

@@ -301,7 +301,6 @@ static const AVFilterPad afirsrc_outputs[] = {
         .request_frame = request_frame,
         .request_frame = request_frame,
         .config_props  = config_output,
         .config_props  = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_asrc_afirsrc = {
 const AVFilter ff_asrc_afirsrc = {
@@ -312,6 +311,6 @@ const AVFilter ff_asrc_afirsrc = {
     .uninit        = uninit,
     .uninit        = uninit,
     .priv_size     = sizeof(AudioFIRSourceContext),
     .priv_size     = sizeof(AudioFIRSourceContext),
     .inputs        = NULL,
     .inputs        = NULL,
-    .outputs       = afirsrc_outputs,
+    FILTER_OUTPUTS(afirsrc_outputs),
     .priv_class    = &afirsrc_class,
     .priv_class    = &afirsrc_class,
 };
 };

+ 1 - 2
libavfilter/asrc_anoisesrc.c

@@ -230,7 +230,6 @@ static const AVFilterPad anoisesrc_outputs[] = {
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
         .config_props  = config_props,
         .config_props  = config_props,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_asrc_anoisesrc = {
 const AVFilter ff_asrc_anoisesrc = {
@@ -240,6 +239,6 @@ const AVFilter ff_asrc_anoisesrc = {
     .priv_size     = sizeof(ANoiseSrcContext),
     .priv_size     = sizeof(ANoiseSrcContext),
     .inputs        = NULL,
     .inputs        = NULL,
     .activate      = activate,
     .activate      = activate,
-    .outputs       = anoisesrc_outputs,
+    FILTER_OUTPUTS(anoisesrc_outputs),
     .priv_class    = &anoisesrc_class,
     .priv_class    = &anoisesrc_class,
 };
 };

+ 1 - 2
libavfilter/asrc_anullsrc.c

@@ -134,7 +134,6 @@ static const AVFilterPad avfilter_asrc_anullsrc_outputs[] = {
         .type          = AVMEDIA_TYPE_AUDIO,
         .type          = AVMEDIA_TYPE_AUDIO,
         .config_props  = config_props,
         .config_props  = config_props,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_asrc_anullsrc = {
 const AVFilter ff_asrc_anullsrc = {
@@ -144,7 +143,7 @@ const AVFilter ff_asrc_anullsrc = {
     .query_formats = query_formats,
     .query_formats = query_formats,
     .priv_size     = sizeof(ANullContext),
     .priv_size     = sizeof(ANullContext),
     .inputs        = NULL,
     .inputs        = NULL,
-    .outputs       = avfilter_asrc_anullsrc_outputs,
+    FILTER_OUTPUTS(avfilter_asrc_anullsrc_outputs),
     .activate      = activate,
     .activate      = activate,
     .priv_class    = &anullsrc_class,
     .priv_class    = &anullsrc_class,
 };
 };

+ 1 - 2
libavfilter/asrc_flite.c

@@ -271,7 +271,6 @@ static const AVFilterPad flite_outputs[] = {
         .config_props  = config_props,
         .config_props  = config_props,
         .request_frame = request_frame,
         .request_frame = request_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_asrc_flite = {
 const AVFilter ff_asrc_flite = {
@@ -282,6 +281,6 @@ const AVFilter ff_asrc_flite = {
     .uninit        = uninit,
     .uninit        = uninit,
     .priv_size     = sizeof(FliteContext),
     .priv_size     = sizeof(FliteContext),
     .inputs        = NULL,
     .inputs        = NULL,
-    .outputs       = flite_outputs,
+    FILTER_OUTPUTS(flite_outputs),
     .priv_class    = &flite_class,
     .priv_class    = &flite_class,
 };
 };

+ 1 - 2
libavfilter/asrc_hilbert.c

@@ -171,7 +171,6 @@ static const AVFilterPad hilbert_outputs[] = {
         .request_frame = request_frame,
         .request_frame = request_frame,
         .config_props  = config_props,
         .config_props  = config_props,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_asrc_hilbert = {
 const AVFilter ff_asrc_hilbert = {
@@ -182,6 +181,6 @@ const AVFilter ff_asrc_hilbert = {
     .uninit        = uninit,
     .uninit        = uninit,
     .priv_size     = sizeof(HilbertContext),
     .priv_size     = sizeof(HilbertContext),
     .inputs        = NULL,
     .inputs        = NULL,
-    .outputs       = hilbert_outputs,
+    FILTER_OUTPUTS(hilbert_outputs),
     .priv_class    = &hilbert_class,
     .priv_class    = &hilbert_class,
 };
 };

+ 1 - 2
libavfilter/asrc_sinc.c

@@ -408,7 +408,6 @@ static const AVFilterPad sinc_outputs[] = {
         .config_props  = config_output,
         .config_props  = config_output,
         .request_frame = request_frame,
         .request_frame = request_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 #define AF AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
 #define AF AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
@@ -440,5 +439,5 @@ const AVFilter ff_asrc_sinc = {
     .query_formats = query_formats,
     .query_formats = query_formats,
     .uninit        = uninit,
     .uninit        = uninit,
     .inputs        = NULL,
     .inputs        = NULL,
-    .outputs       = sinc_outputs,
+    FILTER_OUTPUTS(sinc_outputs),
 };
 };

+ 1 - 2
libavfilter/asrc_sine.c

@@ -253,7 +253,6 @@ static const AVFilterPad sine_outputs[] = {
         .request_frame = request_frame,
         .request_frame = request_frame,
         .config_props  = config_props,
         .config_props  = config_props,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_asrc_sine = {
 const AVFilter ff_asrc_sine = {
@@ -264,6 +263,6 @@ const AVFilter ff_asrc_sine = {
     .uninit        = uninit,
     .uninit        = uninit,
     .priv_size     = sizeof(SineContext),
     .priv_size     = sizeof(SineContext),
     .inputs        = NULL,
     .inputs        = NULL,
-    .outputs       = sine_outputs,
+    FILTER_OUTPUTS(sine_outputs),
     .priv_class    = &sine_class,
     .priv_class    = &sine_class,
 };
 };

+ 2 - 4
libavfilter/avf_abitscope.c

@@ -248,7 +248,6 @@ static const AVFilterPad inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad outputs[] = {
 static const AVFilterPad outputs[] = {
@@ -257,7 +256,6 @@ static const AVFilterPad outputs[] = {
         .type         = AVMEDIA_TYPE_VIDEO,
         .type         = AVMEDIA_TYPE_VIDEO,
         .config_props = config_output,
         .config_props = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_avf_abitscope = {
 const AVFilter ff_avf_abitscope = {
@@ -265,8 +263,8 @@ const AVFilter ff_avf_abitscope = {
     .description   = NULL_IF_CONFIG_SMALL("Convert input audio to audio bit scope video output."),
     .description   = NULL_IF_CONFIG_SMALL("Convert input audio to audio bit scope video output."),
     .query_formats = query_formats,
     .query_formats = query_formats,
     .priv_size     = sizeof(AudioBitScopeContext),
     .priv_size     = sizeof(AudioBitScopeContext),
-    .inputs        = inputs,
-    .outputs       = outputs,
+    FILTER_INPUTS(inputs),
+    FILTER_OUTPUTS(outputs),
     .activate      = activate,
     .activate      = activate,
     .priv_class    = &abitscope_class,
     .priv_class    = &abitscope_class,
 };
 };

+ 2 - 4
libavfilter/avf_ahistogram.c

@@ -412,7 +412,6 @@ static const AVFilterPad ahistogram_inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad ahistogram_outputs[] = {
 static const AVFilterPad ahistogram_outputs[] = {
@@ -421,7 +420,6 @@ static const AVFilterPad ahistogram_outputs[] = {
         .type         = AVMEDIA_TYPE_VIDEO,
         .type         = AVMEDIA_TYPE_VIDEO,
         .config_props = config_output,
         .config_props = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_avf_ahistogram = {
 const AVFilter ff_avf_ahistogram = {
@@ -431,7 +429,7 @@ const AVFilter ff_avf_ahistogram = {
     .query_formats = query_formats,
     .query_formats = query_formats,
     .priv_size     = sizeof(AudioHistogramContext),
     .priv_size     = sizeof(AudioHistogramContext),
     .activate      = activate,
     .activate      = activate,
-    .inputs        = ahistogram_inputs,
-    .outputs       = ahistogram_outputs,
+    FILTER_INPUTS(ahistogram_inputs),
+    FILTER_OUTPUTS(ahistogram_outputs),
     .priv_class    = &ahistogram_class,
     .priv_class    = &ahistogram_class,
 };
 };

+ 1 - 2
libavfilter/avf_aphasemeter.c

@@ -380,7 +380,6 @@ static const AVFilterPad inputs[] = {
         .config_props = config_input,
         .config_props = config_input,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_avf_aphasemeter = {
 const AVFilter ff_avf_aphasemeter = {
@@ -390,7 +389,7 @@ const AVFilter ff_avf_aphasemeter = {
     .uninit        = uninit,
     .uninit        = uninit,
     .query_formats = query_formats,
     .query_formats = query_formats,
     .priv_size     = sizeof(AudioPhaseMeterContext),
     .priv_size     = sizeof(AudioPhaseMeterContext),
-    .inputs        = inputs,
+    FILTER_INPUTS(inputs),
     .outputs       = NULL,
     .outputs       = NULL,
     .priv_class    = &aphasemeter_class,
     .priv_class    = &aphasemeter_class,
     .flags         = AVFILTER_FLAG_DYNAMIC_OUTPUTS,
     .flags         = AVFILTER_FLAG_DYNAMIC_OUTPUTS,

+ 2 - 4
libavfilter/avf_avectorscope.c

@@ -403,7 +403,6 @@ static const AVFilterPad audiovectorscope_inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .config_props = config_input,
         .config_props = config_input,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad audiovectorscope_outputs[] = {
 static const AVFilterPad audiovectorscope_outputs[] = {
@@ -412,7 +411,6 @@ static const AVFilterPad audiovectorscope_outputs[] = {
         .type         = AVMEDIA_TYPE_VIDEO,
         .type         = AVMEDIA_TYPE_VIDEO,
         .config_props = config_output,
         .config_props = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_avf_avectorscope = {
 const AVFilter ff_avf_avectorscope = {
@@ -422,7 +420,7 @@ const AVFilter ff_avf_avectorscope = {
     .query_formats = query_formats,
     .query_formats = query_formats,
     .priv_size     = sizeof(AudioVectorScopeContext),
     .priv_size     = sizeof(AudioVectorScopeContext),
     .activate      = activate,
     .activate      = activate,
-    .inputs        = audiovectorscope_inputs,
-    .outputs       = audiovectorscope_outputs,
+    FILTER_INPUTS(audiovectorscope_inputs),
+    FILTER_OUTPUTS(audiovectorscope_outputs),
     .priv_class    = &avectorscope_class,
     .priv_class    = &avectorscope_class,
 };
 };

+ 2 - 4
libavfilter/avf_showcqt.c

@@ -1577,7 +1577,6 @@ static const AVFilterPad showcqt_inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = filter_frame,
         .filter_frame = filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad showcqt_outputs[] = {
 static const AVFilterPad showcqt_outputs[] = {
@@ -1587,7 +1586,6 @@ static const AVFilterPad showcqt_outputs[] = {
         .config_props  = config_output,
         .config_props  = config_output,
         .request_frame = request_frame,
         .request_frame = request_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_avf_showcqt = {
 const AVFilter ff_avf_showcqt = {
@@ -1597,7 +1595,7 @@ const AVFilter ff_avf_showcqt = {
     .uninit        = uninit,
     .uninit        = uninit,
     .query_formats = query_formats,
     .query_formats = query_formats,
     .priv_size     = sizeof(ShowCQTContext),
     .priv_size     = sizeof(ShowCQTContext),
-    .inputs        = showcqt_inputs,
-    .outputs       = showcqt_outputs,
+    FILTER_INPUTS(showcqt_inputs),
+    FILTER_OUTPUTS(showcqt_outputs),
     .priv_class    = &showcqt_class,
     .priv_class    = &showcqt_class,
 };
 };

+ 2 - 4
libavfilter/avf_showfreqs.c

@@ -552,7 +552,6 @@ static const AVFilterPad showfreqs_inputs[] = {
         .name         = "default",
         .name         = "default",
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad showfreqs_outputs[] = {
 static const AVFilterPad showfreqs_outputs[] = {
@@ -561,7 +560,6 @@ static const AVFilterPad showfreqs_outputs[] = {
         .type          = AVMEDIA_TYPE_VIDEO,
         .type          = AVMEDIA_TYPE_VIDEO,
         .config_props  = config_output,
         .config_props  = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_avf_showfreqs = {
 const AVFilter ff_avf_showfreqs = {
@@ -572,7 +570,7 @@ const AVFilter ff_avf_showfreqs = {
     .query_formats = query_formats,
     .query_formats = query_formats,
     .priv_size     = sizeof(ShowFreqsContext),
     .priv_size     = sizeof(ShowFreqsContext),
     .activate      = activate,
     .activate      = activate,
-    .inputs        = showfreqs_inputs,
-    .outputs       = showfreqs_outputs,
+    FILTER_INPUTS(showfreqs_inputs),
+    FILTER_OUTPUTS(showfreqs_outputs),
     .priv_class    = &showfreqs_class,
     .priv_class    = &showfreqs_class,
 };
 };

+ 2 - 4
libavfilter/avf_showspatial.c

@@ -346,7 +346,6 @@ static const AVFilterPad showspatial_inputs[] = {
         .name         = "default",
         .name         = "default",
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad showspatial_outputs[] = {
 static const AVFilterPad showspatial_outputs[] = {
@@ -355,7 +354,6 @@ static const AVFilterPad showspatial_outputs[] = {
         .type          = AVMEDIA_TYPE_VIDEO,
         .type          = AVMEDIA_TYPE_VIDEO,
         .config_props  = config_output,
         .config_props  = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_avf_showspatial = {
 const AVFilter ff_avf_showspatial = {
@@ -364,8 +362,8 @@ const AVFilter ff_avf_showspatial = {
     .uninit        = uninit,
     .uninit        = uninit,
     .query_formats = query_formats,
     .query_formats = query_formats,
     .priv_size     = sizeof(ShowSpatialContext),
     .priv_size     = sizeof(ShowSpatialContext),
-    .inputs        = showspatial_inputs,
-    .outputs       = showspatial_outputs,
+    FILTER_INPUTS(showspatial_inputs),
+    FILTER_OUTPUTS(showspatial_outputs),
     .activate      = spatial_activate,
     .activate      = spatial_activate,
     .priv_class    = &showspatial_class,
     .priv_class    = &showspatial_class,
     .flags         = AVFILTER_FLAG_SLICE_THREADS,
     .flags         = AVFILTER_FLAG_SLICE_THREADS,

+ 4 - 8
libavfilter/avf_showspectrum.c

@@ -1654,7 +1654,6 @@ static const AVFilterPad showspectrum_inputs[] = {
         .name         = "default",
         .name         = "default",
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad showspectrum_outputs[] = {
 static const AVFilterPad showspectrum_outputs[] = {
@@ -1663,7 +1662,6 @@ static const AVFilterPad showspectrum_outputs[] = {
         .type          = AVMEDIA_TYPE_VIDEO,
         .type          = AVMEDIA_TYPE_VIDEO,
         .config_props  = config_output,
         .config_props  = config_output,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_avf_showspectrum = {
 const AVFilter ff_avf_showspectrum = {
@@ -1672,8 +1670,8 @@ const AVFilter ff_avf_showspectrum = {
     .uninit        = uninit,
     .uninit        = uninit,
     .query_formats = query_formats,
     .query_formats = query_formats,
     .priv_size     = sizeof(ShowSpectrumContext),
     .priv_size     = sizeof(ShowSpectrumContext),
-    .inputs        = showspectrum_inputs,
-    .outputs       = showspectrum_outputs,
+    FILTER_INPUTS(showspectrum_inputs),
+    FILTER_OUTPUTS(showspectrum_outputs),
     .activate      = activate,
     .activate      = activate,
     .priv_class    = &showspectrum_class,
     .priv_class    = &showspectrum_class,
     .flags         = AVFILTER_FLAG_SLICE_THREADS,
     .flags         = AVFILTER_FLAG_SLICE_THREADS,
@@ -1838,7 +1836,6 @@ static const AVFilterPad showspectrumpic_inputs[] = {
         .type         = AVMEDIA_TYPE_AUDIO,
         .type         = AVMEDIA_TYPE_AUDIO,
         .filter_frame = showspectrumpic_filter_frame,
         .filter_frame = showspectrumpic_filter_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 static const AVFilterPad showspectrumpic_outputs[] = {
 static const AVFilterPad showspectrumpic_outputs[] = {
@@ -1848,7 +1845,6 @@ static const AVFilterPad showspectrumpic_outputs[] = {
         .config_props  = config_output,
         .config_props  = config_output,
         .request_frame = showspectrumpic_request_frame,
         .request_frame = showspectrumpic_request_frame,
     },
     },
-    { NULL }
 };
 };
 
 
 const AVFilter ff_avf_showspectrumpic = {
 const AVFilter ff_avf_showspectrumpic = {
@@ -1857,8 +1853,8 @@ const AVFilter ff_avf_showspectrumpic = {
     .uninit        = uninit,
     .uninit        = uninit,
     .query_formats = query_formats,
     .query_formats = query_formats,
     .priv_size     = sizeof(ShowSpectrumContext),
     .priv_size     = sizeof(ShowSpectrumContext),
-    .inputs        = showspectrumpic_inputs,
-    .outputs       = showspectrumpic_outputs,
+    FILTER_INPUTS(showspectrumpic_inputs),
+    FILTER_OUTPUTS(showspectrumpic_outputs),
     .priv_class    = &showspectrumpic_class,
     .priv_class    = &showspectrumpic_class,
     .flags         = AVFILTER_FLAG_SLICE_THREADS,
     .flags         = AVFILTER_FLAG_SLICE_THREADS,
 };
 };

Some files were not shown because too many files changed in this diff