From 61961d03f6aed7eb77eca34840e90342b86e92c9 Mon Sep 17 00:00:00 2001 From: wm4 Date: Wed, 2 Oct 2019 21:09:30 +0200 Subject: filters: add another dumb helper Can be used with mp_chain_filters() to combine multiple filters into a single one. This is a bit silly, but whatever. I'm making it an explicit separate filter, because it lets the user access mp_filter.ppins against all conventions. --- filters/f_utils.c | 16 ++++++++++++++++ filters/f_utils.h | 6 ++++++ 2 files changed, 22 insertions(+) (limited to 'filters') diff --git a/filters/f_utils.c b/filters/f_utils.c index 826f527a0b..1b5b0e548e 100644 --- a/filters/f_utils.c +++ b/filters/f_utils.c @@ -178,6 +178,22 @@ struct mp_filter *mp_bidir_nop_filter_create(struct mp_filter *parent) return f; } +static const struct mp_filter_info bidir_dummy_filter = { + .name = "dummy", +}; + +struct mp_filter *mp_bidir_dummy_filter_create(struct mp_filter *parent) +{ + struct mp_filter *f = mp_filter_create(parent, &bidir_dummy_filter); + if (!f) + return NULL; + + mp_filter_add_pin(f, MP_PIN_IN, "in"); + mp_filter_add_pin(f, MP_PIN_OUT, "out"); + + return f; +} + struct fixed_aframe_size_priv { int samples; bool pad_silence; diff --git a/filters/f_utils.h b/filters/f_utils.h index 6ab288bcea..76f85baca6 100644 --- a/filters/f_utils.h +++ b/filters/f_utils.h @@ -71,6 +71,12 @@ bool mp_subfilter_drain_destroy(struct mp_subfilter *sub); // A bidrectional filter which passes through all data. struct mp_filter *mp_bidir_nop_filter_create(struct mp_filter *parent); +// A bidrectional filter which does not connect its pins. Instead, the user is, +// by convention, allowed to access the filter's private pins, and use them +// freely. (This is sometimes convenient, such as when you need to pass a single +// filter instance to other code, and you don't need a full "proper" filter.) +struct mp_filter *mp_bidir_dummy_filter_create(struct mp_filter *parent); + // A filter which repacks audio frame to fixed frame sizes with the given // number of samples. On hard format changes (sample format/channels/srate), // the frame can be shorter, unless pad_silence is true. Fails on non-aframes. -- cgit v1.2.3