summaryrefslogtreecommitdiffstats
path: root/filters/f_lavfi.c
diff options
context:
space:
mode:
Diffstat (limited to 'filters/f_lavfi.c')
-rw-r--r--filters/f_lavfi.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/filters/f_lavfi.c b/filters/f_lavfi.c
index afc9f2d445..3e447d16cf 100644
--- a/filters/f_lavfi.c
+++ b/filters/f_lavfi.c
@@ -987,6 +987,8 @@ static bool is_usable(const AVFilter *filter, int media_type)
int nb_inputs = avfilter_pad_count(filter->inputs),
nb_outputs = avfilter_pad_count(filter->outputs);
#endif
+ if (nb_inputs > 1 || nb_outputs > 1)
+ return false;
bool input_ok = filter->flags & AVFILTER_FLAG_DYNAMIC_INPUTS;
bool output_ok = filter->flags & AVFILTER_FLAG_DYNAMIC_OUTPUTS;
if (nb_inputs == 1)
@@ -1124,6 +1126,22 @@ static void print_help_a(struct mp_log *log)
print_help(log, AVMEDIA_TYPE_AUDIO, "audio", "--af=lavfi=[volume=0.5]");
}
+const char **mp_get_lavfi_filters(void *talloc_ctx, int media_type)
+{
+ const char **filters = NULL;
+ void *iter = NULL;
+ int num = 0;
+ for (;;) {
+ const AVFilter *filter = av_filter_iterate(&iter);
+ if (!filter)
+ break;
+ if (is_usable(filter, media_type))
+ MP_TARRAY_APPEND(talloc_ctx, filters, num, filter->name);
+ }
+ MP_TARRAY_APPEND(talloc_ctx, filters, num, NULL);
+ return filters;
+}
+
#define OPT_BASE_STRUCT struct lavfi_user_opts
const struct mp_user_filter_entry af_lavfi = {