From 2d9d4440519f22c092ac37ccd1a1a914564d00b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20B=C5=93sch?= Date: Wed, 28 Nov 2012 20:01:59 +0100 Subject: lavfi: convert remaining input/output list compound literals to named objects. This is following 568c70e79ee267426c15ef4603c69703f6a5884a. --- libavfilter/af_aconvert.c | 31 +++++++++++------ libavfilter/af_amerge.c | 23 +++++++------ libavfilter/af_aresample.c | 33 ++++++++++++------ libavfilter/af_asetnsamples.c | 44 ++++++++++++------------ libavfilter/af_astreamsync.c | 55 +++++++++++++++++------------- libavfilter/af_atempo.c | 38 ++++++++++++--------- libavfilter/af_earwax.c | 31 +++++++++++------ libavfilter/af_pan.c | 35 +++++++++++-------- libavfilter/af_silencedetect.c | 35 +++++++++++-------- libavfilter/af_volume.c | 30 ++++++++++------ libavfilter/af_volumedetect.c | 35 +++++++++++-------- libavfilter/asrc_aevalsrc.c | 22 +++++++----- libavfilter/asrc_flite.c | 27 +++++++-------- libavfilter/avf_concat.c | 4 +-- libavfilter/avf_showspectrum.c | 45 ++++++++++++------------ libavfilter/avf_showwaves.c | 45 ++++++++++++------------ libavfilter/f_ebur128.c | 21 +++++++----- libavfilter/f_sendcmd.c | 76 ++++++++++++++++++++++------------------- libavfilter/f_setpts.c | 40 +++++++++++----------- libavfilter/f_settb.c | 35 +++++++++++-------- libavfilter/sink_buffer.c | 72 +++++++++++++++++++++++++-------------- libavfilter/src_movie.c | 6 ++-- libavfilter/vf_alphaextract.c | 35 +++++++++++-------- libavfilter/vf_alphamerge.c | 58 +++++++++++++++++-------------- libavfilter/vf_ass.c | 43 +++++++++++++---------- libavfilter/vf_bbox.c | 38 ++++++++++++--------- libavfilter/vf_blackdetect.c | 44 +++++++++++++----------- libavfilter/vf_colormatrix.c | 38 +++++++++++++-------- libavfilter/vf_decimate.c | 47 ++++++++++++++------------ libavfilter/vf_deshake.c | 34 ++++++++++++------- libavfilter/vf_edgedetect.c | 39 +++++++++++---------- libavfilter/vf_framestep.c | 45 ++++++++++++------------ libavfilter/vf_hue.c | 43 ++++++++++++----------- libavfilter/vf_idet.c | 40 ++++++++++++++-------- libavfilter/vf_mp.c | 39 +++++++++++++-------- libavfilter/vf_removelogo.c | 41 ++++++++++++---------- libavfilter/vf_setfield.c | 33 +++++++++++------- libavfilter/vf_smartblur.c | 39 +++++++++++---------- libavfilter/vf_super2xsai.c | 39 ++++++++++++--------- libavfilter/vf_swapuv.c | 33 +++++++++++------- libavfilter/vf_thumbnail.c | 42 +++++++++++++---------- libavfilter/vf_tile.c | 41 ++++++++++++---------- libavfilter/vf_tinterlace.c | 39 ++++++++++++--------- libavfilter/vsrc_cellauto.c | 25 +++++++------- libavfilter/vsrc_life.c | 25 +++++++------- libavfilter/vsrc_mandelbrot.c | 20 ++++++----- libavfilter/vsrc_mptestsrc.c | 19 +++++++---- libavfilter/vsrc_testsrc.c | 77 +++++++++++++++++++++--------------------- 48 files changed, 1038 insertions(+), 761 deletions(-) diff --git a/libavfilter/af_aconvert.c b/libavfilter/af_aconvert.c index 22de54b..54f1fcd 100644 --- a/libavfilter/af_aconvert.c +++ b/libavfilter/af_aconvert.c @@ -154,6 +154,25 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamplesref) return ret; } +static const AVFilterPad aconvert_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .filter_frame = filter_frame, + .min_perms = AV_PERM_READ, + }, + { NULL } +}; + +static const AVFilterPad aconvert_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .config_props = config_output, + }, + { NULL } +}; + AVFilter avfilter_af_aconvert = { .name = "aconvert", .description = NULL_IF_CONFIG_SMALL("Convert the input audio to sample_fmt:channel_layout."), @@ -161,14 +180,6 @@ AVFilter avfilter_af_aconvert = { .init = init, .uninit = uninit, .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .filter_frame = filter_frame, - .min_perms = AV_PERM_READ, }, - { .name = NULL}}, - .outputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .config_props = config_output, }, - { .name = NULL}}, + .inputs = aconvert_inputs, + .outputs = aconvert_outputs, }; diff --git a/libavfilter/af_amerge.c b/libavfilter/af_amerge.c index 61770b4..44b71e4 100644 --- a/libavfilter/af_amerge.c +++ b/libavfilter/af_amerge.c @@ -323,6 +323,16 @@ static av_cold int init(AVFilterContext *ctx, const char *args) return 0; } +static const AVFilterPad amerge_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .config_props = config_output, + .request_frame = request_frame, + }, + { NULL } +}; + AVFilter avfilter_af_amerge = { .name = "amerge", .description = NULL_IF_CONFIG_SMALL("Merge two audio streams into " @@ -331,14 +341,7 @@ AVFilter avfilter_af_amerge = { .init = init, .uninit = uninit, .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) { { .name = NULL } }, - .outputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .config_props = config_output, - .request_frame = request_frame, }, - { .name = NULL } - }, - .priv_class = &amerge_class, + .inputs = NULL, + .outputs = amerge_outputs, + .priv_class = &amerge_class, }; diff --git a/libavfilter/af_aresample.c b/libavfilter/af_aresample.c index d3bab45..2dcfd69 100644 --- a/libavfilter/af_aresample.c +++ b/libavfilter/af_aresample.c @@ -253,6 +253,26 @@ static int request_frame(AVFilterLink *outlink) return ret; } +static const AVFilterPad aresample_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .filter_frame = filter_frame, + .min_perms = AV_PERM_READ, + }, + { NULL }, +}; + +static const AVFilterPad aresample_outputs[] = { + { + .name = "default", + .config_props = config_output, + .request_frame = request_frame, + .type = AVMEDIA_TYPE_AUDIO, + }, + { NULL }, +}; + AVFilter avfilter_af_aresample = { .name = "aresample", .description = NULL_IF_CONFIG_SMALL("Resample audio data."), @@ -260,15 +280,6 @@ AVFilter avfilter_af_aresample = { .uninit = uninit, .query_formats = query_formats, .priv_size = sizeof(AResampleContext), - - .inputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .filter_frame = filter_frame, - .min_perms = AV_PERM_READ, }, - { .name = NULL}}, - .outputs = (const AVFilterPad[]) {{ .name = "default", - .config_props = config_output, - .request_frame = request_frame, - .type = AVMEDIA_TYPE_AUDIO, }, - { .name = NULL}}, + .inputs = aresample_inputs, + .outputs = aresample_outputs, }; diff --git a/libavfilter/af_asetnsamples.c b/libavfilter/af_asetnsamples.c index d7bf038..ee80c1c 100644 --- a/libavfilter/af_asetnsamples.c +++ b/libavfilter/af_asetnsamples.c @@ -175,31 +175,33 @@ static int request_frame(AVFilterLink *outlink) return ret; } +static const AVFilterPad asetnsamples_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .filter_frame = filter_frame, + .min_perms = AV_PERM_READ | AV_PERM_WRITE, + }, + { NULL } +}; + +static const AVFilterPad asetnsamples_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .request_frame = request_frame, + .config_props = config_props_output, + }, + { NULL } +}; + AVFilter avfilter_af_asetnsamples = { .name = "asetnsamples", .description = NULL_IF_CONFIG_SMALL("Set the number of samples for each output audio frames."), .priv_size = sizeof(ASNSContext), .init = init, .uninit = uninit, - - .inputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .filter_frame = filter_frame, - .min_perms = AV_PERM_READ|AV_PERM_WRITE - }, - { .name = NULL } - }, - - .outputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .request_frame = request_frame, - .config_props = config_props_output, - }, - { .name = NULL } - }, - .priv_class = &asetnsamples_class, + .inputs = asetnsamples_inputs, + .outputs = asetnsamples_outputs, + .priv_class = &asetnsamples_class, }; diff --git a/libavfilter/af_astreamsync.c b/libavfilter/af_astreamsync.c index 44f6aab..269ffc1 100644 --- a/libavfilter/af_astreamsync.c +++ b/libavfilter/af_astreamsync.c @@ -180,6 +180,36 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples) return 0; } +static const AVFilterPad astreamsync_inputs[] = { + { + .name = "in1", + .type = AVMEDIA_TYPE_AUDIO, + .filter_frame = filter_frame, + .min_perms = AV_PERM_READ | AV_PERM_PRESERVE, + },{ + .name = "in2", + .type = AVMEDIA_TYPE_AUDIO, + .filter_frame = filter_frame, + .min_perms = AV_PERM_READ | AV_PERM_PRESERVE, + }, + { NULL } +}; + +static const AVFilterPad astreamsync_outputs[] = { + { + .name = "out1", + .type = AVMEDIA_TYPE_AUDIO, + .config_props = config_output, + .request_frame = request_frame, + },{ + .name = "out2", + .type = AVMEDIA_TYPE_AUDIO, + .config_props = config_output, + .request_frame = request_frame, + }, + { NULL } +}; + AVFilter avfilter_af_astreamsync = { .name = "astreamsync", .description = NULL_IF_CONFIG_SMALL("Copy two streams of audio data " @@ -187,27 +217,6 @@ AVFilter avfilter_af_astreamsync = { .priv_size = sizeof(AStreamSyncContext), .init = init, .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) { - { .name = "in1", - .type = AVMEDIA_TYPE_AUDIO, - .filter_frame = filter_frame, - .min_perms = AV_PERM_READ | AV_PERM_PRESERVE, }, - { .name = "in2", - .type = AVMEDIA_TYPE_AUDIO, - .filter_frame = filter_frame, - .min_perms = AV_PERM_READ | AV_PERM_PRESERVE, }, - { .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { .name = "out1", - .type = AVMEDIA_TYPE_AUDIO, - .config_props = config_output, - .request_frame = request_frame, }, - { .name = "out2", - .type = AVMEDIA_TYPE_AUDIO, - .config_props = config_output, - .request_frame = request_frame, }, - { .name = NULL } - }, + .inputs = astreamsync_inputs, + .outputs = astreamsync_outputs, }; diff --git a/libavfilter/af_atempo.c b/libavfilter/af_atempo.c index 77e5ff6..74bf9cc 100644 --- a/libavfilter/af_atempo.c +++ b/libavfilter/af_atempo.c @@ -1136,6 +1136,26 @@ static int process_command(AVFilterContext *ctx, return !strcmp(cmd, "tempo") ? yae_set_tempo(ctx, arg) : AVERROR(ENOSYS); } +static const AVFilterPad atempo_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .filter_frame = filter_frame, + .config_props = config_props, + .min_perms = AV_PERM_READ, + }, + { NULL } +}; + +static const AVFilterPad atempo_outputs[] = { + { + .name = "default", + .request_frame = request_frame, + .type = AVMEDIA_TYPE_AUDIO, + }, + { NULL } +}; + AVFilter avfilter_af_atempo = { .name = "atempo", .description = NULL_IF_CONFIG_SMALL("Adjust audio tempo."), @@ -1144,20 +1164,6 @@ AVFilter avfilter_af_atempo = { .query_formats = query_formats, .process_command = process_command, .priv_size = sizeof(ATempoContext), - - .inputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .filter_frame = filter_frame, - .config_props = config_props, - .min_perms = AV_PERM_READ, }, - { .name = NULL} - }, - - .outputs = (const AVFilterPad[]) { - { .name = "default", - .request_frame = request_frame, - .type = AVMEDIA_TYPE_AUDIO, }, - { .name = NULL} - }, + .inputs = atempo_inputs, + .outputs = atempo_outputs, }; diff --git a/libavfilter/af_earwax.c b/libavfilter/af_earwax.c index 56a6ae1..4a2b8b7 100644 --- a/libavfilter/af_earwax.c +++ b/libavfilter/af_earwax.c @@ -153,19 +153,30 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples) return ret; } +static const AVFilterPad earwax_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .filter_frame = filter_frame, + .config_props = config_input, + .min_perms = AV_PERM_READ, + }, + { NULL } +}; + +static const AVFilterPad earwax_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + }, + { NULL } +}; + AVFilter avfilter_af_earwax = { .name = "earwax", .description = NULL_IF_CONFIG_SMALL("Widen the stereo image."), .query_formats = query_formats, .priv_size = sizeof(EarwaxContext), - .inputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .filter_frame = filter_frame, - .config_props = config_input, - .min_perms = AV_PERM_READ, }, - { .name = NULL}}, - - .outputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_AUDIO, }, - { .name = NULL}}, + .inputs = earwax_inputs, + .outputs = earwax_outputs, }; diff --git a/libavfilter/af_pan.c b/libavfilter/af_pan.c index 3531058..922025a 100644 --- a/libavfilter/af_pan.c +++ b/libavfilter/af_pan.c @@ -376,6 +376,25 @@ static av_cold void uninit(AVFilterContext *ctx) swr_free(&pan->swr); } +static const AVFilterPad pan_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .config_props = config_props, + .filter_frame = filter_frame, + .min_perms = AV_PERM_READ, + }, + { NULL } +}; + +static const AVFilterPad pan_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + }, + { NULL } +}; + AVFilter avfilter_af_pan = { .name = "pan", .description = NULL_IF_CONFIG_SMALL("Remix channels with coefficients (panning)."), @@ -383,18 +402,6 @@ AVFilter avfilter_af_pan = { .init = init, .uninit = uninit, .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .config_props = config_props, - .filter_frame = filter_frame, - .min_perms = AV_PERM_READ, }, - { .name = NULL} - }, - .outputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_AUDIO, }, - { .name = NULL} - }, + .inputs = pan_inputs, + .outputs = pan_outputs, }; diff --git a/libavfilter/af_silencedetect.c b/libavfilter/af_silencedetect.c index 7ae9026..f5fccc5 100644 --- a/libavfilter/af_silencedetect.c +++ b/libavfilter/af_silencedetect.c @@ -162,24 +162,31 @@ static int query_formats(AVFilterContext *ctx) return 0; } +static const AVFilterPad silencedetect_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .get_audio_buffer = ff_null_get_audio_buffer, + .filter_frame = filter_frame, + }, + { NULL } +}; + +static const AVFilterPad silencedetect_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + }, + { NULL } +}; + AVFilter avfilter_af_silencedetect = { .name = "silencedetect", .description = NULL_IF_CONFIG_SMALL("Detect silence."), .priv_size = sizeof(SilenceDetectContext), .init = init, .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .get_audio_buffer = ff_null_get_audio_buffer, - .filter_frame = filter_frame, }, - { .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_AUDIO, }, - { .name = NULL } - }, - .priv_class = &silencedetect_class, + .inputs = silencedetect_inputs, + .outputs = silencedetect_outputs, + .priv_class = &silencedetect_class, }; diff --git a/libavfilter/af_volume.c b/libavfilter/af_volume.c index 7c45029..7608083 100644 --- a/libavfilter/af_volume.c +++ b/libavfilter/af_volume.c @@ -172,20 +172,30 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples) return ff_filter_frame(outlink, insamples); } +static const AVFilterPad volume_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .filter_frame = filter_frame, + .min_perms = AV_PERM_READ | AV_PERM_WRITE, + }, + { NULL }, +}; + +static const AVFilterPad volume_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + }, + { NULL }, +}; + AVFilter avfilter_af_volume = { .name = "volume", .description = NULL_IF_CONFIG_SMALL("Change input volume."), .query_formats = query_formats, .priv_size = sizeof(VolumeContext), .init = init, - - .inputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .filter_frame = filter_frame, - .min_perms = AV_PERM_READ|AV_PERM_WRITE}, - { .name = NULL}}, - - .outputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_AUDIO, }, - { .name = NULL}}, + .inputs = volume_inputs, + .outputs = volume_outputs, }; diff --git a/libavfilter/af_volumedetect.c b/libavfilter/af_volumedetect.c index 5353e50..01f30a6 100644 --- a/libavfilter/af_volumedetect.c +++ b/libavfilter/af_volumedetect.c @@ -131,6 +131,25 @@ static void uninit(AVFilterContext *ctx) print_stats(ctx); } +static const AVFilterPad volumedetect_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .get_audio_buffer = ff_null_get_audio_buffer, + .filter_frame = filter_frame, + .min_perms = AV_PERM_READ, + }, + { NULL } +}; + +static const AVFilterPad volumedetect_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + }, + { NULL } +}; + AVFilter avfilter_af_volumedetect = { .name = "volumedetect", .description = NULL_IF_CONFIG_SMALL("Detect audio volume."), @@ -138,18 +157,6 @@ AVFilter avfilter_af_volumedetect = { .priv_size = sizeof(VolDetectContext), .query_formats = query_formats, .uninit = uninit, - - .inputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .get_audio_buffer = ff_null_get_audio_buffer, - .filter_frame = filter_frame, - .min_perms = AV_PERM_READ, }, - { .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_AUDIO, }, - { .name = NULL } - }, + .inputs = volumedetect_inputs, + .outputs = volumedetect_outputs, }; diff --git a/libavfilter/asrc_aevalsrc.c b/libavfilter/asrc_aevalsrc.c index a834bc2..eaf7975 100644 --- a/libavfilter/asrc_aevalsrc.c +++ b/libavfilter/asrc_aevalsrc.c @@ -242,6 +242,16 @@ static int request_frame(AVFilterLink *outlink) return 0; } +static const AVFilterPad aevalsrc_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .config_props = config_props, + .request_frame = request_frame, + }, + { NULL } +}; + AVFilter avfilter_asrc_aevalsrc = { .name = "aevalsrc", .description = NULL_IF_CONFIG_SMALL("Generate an audio signal generated by an expression."), @@ -250,13 +260,7 @@ AVFilter avfilter_asrc_aevalsrc = { .init = init, .uninit = uninit, .priv_size = sizeof(EvalContext), - - .inputs = (const AVFilterPad[]) {{ .name = NULL}}, - - .outputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .config_props = config_props, - .request_frame = request_frame, }, - { .name = NULL}}, - .priv_class = &aevalsrc_class, + .inputs = NULL, + .outputs = aevalsrc_outputs, + .priv_class = &aevalsrc_class, }; diff --git a/libavfilter/asrc_flite.c b/libavfilter/asrc_flite.c index 0718699..04901da 100644 --- a/libavfilter/asrc_flite.c +++ b/libavfilter/asrc_flite.c @@ -268,6 +268,16 @@ static int request_frame(AVFilterLink *outlink) return ff_filter_frame(outlink, samplesref); } +static const AVFilterPad flite_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .config_props = config_props, + .request_frame = request_frame, + }, + { NULL } +}; + AVFilter avfilter_asrc_flite = { .name = "flite", .description = NULL_IF_CONFIG_SMALL("Synthesize voice from text using libflite."), @@ -275,18 +285,7 @@ AVFilter avfilter_asrc_flite = { .init = init, .uninit = uninit, .priv_size = sizeof(FliteContext), - - .inputs = (const AVFilterPad[]) {{ .name = NULL}}, - - .outputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .config_props = config_props, - .request_frame = request_frame, - }, - { .name = NULL } - }, - - .priv_class = &flite_class, + .inputs = NULL, + .outputs = flite_outputs, + .priv_class = &flite_class, }; diff --git a/libavfilter/avf_concat.c b/libavfilter/avf_concat.c index 22171c4..de4c47c 100644 --- a/libavfilter/avf_concat.c +++ b/libavfilter/avf_concat.c @@ -445,7 +445,7 @@ AVFilter avfilter_avf_concat = { .uninit = uninit, .query_formats = query_formats, .priv_size = sizeof(ConcatContext), - .inputs = (const AVFilterPad[]) { { .name = NULL } }, - .outputs = (const AVFilterPad[]) { { .name = NULL } }, + .inputs = NULL, + .outputs = NULL, .priv_class = &concat_class, }; diff --git a/libavfilter/avf_showspectrum.c b/libavfilter/avf_showspectrum.c index a1e19cb..5a0aea2 100644 --- a/libavfilter/avf_showspectrum.c +++ b/libavfilter/avf_showspectrum.c @@ -298,6 +298,26 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples) return 0; } +static const AVFilterPad showspectrum_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .filter_frame = filter_frame, + .min_perms = AV_PERM_READ, + }, + { NULL } +}; + +static const AVFilterPad showspectrum_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .config_props = config_output, + .request_frame = request_frame, + }, + { NULL } +}; + AVFilter avfilter_avf_showspectrum = { .name = "showspectrum", .description = NULL_IF_CONFIG_SMALL("Convert input audio to a spectrum video output."), @@ -305,26 +325,7 @@ AVFilter avfilter_avf_showspectrum = { .uninit = uninit, .query_formats = query_formats, .priv_size = sizeof(ShowSpectrumContext), - - .inputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .filter_frame = filter_frame, - .min_perms = AV_PERM_READ, - }, - { .name = NULL } - }, - - .outputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .config_props = config_output, - .request_frame = request_frame, - }, - { .name = NULL } - }, - - .priv_class = &showspectrum_class, + .inputs = showspectrum_inputs, + .outputs = showspectrum_outputs, + .priv_class = &showspectrum_class, }; diff --git a/libavfilter/avf_showwaves.c b/libavfilter/avf_showwaves.c index dcae98c..765e998 100644 --- a/libavfilter/avf_showwaves.c +++ b/libavfilter/avf_showwaves.c @@ -228,6 +228,26 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples) return 0; } +static const AVFilterPad showwaves_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .filter_frame = filter_frame, + .min_perms = AV_PERM_READ, + }, + { NULL } +}; + +static const AVFilterPad showwaves_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .config_props = config_output, + .request_frame = request_frame, + }, + { NULL } +}; + AVFilter avfilter_avf_showwaves = { .name = "showwaves", .description = NULL_IF_CONFIG_SMALL("Convert input audio to a video output."), @@ -235,26 +255,7 @@ AVFilter avfilter_avf_showwaves = { .uninit = uninit, .query_formats = query_formats, .priv_size = sizeof(ShowWavesContext), - - .inputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .filter_frame = filter_frame, - .min_perms = AV_PERM_READ, - }, - { .name = NULL } - }, - - .outputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .config_props = config_output, - .request_frame = request_frame, - }, - { .name = NULL } - }, - - .priv_class = &showwaves_class, + .inputs = showwaves_inputs, + .outputs = showwaves_outputs, + .priv_class = &showwaves_class, }; diff --git a/libavfilter/f_ebur128.c b/libavfilter/f_ebur128.c index f450ddc..2da7445 100644 --- a/libavfilter/f_ebur128.c +++ b/libavfilter/f_ebur128.c @@ -728,6 +728,16 @@ static av_cold void uninit(AVFilterContext *ctx) avfilter_unref_bufferp(&ebur128->outpicref); } +static const AVFilterPad ebur128_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .get_audio_buffer = ff_null_get_audio_buffer, + .filter_frame = filter_frame, + }, + { NULL } +}; + AVFilter avfilter_af_ebur128 = { .name = "ebur128", .description = NULL_IF_CONFIG_SMALL("EBU R128 scanner."), @@ -735,13 +745,6 @@ AVFilter avfilter_af_ebur128 = { .init = init, .uninit = uninit, .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .get_audio_buffer = ff_null_get_audio_buffer, - .filter_frame = filter_frame, }, - { .name = NULL } - }, - .outputs = NULL, + .inputs = ebur128_inputs, + .outputs = NULL, }; diff --git a/libavfilter/f_sendcmd.c b/libavfilter/f_sendcmd.c index b28eea2..a0925d0 100644 --- a/libavfilter/f_sendcmd.c +++ b/libavfilter/f_sendcmd.c @@ -518,6 +518,25 @@ end: #if CONFIG_SENDCMD_FILTER +static const AVFilterPad sendcmd_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .get_video_buffer = ff_null_get_video_buffer, + .start_frame = process_frame, + .end_frame = ff_null_end_frame, + }, + { NULL } +}; + +static const AVFilterPad sendcmd_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + }, + { NULL } +}; + AVFilter avfilter_vf_sendcmd = { .name = "sendcmd", .description = NULL_IF_CONFIG_SMALL("Send commands to filters."), @@ -525,30 +544,32 @@ AVFilter avfilter_vf_sendcmd = { .init = init, .uninit = uninit, .priv_size = sizeof(SendCmdContext), - - .inputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .get_video_buffer = ff_null_get_video_buffer, - .start_frame = process_frame, - .end_frame = ff_null_end_frame, - }, - { .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - }, - { .name = NULL } - }, + .inputs = sendcmd_inputs, + .outputs = sendcmd_outputs, }; #endif #if CONFIG_ASENDCMD_FILTER +static const AVFilterPad asendcmd_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .get_audio_buffer = ff_null_get_audio_buffer, + .filter_frame = process_frame, + }, + { NULL } +}; + +static const AVFilterPad asendcmd_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + }, + { NULL } +}; + AVFilter avfilter_af_asendcmd = { .name = "asendcmd", .description = NULL_IF_CONFIG_SMALL("Send commands to filters."), @@ -556,23 +577,8 @@ AVFilter avfilter_af_asendcmd = { .init = init, .uninit = uninit, .priv_size = sizeof(SendCmdContext), - - .inputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .get_audio_buffer = ff_null_get_audio_buffer, - .filter_frame = process_frame, - }, - { .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - }, - { .name = NULL } - }, + .inputs = asendcmd_inputs, + .outputs = asendcmd_outputs, }; #endif diff --git a/libavfilter/f_setpts.c b/libavfilter/f_setpts.c index 4746587..e5636e2 100644 --- a/libavfilter/f_setpts.c +++ b/libavfilter/f_setpts.c @@ -183,31 +183,33 @@ static av_cold void uninit(AVFilterContext *ctx) } #if CONFIG_ASETPTS_FILTER +static const AVFilterPad avfilter_af_asetpts_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .get_audio_buffer = ff_null_get_audio_buffer, + .config_props = config_input, + .filter_frame = filter_frame, + }, + { NULL } +}; + +static const AVFilterPad avfilter_af_asetpts_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + }, + { NULL } +}; + AVFilter avfilter_af_asetpts = { .name = "asetpts", .description = NULL_IF_CONFIG_SMALL("Set PTS for the output audio frame."), .init = init, .uninit = uninit, - .priv_size = sizeof(SetPTSContext), - - .inputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .get_audio_buffer = ff_null_get_audio_buffer, - .config_props = config_input, - .filter_frame = filter_frame, - }, - { .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - }, - { .name = NULL } - }, + .inputs = avfilter_af_asetpts_inputs, + .outputs = avfilter_af_asetpts_outputs, }; #endif /* CONFIG_ASETPTS_FILTER */ diff --git a/libavfilter/f_settb.c b/libavfilter/f_settb.c index 5b9434e..99ea7a7 100644 --- a/libavfilter/f_settb.c +++ b/libavfilter/f_settb.c @@ -152,25 +152,32 @@ AVFilter avfilter_vf_settb = { #endif #if CONFIG_ASETTB_FILTER +static const AVFilterPad avfilter_af_asettb_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .get_audio_buffer = ff_null_get_audio_buffer, + .filter_frame = filter_frame, + }, + { NULL } +}; + +static const AVFilterPad avfilter_af_asettb_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .config_props = config_output_props, + }, + { NULL } +}; + AVFilter avfilter_af_asettb = { .name = "asettb", .description = NULL_IF_CONFIG_SMALL("Set timebase for the audio output link."), .init = init, .priv_size = sizeof(SetTBContext), - - .inputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .get_audio_buffer = ff_null_get_audio_buffer, - .filter_frame = filter_frame, }, - { .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .config_props = config_output_props, }, - { .name = NULL} - }, + .inputs = avfilter_af_asettb_inputs, + .outputs = avfilter_af_asettb_outputs, }; #endif diff --git a/libavfilter/sink_buffer.c b/libavfilter/sink_buffer.c index f0878f0..88fefba 100644 --- a/libavfilter/sink_buffer.c +++ b/libavfilter/sink_buffer.c @@ -234,6 +234,16 @@ static int vsink_query_formats(AVFilterContext *ctx) return 0; } +static const AVFilterPad ffbuffersink_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .end_frame = end_frame, + .min_perms = AV_PERM_READ | AV_PERM_PRESERVE, + }, + { NULL }, +}; + AVFilter avfilter_vsink_ffbuffersink = { .name = "ffbuffersink", .description = NULL_IF_CONFIG_SMALL("Buffer video frames, and make them available to the end of the filter graph."), @@ -242,13 +252,18 @@ AVFilter avfilter_vsink_ffbuffersink = { .uninit = vsink_uninit, .query_formats = vsink_query_formats, + .inputs = ffbuffersink_inputs, + .outputs = NULL, +}; - .inputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .end_frame = end_frame, - .min_perms = AV_PERM_READ | AV_PERM_PRESERVE, }, - { .name = NULL }}, - .outputs = (const AVFilterPad[]) {{ .name = NULL }}, +static const AVFilterPad buffersink_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .end_frame = end_frame, + .min_perms = AV_PERM_READ | AV_PERM_PRESERVE, + }, + { NULL }, }; AVFilter avfilter_vsink_buffersink = { @@ -259,13 +274,8 @@ AVFilter avfilter_vsink_buffersink = { .uninit = vsink_uninit, .query_formats = vsink_query_formats, - - .inputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .end_frame = end_frame, - .min_perms = AV_PERM_READ | AV_PERM_PRESERVE, }, - { .name = NULL }}, - .outputs = (const AVFilterPad[]) {{ .name = NULL }}, + .inputs = buffersink_inputs, + .outputs = NULL, }; static int filter_frame(AVFilterLink *link, AVFilterBufferRef *samplesref) @@ -328,6 +338,16 @@ static int asink_query_formats(AVFilterContext *ctx) return 0; } +static const AVFilterPad ffabuffersink_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .filter_frame = filter_frame, + .min_perms = AV_PERM_READ | AV_PERM_PRESERVE, + }, + { NULL }, +}; + AVFilter avfilter_asink_ffabuffersink = { .name = "ffabuffersink", .description = NULL_IF_CONFIG_SMALL("Buffer audio frames, and make them available to the end of the filter graph."), @@ -335,13 +355,18 @@ AVFilter avfilter_asink_ffabuffersink = { .uninit = asink_uninit, .priv_size = sizeof(BufferSinkContext), .query_formats = asink_query_formats, + .inputs = ffabuffersink_inputs, + .outputs = NULL, +}; - .inputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .filter_frame = filter_frame, - .min_perms = AV_PERM_READ | AV_PERM_PRESERVE, }, - { .name = NULL }}, - .outputs = (const AVFilterPad[]) {{ .name = NULL }}, +static const AVFilterPad abuffersink_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .filter_frame = filter_frame, + .min_perms = AV_PERM_READ | AV_PERM_PRESERVE, + }, + { NULL }, }; AVFilter avfilter_asink_abuffersink = { @@ -351,13 +376,8 @@ AVFilter avfilter_asink_abuffersink = { .uninit = asink_uninit, .priv_size = sizeof(BufferSinkContext), .query_formats = asink_query_formats, - - .inputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .filter_frame = filter_frame, - .min_perms = AV_PERM_READ | AV_PERM_PRESERVE, }, - { .name = NULL }}, - .outputs = (const AVFilterPad[]) {{ .name = NULL }}, + .inputs = abuffersink_inputs, + .outputs = NULL, }; /* Libav compatibility API */ diff --git a/libavfilter/src_movie.c b/libavfilter/src_movie.c index 4a15210..bd45766 100644 --- a/libavfilter/src_movie.c +++ b/libavfilter/src_movie.c @@ -612,7 +612,7 @@ AVFilter avfilter_avsrc_movie = { .query_formats = movie_query_formats, .inputs = NULL, - .outputs = (const AVFilterPad[]) {{ .name = NULL }}, + .outputs = NULL, .priv_class = &movie_class, }; @@ -636,8 +636,8 @@ AVFilter avfilter_avsrc_amovie = { .uninit = movie_uninit, .query_formats = movie_query_formats, - .inputs = (const AVFilterPad[]) {{ .name = NULL }}, - .outputs = (const AVFilterPad[]) {{ .name = NULL }}, + .inputs = NULL, + .outputs = NULL, .priv_class = &amovie_class, }; diff --git a/libavfilter/vf_alphaextract.c b/libavfilter/vf_alphaextract.c index 102af9d..35402f6 100644 --- a/libavfilter/vf_alphaextract.c +++ b/libavfilter/vf_alphaextract.c @@ -94,24 +94,31 @@ static int draw_slice(AVFilterLink *inlink, int y0, int h, int slice_dir) return ff_draw_slice(inlink->dst->outputs[0], y0, h, slice_dir); } +static const AVFilterPad alphaextract_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .config_props = config_input, + .draw_slice = draw_slice, + .min_perms = AV_PERM_READ, + }, + { NULL } +}; + +static const AVFilterPad alphaextract_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + }, + { NULL } +}; + AVFilter avfilter_vf_alphaextract = { .name = "alphaextract", .description = NULL_IF_CONFIG_SMALL("Extract an alpha channel as a " "grayscale image component."), .priv_size = sizeof(AlphaExtractContext), .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .config_props = config_input, - .draw_slice = draw_slice, - .min_perms = AV_PERM_READ }, - { .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, }, - { .name = NULL } - }, + .inputs = alphaextract_inputs, + .outputs = alphaextract_outputs, }; diff --git a/libavfilter/vf_alphamerge.c b/libavfilter/vf_alphamerge.c index 51868de..1ec9d00 100644 --- a/libavfilter/vf_alphamerge.c +++ b/libavfilter/vf_alphamerge.c @@ -176,6 +176,37 @@ static int request_frame(AVFilterLink *outlink) return 0; } +static const AVFilterPad alphamerge_inputs[] = { + { + .name = "main", + .type = AVMEDIA_TYPE_VIDEO, + .config_props = config_input_main, + .get_video_buffer = ff_null_get_video_buffer, + .start_frame = start_frame, + .draw_slice = draw_slice, + .end_frame = end_frame, + .min_perms = AV_PERM_READ | AV_PERM_WRITE | AV_PERM_PRESERVE, + },{ + .name = "alpha", + .type = AVMEDIA_TYPE_VIDEO, + .start_frame = start_frame, + .draw_slice = draw_slice, + .end_frame = end_frame, + .min_perms = AV_PERM_READ | AV_PERM_PRESERVE, + }, + { NULL } +}; + +static const AVFilterPad alphamerge_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .config_props = config_output, + .request_frame = request_frame, + }, + { NULL } +}; + AVFilter avfilter_vf_alphamerge = { .name = "alphamerge", .description = NULL_IF_CONFIG_SMALL("Copy the luma value of the second " @@ -183,29 +214,6 @@ AVFilter avfilter_vf_alphamerge = { .uninit = uninit, .priv_size = sizeof(AlphaMergeContext), .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) { - { .name = "main", - .type = AVMEDIA_TYPE_VIDEO, - .config_props = config_input_main, - .get_video_buffer = ff_null_get_video_buffer, - .start_frame = start_frame, - .draw_slice = draw_slice, - .end_frame = end_frame, - .min_perms = AV_PERM_READ | AV_PERM_WRITE | AV_PERM_PRESERVE }, - { .name = "alpha", - .type = AVMEDIA_TYPE_VIDEO, - .start_frame = start_frame, - .draw_slice = draw_slice, - .end_frame = end_frame, - .min_perms = AV_PERM_READ | AV_PERM_PRESERVE }, - { .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .config_props = config_output, - .request_frame = request_frame }, - { .name = NULL } - }, + .inputs = alphamerge_inputs, + .outputs = alphamerge_outputs, }; diff --git a/libavfilter/vf_ass.c b/libavfilter/vf_ass.c index dab4f68..a259735 100644 --- a/libavfilter/vf_ass.c +++ b/libavfilter/vf_ass.c @@ -200,6 +200,28 @@ static int end_frame(AVFilterLink *inlink) return ff_end_frame(outlink); } +static const AVFilterPad ass_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .get_video_buffer = ff_null_get_video_buffer, + .start_frame = ff_null_start_frame, + .draw_slice = null_draw_slice, + .end_frame = end_frame, + .config_props = config_input, + .min_perms = AV_PERM_WRITE | AV_PERM_READ, + }, + { NULL } +}; + +static const AVFilterPad ass_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + }, + { NULL } +}; + AVFilter avfilter_vf_ass = { .name = "ass", .description = NULL_IF_CONFIG_SMALL("Render subtitles onto input video using the libass library."), @@ -207,22 +229,7 @@ AVFilter avfilter_vf_ass = { .init = init, .uninit = uninit, .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .get_video_buffer = ff_null_get_video_buffer, - .start_frame = ff_null_start_frame, - .draw_slice = null_draw_slice, - .end_frame = end_frame, - .config_props = config_input, - .min_perms = AV_PERM_WRITE | AV_PERM_READ }, - { .name = NULL} - }, - .outputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, }, - { .name = NULL} - }, - .priv_class = &ass_class, + .inputs = ass_inputs, + .outputs = ass_outputs, + .priv_class = &ass_class, }; diff --git a/libavfilter/vf_bbox.c b/libavfilter/vf_bbox.c index 07ac550..698456d 100644 --- a/libavfilter/vf_bbox.c +++ b/libavfilter/vf_bbox.c @@ -89,26 +89,32 @@ static int end_frame(AVFilterLink *inlink) return ff_end_frame(inlink->dst->outputs[0]); } +static const AVFilterPad bbox_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .get_video_buffer = ff_null_get_video_buffer, + .start_frame = ff_null_start_frame, + .end_frame = end_frame, + .min_perms = AV_PERM_READ, + }, + { NULL } +}; + +static const AVFilterPad bbox_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + }, + { NULL } +}; + AVFilter avfilter_vf_bbox = { .name = "bbox", .description = NULL_IF_CONFIG_SMALL("Compute bounding box for each frame."), .priv_size = sizeof(BBoxContext), .query_formats = query_formats, .init = init, - - .inputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .get_video_buffer = ff_null_get_video_buffer, - .start_frame = ff_null_start_frame, - .end_frame = end_frame, - .min_perms = AV_PERM_READ, }, - { .name = NULL } - }, - - .outputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO }, - { .name = NULL } - }, + .inputs = bbox_inputs, + .outputs = bbox_outputs, }; diff --git a/libavfilter/vf_blackdetect.c b/libavfilter/vf_blackdetect.c index 17f5acb..a981212 100644 --- a/libavfilter/vf_blackdetect.c +++ b/libavfilter/vf_blackdetect.c @@ -197,29 +197,35 @@ static int end_frame(AVFilterLink *inlink) return ff_end_frame(inlink->dst->outputs[0]); } +static const AVFilterPad blackdetect_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .config_props = config_input, + .draw_slice = draw_slice, + .get_video_buffer = ff_null_get_video_buffer, + .start_frame = ff_null_start_frame, + .end_frame = end_frame, + }, + { NULL } +}; + +static const AVFilterPad blackdetect_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .request_frame = request_frame, + }, + { NULL } +}; + AVFilter avfilter_vf_blackdetect = { .name = "blackdetect", .description = NULL_IF_CONFIG_SMALL("Detect video intervals that are (almost) black."), .priv_size = sizeof(BlackDetectContext), .init = init, .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .config_props = config_input, - .draw_slice = draw_slice, - .get_video_buffer = ff_null_get_video_buffer, - .start_frame = ff_null_start_frame, - .end_frame = end_frame, }, - { .name = NULL } - }, - - .outputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .request_frame = request_frame, }, - { .name = NULL } - }, - .priv_class = &blackdetect_class, + .inputs = blackdetect_inputs, + .outputs = blackdetect_outputs, + .priv_class = &blackdetect_class, }; diff --git a/libavfilter/vf_colormatrix.c b/libavfilter/vf_colormatrix.c index 7200e1d..9b26745 100644 --- a/libavfilter/vf_colormatrix.c +++ b/libavfilter/vf_colormatrix.c @@ -369,6 +369,28 @@ static int end_frame(AVFilterLink *link) static int null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) { return 0; } +static const AVFilterPad colormatrix_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .config_props = config_input, + .min_perms = AV_PERM_READ | AV_PERM_WRITE, + .start_frame = start_frame, + .get_video_buffer = get_video_buffer, + .draw_slice = null_draw_slice, + .end_frame = end_frame, + }, + { NULL } +}; + +static const AVFilterPad colormatrix_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + }, + { NULL } +}; + AVFilter avfilter_vf_colormatrix = { .name = "colormatrix", .description = NULL_IF_CONFIG_SMALL("Color matrix conversion"), @@ -376,18 +398,6 @@ AVFilter avfilter_vf_colormatrix = { .priv_size = sizeof(ColorMatrixContext), .init = init, .query_formats = query_formats, - - .inputs = (AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .config_props = config_input, - .min_perms = AV_PERM_READ | AV_PERM_WRITE, - .start_frame = start_frame, - .get_video_buffer = get_video_buffer, - .draw_slice = null_draw_slice, - .end_frame = end_frame, }, - { .name = NULL }}, - - .outputs = (AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_VIDEO, }, - { .name = NULL }}, + .inputs = colormatrix_inputs, + .outputs = colormatrix_outputs, }; diff --git a/libavfilter/vf_decimate.c b/libavfilter/vf_decimate.c index 8d54d39..0f516e2 100644 --- a/libavfilter/vf_decimate.c +++ b/libavfilter/vf_decimate.c @@ -235,6 +235,29 @@ static int request_frame(AVFilterLink *outlink) return ret; } +static const AVFilterPad decimate_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .get_video_buffer = ff_null_get_video_buffer, + .config_props = config_input, + .start_frame = start_frame, + .draw_slice = draw_slice, + .end_frame = end_frame, + .min_perms = AV_PERM_READ | AV_PERM_PRESERVE, + }, + { NULL } +}; + +static const AVFilterPad decimate_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .request_frame = request_frame, + }, + { NULL } +}; + AVFilter avfilter_vf_decimate = { .name = "decimate", .description = NULL_IF_CONFIG_SMALL("Remove near-duplicate frames."), @@ -243,26 +266,6 @@ AVFilter avfilter_vf_decimate = { .priv_size = sizeof(DecimateContext), .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .get_video_buffer = ff_null_get_video_buffer, - .config_props = config_input, - .start_frame = start_frame, - .draw_slice = draw_slice, - .end_frame = end_frame, - .min_perms = AV_PERM_READ | AV_PERM_PRESERVE, - }, - { .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .request_frame = request_frame, - }, - { .name = NULL } - }, + .inputs = decimate_inputs, + .outputs = decimate_outputs, }; diff --git a/libavfilter/vf_deshake.c b/libavfilter/vf_deshake.c index 0444de0..92fb1ea 100644 --- a/libavfilter/vf_deshake.c +++ b/libavfilter/vf_deshake.c @@ -538,6 +538,26 @@ static int draw_slice(AVFilterLink *link, int y, int h, int slice_dir) return 0; } +static const AVFilterPad deshake_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .draw_slice = draw_slice, + .end_frame = end_frame, + .config_props = config_props, + .min_perms = AV_PERM_READ | AV_PERM_PRESERVE, + }, + { NULL } +}; + +static const AVFilterPad deshake_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + }, + { NULL } +}; + AVFilter avfilter_vf_deshake = { .name = "deshake", .description = NULL_IF_CONFIG_SMALL("Stabilize shaky video."), @@ -547,16 +567,6 @@ AVFilter avfilter_vf_deshake = { .init = init, .uninit = uninit, .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .draw_slice = draw_slice, - .end_frame = end_frame, - .config_props = config_props, - .min_perms = AV_PERM_READ | AV_PERM_PRESERVE, }, - { .name = NULL}}, - - .outputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_VIDEO, }, - { .name = NULL}}, + .inputs = deshake_inputs, + .outputs = deshake_outputs, }; diff --git a/libavfilter/vf_edgedetect.c b/libavfilter/vf_edgedetect.c index 6f89e52..b3a906b 100644 --- a/libavfilter/vf_edgedetect.c +++ b/libavfilter/vf_edgedetect.c @@ -299,6 +299,25 @@ static av_cold void uninit(AVFilterContext *ctx) av_freep(&edgedetect->directions); } +static const AVFilterPad edgedetect_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .config_props = config_props, + .filter_frame = filter_frame, + .min_perms = AV_PERM_READ, + }, + { NULL } +}; + +static const AVFilterPad edgedetect_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + }, + { NULL } +}; + AVFilter avfilter_vf_edgedetect = { .name = "edgedetect", .description = NULL_IF_CONFIG_SMALL("Detect and draw edge."), @@ -306,22 +325,6 @@ AVFilter avfilter_vf_edgedetect = { .init = init, .uninit = uninit, .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .config_props = config_props, - .filter_frame = filter_frame, - .min_perms = AV_PERM_READ - }, - { .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - }, - { .name = NULL } - }, + .inputs = edgedetect_inputs, + .outputs = edgedetect_outputs, }; diff --git a/libavfilter/vf_framestep.c b/libavfilter/vf_framestep.c index dcb2665..2d14d3c 100644 --- a/libavfilter/vf_framestep.c +++ b/libavfilter/vf_framestep.c @@ -111,30 +111,33 @@ static int request_frame(AVFilterLink *outlink) return ret; } +static const AVFilterPad framestep_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .get_video_buffer = ff_null_get_video_buffer, + .start_frame = start_frame, + .draw_slice = draw_slice, + .end_frame = end_frame, + }, + { NULL } +}; + +static const AVFilterPad framestep_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .config_props = config_output_props, + .request_frame = request_frame, + }, + { NULL } +}; + AVFilter avfilter_vf_framestep = { .name = "framestep", .description = NULL_IF_CONFIG_SMALL("Select one frame every N frames."), .init = init, .priv_size = sizeof(FrameStepContext), - - .inputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .get_video_buffer = ff_null_get_video_buffer, - .start_frame = start_frame, - .draw_slice = draw_slice, - .end_frame = end_frame, - }, - { .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .config_props = config_output_props, - .request_frame = request_frame, - }, - { .name = NULL } - }, + .inputs = framestep_inputs, + .outputs = framestep_outputs, }; diff --git a/libavfilter/vf_hue.c b/libavfilter/vf_hue.c index 7e421bd..4e3df6c 100644 --- a/libavfilter/vf_hue.c +++ b/libavfilter/vf_hue.c @@ -396,6 +396,26 @@ static int process_command(AVFilterContext *ctx, const char *cmd, const char *ar return AVERROR(ENOSYS); } +static const AVFilterPad hue_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .start_frame = start_frame, + .draw_slice = draw_slice, + .config_props = config_props, + .min_perms = AV_PERM_READ, + }, + { NULL } +}; + +static const AVFilterPad hue_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + }, + { NULL } +}; + AVFilter avfilter_vf_hue = { .name = "hue", .description = NULL_IF_CONFIG_SMALL("Adjust the hue and saturation of the input video."), @@ -406,24 +426,7 @@ AVFilter avfilter_vf_hue = { .uninit = uninit, .query_formats = query_formats, .process_command = process_command, - - .inputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .start_frame = start_frame, - .draw_slice = draw_slice, - .config_props = config_props, - .min_perms = AV_PERM_READ, - }, - { .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - }, - { .name = NULL } - }, - .priv_class = &hue_class, + .inputs = hue_inputs, + .outputs = hue_outputs, + .priv_class = &hue_class, }; diff --git a/libavfilter/vf_idet.c b/libavfilter/vf_idet.c index d7c6544..cc20fac 100644 --- a/libavfilter/vf_idet.c +++ b/libavfilter/vf_idet.c @@ -310,6 +310,29 @@ static av_cold int init(AVFilterContext *ctx, const char *args) static int null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) { return 0; } +static const AVFilterPad idet_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .start_frame = start_frame, + .draw_slice = null_draw_slice, + .end_frame = end_frame, + .min_perms = AV_PERM_PRESERVE, + }, + { NULL } +}; + +static const AVFilterPad idet_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .rej_perms = AV_PERM_WRITE, + .poll_frame = poll_frame, + .request_frame = request_frame, + }, + { NULL } +}; + AVFilter avfilter_vf_idet = { .name = "idet", .description = NULL_IF_CONFIG_SMALL("Interlace detect Filter."), @@ -318,19 +341,6 @@ AVFilter avfilter_vf_idet = { .init = init, .uninit = uninit, .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .start_frame = start_frame, - .draw_slice = null_draw_slice, - .end_frame = end_frame, - .min_perms = AV_PERM_PRESERVE }, - { .name = NULL}}, - - .outputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .rej_perms = AV_PERM_WRITE, - .poll_frame = poll_frame, - .request_frame = request_frame, }, - { .name = NULL}}, + .inputs = idet_inputs, + .outputs = idet_outputs, }; diff --git a/libavfilter/vf_mp.c b/libavfilter/vf_mp.c index 8042340..c70ab28 100644 --- a/libavfilter/vf_mp.c +++ b/libavfilter/vf_mp.c @@ -863,6 +863,29 @@ static int end_frame(AVFilterLink *inlink) return 0; } +static const AVFilterPad mp_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .start_frame = start_frame, + .draw_slice = null_draw_slice, + .end_frame = end_frame, + .config_props = config_inprops, + .min_perms = AV_PERM_READ, + }, + { NULL } +}; + +static const AVFilterPad mp_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .request_frame = request_frame, + .config_props = config_outprops, + }, + { NULL } +}; + AVFilter avfilter_vf_mp = { .name = "mp", .description = NULL_IF_CONFIG_SMALL("Apply a libmpcodecs filter to the input video."), @@ -870,18 +893,6 @@ AVFilter avfilter_vf_mp = { .uninit = uninit, .priv_size = sizeof(MPContext), .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .start_frame = start_frame, - .draw_slice = null_draw_slice, - .end_frame = end_frame, - .config_props = config_inprops, - .min_perms = AV_PERM_READ, }, - { .name = NULL}}, - .outputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .request_frame = request_frame, - .config_props = config_outprops, }, - { .name = NULL}}, + .inputs = mp_inputs, + .outputs = mp_outputs, }; diff --git a/libavfilter/vf_removelogo.c b/libavfilter/vf_removelogo.c index 1b02018..f2228be 100644 --- a/libavfilter/vf_removelogo.c +++ b/libavfilter/vf_removelogo.c @@ -535,6 +535,28 @@ static void uninit(AVFilterContext *ctx) static int null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) { return 0; } +static const AVFilterPad removelogo_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .get_video_buffer = ff_null_get_video_buffer, + .config_props = config_props_input, + .draw_slice = null_draw_slice, + .start_frame = start_frame, + .end_frame = end_frame, + .min_perms = AV_PERM_WRITE | AV_PERM_READ, + }, + { NULL } +}; + +static const AVFilterPad removelogo_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + }, + { NULL } +}; + AVFilter avfilter_vf_removelogo = { .name = "removelogo", .description = NULL_IF_CONFIG_SMALL("Remove a TV logo based on a mask image."), @@ -542,21 +564,6 @@ AVFilter avfilter_vf_removelogo = { .init = init, .uninit = uninit, .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .get_video_buffer = ff_null_get_video_buffer, - .config_props = config_props_input, - .draw_slice = null_draw_slice, - .start_frame = start_frame, - .end_frame = end_frame, - .min_perms = AV_PERM_WRITE | AV_PERM_READ }, - { .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, }, - { .name = NULL } - }, + .inputs = removelogo_inputs, + .outputs = removelogo_outputs, }; diff --git a/libavfilter/vf_setfield.c b/libavfilter/vf_setfield.c index 93d30c7..c62ee36 100644 --- a/libavfilter/vf_setfield.c +++ b/libavfilter/vf_setfield.c @@ -83,23 +83,30 @@ static int start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) return ff_start_frame(inlink->dst->outputs[0], outpicref); } +static const AVFilterPad setfield_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .get_video_buffer = ff_null_get_video_buffer, + .start_frame = start_frame, + }, + { NULL } +}; + +static const AVFilterPad setfield_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + }, + { NULL } +}; + AVFilter avfilter_vf_setfield = { .name = "setfield", .description = NULL_IF_CONFIG_SMALL("Force field for the output video frame."), .init = init, .priv_size = sizeof(SetFieldContext), - - .inputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .get_video_buffer = ff_null_get_video_buffer, - .start_frame = start_frame, }, - { .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, }, - { .name = NULL } - }, + .inputs = setfield_inputs, + .outputs = setfield_outputs, }; diff --git a/libavfilter/vf_smartblur.c b/libavfilter/vf_smartblur.c index 0df3ca0..2a83cd0 100644 --- a/libavfilter/vf_smartblur.c +++ b/libavfilter/vf_smartblur.c @@ -277,6 +277,25 @@ static int end_frame(AVFilterLink *inlink) return ff_end_frame(outlink); } +static const AVFilterPad smartblur_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .end_frame = end_frame, + .config_props = config_props, + .min_perms = AV_PERM_READ, + }, + { NULL } +}; + +static const AVFilterPad smartblur_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + }, + { NULL } +}; + AVFilter avfilter_vf_smartblur = { .name = "smartblur", .description = NULL_IF_CONFIG_SMALL("Blur the input video without impacting the outlines."), @@ -286,22 +305,6 @@ AVFilter avfilter_vf_smartblur = { .init = init, .uninit = uninit, .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .end_frame = end_frame, - .config_props = config_props, - .min_perms = AV_PERM_READ, - }, - { .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - }, - { .name = NULL } - } + .inputs = smartblur_inputs, + .outputs = smartblur_outputs, }; diff --git a/libavfilter/vf_super2xsai.c b/libavfilter/vf_super2xsai.c index f85674c..af4adff 100644 --- a/libavfilter/vf_super2xsai.c +++ b/libavfilter/vf_super2xsai.c @@ -318,25 +318,32 @@ static int end_frame(AVFilterLink *inlink) return ff_end_frame(outlink); } +static const AVFilterPad super2xsai_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .config_props = config_input, + .draw_slice = null_draw_slice, + .end_frame = end_frame, + .min_perms = AV_PERM_READ, + }, + { NULL } +}; + +static const AVFilterPad super2xsai_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .config_props = config_output, + }, + { NULL } +}; + AVFilter avfilter_vf_super2xsai = { .name = "super2xsai", .description = NULL_IF_CONFIG_SMALL("Scale the input by 2x using the Super2xSaI pixel art algorithm."), .priv_size = sizeof(Super2xSaIContext), .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .config_props = config_input, - .draw_slice = null_draw_slice, - .end_frame = end_frame, - .min_perms = AV_PERM_READ }, - { .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .config_props = config_output }, - { .name = NULL } - }, + .inputs = super2xsai_inputs, + .outputs = super2xsai_outputs, }; diff --git a/libavfilter/vf_swapuv.c b/libavfilter/vf_swapuv.c index bfe71e8..6345c0d 100644 --- a/libavfilter/vf_swapuv.c +++ b/libavfilter/vf_swapuv.c @@ -74,22 +74,29 @@ static int query_formats(AVFilterContext *ctx) return 0; } +static const AVFilterPad swapuv_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .get_video_buffer = get_video_buffer, + .start_frame = start_frame, + }, + { NULL } +}; + +static const AVFilterPad swapuv_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + }, + { NULL } +}; + AVFilter avfilter_vf_swapuv = { .name = "swapuv", .description = NULL_IF_CONFIG_SMALL("Swap U and V components."), .priv_size = 0, .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .get_video_buffer = get_video_buffer, - .start_frame = start_frame, }, - { .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, }, - { .name = NULL } - }, + .inputs = swapuv_inputs, + .outputs = swapuv_outputs, }; diff --git a/libavfilter/vf_thumbnail.c b/libavfilter/vf_thumbnail.c index 5936a19..5dda94e 100644 --- a/libavfilter/vf_thumbnail.c +++ b/libavfilter/vf_thumbnail.c @@ -219,6 +219,29 @@ static int query_formats(AVFilterContext *ctx) return 0; } +static const AVFilterPad thumbnail_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .get_video_buffer = ff_null_get_video_buffer, + .min_perms = AV_PERM_PRESERVE, + .start_frame = null_start_frame, + .draw_slice = draw_slice, + .end_frame = end_frame, + }, + { NULL } +}; + +static const AVFilterPad thumbnail_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .request_frame = request_frame, + .poll_frame = poll_frame, + }, + { NULL } +}; + AVFilter avfilter_vf_thumbnail = { .name = "thumbnail", .description = NULL_IF_CONFIG_SMALL("Select the most representative frame in a given sequence of consecutive frames."), @@ -226,21 +249,6 @@ AVFilter avfilter_vf_thumbnail = { .init = init, .uninit = uninit, .query_formats = query_formats, - .inputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .get_video_buffer = ff_null_get_video_buffer, - .min_perms = AV_PERM_PRESERVE, - .start_frame = null_start_frame, - .draw_slice = draw_slice, - .end_frame = end_frame, - },{ .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .request_frame = request_frame, - .poll_frame = poll_frame, - },{ .name = NULL } - }, + .inputs = thumbnail_inputs, + .outputs = thumbnail_outputs, }; diff --git a/libavfilter/vf_tile.c b/libavfilter/vf_tile.c index 4c619ff..484a976 100644 --- a/libavfilter/vf_tile.c +++ b/libavfilter/vf_tile.c @@ -240,6 +240,27 @@ static int request_frame(AVFilterLink *outlink) return 0; } +static const AVFilterPad tile_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .start_frame = start_frame, + .draw_slice = draw_slice, + .end_frame = end_frame, + .min_perms = AV_PERM_READ, + }, + { NULL } +}; + +static const AVFilterPad tile_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .config_props = config_props, + .request_frame = request_frame, + }, + { NULL } +}; AVFilter avfilter_vf_tile = { .name = "tile", @@ -247,21 +268,7 @@ AVFilter avfilter_vf_tile = { .init = init, .query_formats = query_formats, .priv_size = sizeof(TileContext), - .inputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .start_frame = start_frame, - .draw_slice = draw_slice, - .end_frame = end_frame, - .min_perms = AV_PERM_READ, }, - { .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .config_props = config_props, - .request_frame = request_frame }, - { .name = NULL } - }, - .priv_class = &tile_class, + .inputs = tile_inputs, + .outputs = tile_outputs, + .priv_class = &tile_class, }; diff --git a/libavfilter/vf_tinterlace.c b/libavfilter/vf_tinterlace.c index 6cc8ad6..d24105e 100644 --- a/libavfilter/vf_tinterlace.c +++ b/libavfilter/vf_tinterlace.c @@ -351,6 +351,27 @@ static int request_frame(AVFilterLink *outlink) static int null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) { return 0; } +static const AVFilterPad tinterlace_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .start_frame = start_frame, + .draw_slice = null_draw_slice, + .end_frame = end_frame, + }, + { NULL } +}; + +static const AVFilterPad tinterlace_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .config_props = config_out_props, + .request_frame = request_frame, + }, + { NULL } +}; + AVFilter avfilter_vf_tinterlace = { .name = "tinterlace", .description = NULL_IF_CONFIG_SMALL("Perform temporal field interlacing."), @@ -358,20 +379,6 @@ AVFilter avfilter_vf_tinterlace = { .init = init, .uninit = uninit, .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .start_frame = start_frame, - .draw_slice = null_draw_slice, - .end_frame = end_frame, }, - { .name = NULL} - }, - .outputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .config_props = config_out_props, - .request_frame = request_frame }, - { .name = NULL} - }, + .inputs = tinterlace_inputs, + .outputs = tinterlace_outputs, }; diff --git a/libavfilter/vsrc_cellauto.c b/libavfilter/vsrc_cellauto.c index 3a4726b..27a4d18 100644 --- a/libavfilter/vsrc_cellauto.c +++ b/libavfilter/vsrc_cellauto.c @@ -335,6 +335,16 @@ static int query_formats(AVFilterContext *ctx) return 0; } +static const AVFilterPad cellauto_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .request_frame = request_frame, + .config_props = config_props, + }, + { NULL } +}; + AVFilter avfilter_vsrc_cellauto = { .name = "cellauto", .description = NULL_IF_CONFIG_SMALL("Create pattern generated by an elementary cellular automaton."), @@ -342,16 +352,7 @@ AVFilter avfilter_vsrc_cellauto = { .init = init, .uninit = uninit, .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) { - { .name = NULL} - }, - .outputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .request_frame = request_frame, - .config_props = config_props }, - { .name = NULL} - }, - .priv_class = &cellauto_class, + .inputs = NULL, + .outputs = cellauto_outputs, + .priv_class = &cellauto_class, }; diff --git a/libavfilter/vsrc_life.c b/libavfilter/vsrc_life.c index 9ea4147..ebe6cc2 100644 --- a/libavfilter/vsrc_life.c +++ b/libavfilter/vsrc_life.c @@ -464,6 +464,16 @@ static int query_formats(AVFilterContext *ctx) return 0; } +static const AVFilterPad life_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .request_frame = request_frame, + .config_props = config_props, + }, + { NULL} +}; + AVFilter avfilter_vsrc_life = { .name = "life", .description = NULL_IF_CONFIG_SMALL("Create life."), @@ -471,16 +481,7 @@ AVFilter avfilter_vsrc_life = { .init = init, .uninit = uninit, .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) { - { .name = NULL} - }, - .outputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .request_frame = request_frame, - .config_props = config_props }, - { .name = NULL} - }, - .priv_class = &life_class, + .inputs = NULL, + .outputs = life_outputs, + .priv_class = &life_class, }; diff --git a/libavfilter/vsrc_mandelbrot.c b/libavfilter/vsrc_mandelbrot.c index 4d08890..661f9dd 100644 --- a/libavfilter/vsrc_mandelbrot.c +++ b/libavfilter/vsrc_mandelbrot.c @@ -396,6 +396,16 @@ static int request_frame(AVFilterLink *link) return 0; } +static const AVFilterPad mandelbrot_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .request_frame = request_frame, + .config_props = config_props, + }, + { NULL }, +}; + AVFilter avfilter_vsrc_mandelbrot = { .name = "mandelbrot", .description = NULL_IF_CONFIG_SMALL("Render a Mandelbrot fractal."), @@ -405,12 +415,6 @@ AVFilter avfilter_vsrc_mandelbrot = { .uninit = uninit, .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) {{ .name = NULL}}, - - .outputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .request_frame = request_frame, - .config_props = config_props }, - { .name = NULL}}, + .inputs = NULL, + .outputs = mandelbrot_outputs, }; diff --git a/libavfilter/vsrc_mptestsrc.c b/libavfilter/vsrc_mptestsrc.c index 2b41637..5bd5083 100644 --- a/libavfilter/vsrc_mptestsrc.c +++ b/libavfilter/vsrc_mptestsrc.c @@ -364,6 +364,16 @@ static int request_frame(AVFilterLink *outlink) return 0; } +static const AVFilterPad mptestsrc_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .request_frame = request_frame, + .config_props = config_props, + }, + { NULL } +}; + AVFilter avfilter_vsrc_mptestsrc = { .name = "mptestsrc", .description = NULL_IF_CONFIG_SMALL("Generate various test pattern."), @@ -372,11 +382,6 @@ AVFilter avfilter_vsrc_mptestsrc = { .query_formats = query_formats, - .inputs = (const AVFilterPad[]) {{ .name = NULL}}, - - .outputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .request_frame = request_frame, - .config_props = config_props, }, - { .name = NULL }}, + .inputs = NULL, + .outputs = mptestsrc_outputs, }; diff --git a/libavfilter/vsrc_testsrc.c b/libavfilter/vsrc_testsrc.c index 8642e1b..185d382 100644 --- a/libavfilter/vsrc_testsrc.c +++ b/libavfilter/vsrc_testsrc.c @@ -256,6 +256,16 @@ static int color_config_props(AVFilterLink *inlink) return 0; } +static const AVFilterPad color_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .request_frame = request_frame, + .config_props = color_config_props, + }, + { NULL } +}; + AVFilter avfilter_vsrc_color = { .name = "color", .description = NULL_IF_CONFIG_SMALL("Provide an uniformly colored input."), @@ -265,22 +275,9 @@ AVFilter avfilter_vsrc_color = { .uninit = uninit, .query_formats = color_query_formats, - - .inputs = (const AVFilterPad[]) { - { .name = NULL } - }, - - .outputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .request_frame = request_frame, - .config_props = color_config_props, - }, - { .name = NULL } - }, - - .priv_class = &color_class, + .inputs = NULL, + .outputs = color_outputs, + .priv_class = &color_class, }; #endif /* CONFIG_COLOR_FILTER */ @@ -301,19 +298,24 @@ static av_cold int nullsrc_init(AVFilterContext *ctx, const char *args) return init(ctx, args); } +static const AVFilterPad nullsrc_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .request_frame = request_frame, + .config_props = config_props, + }, + { NULL }, +}; + AVFilter avfilter_vsrc_nullsrc = { .name = "nullsrc", .description = NULL_IF_CONFIG_SMALL("Null video source, return unprocessed video frames."), .init = nullsrc_init, .uninit = uninit, .priv_size = sizeof(TestSourceContext), - - .inputs = (const AVFilterPad[]) {{ .name = NULL}}, - .outputs = (const AVFilterPad[]) {{ .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .request_frame = request_frame, - .config_props = config_props, }, - { .name = NULL}}, + .inputs = NULL, + .outputs = nullsrc_outputs, .priv_class = &nullsrc_class, }; @@ -767,6 +769,16 @@ static int smptebars_config_props(AVFilterLink *outlink) return config_props(outlink); } +static const AVFilterPad smptebars_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .request_frame = request_frame, + .config_props = smptebars_config_props, + }, + { NULL } +}; + AVFilter avfilter_vsrc_smptebars = { .name = "smptebars", .description = NULL_IF_CONFIG_SMALL("Generate SMPTE color bars."), @@ -775,22 +787,9 @@ AVFilter avfilter_vsrc_smptebars = { .uninit = uninit, .query_formats = smptebars_query_formats, - - .inputs = (const AVFilterPad[]) { - { .name = NULL } - }, - - .outputs = (const AVFilterPad[]) { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .request_frame = request_frame, - .config_props = smptebars_config_props, - }, - { .name = NULL } - }, - - .priv_class = &smptebars_class, + .inputs = NULL, + .outputs = smptebars_outputs, + .priv_class = &smptebars_class, }; #endif /* CONFIG_SMPTEBARS_FILTER */ -- cgit v1.1