From f69312e329b3c5060f85898f8e88312eb963d91a Mon Sep 17 00:00:00 2001 From: wm4 Date: Sun, 20 Apr 2014 23:53:59 +0200 Subject: vf: add function to remove a filter from the chain --- video/filter/vf.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'video/filter/vf.c') diff --git a/video/filter/vf.c b/video/filter/vf.c index 9928b8a37e..ef34b8242d 100644 --- a/video/filter/vf.c +++ b/video/filter/vf.c @@ -119,6 +119,8 @@ static const vf_info_t *const filter_list[] = { NULL }; +static void vf_uninit_filter(vf_instance_t *vf); + static bool get_desc(struct m_obj_desc *dst, int index) { if (index >= MP_ARRAY_SIZE(filter_list) - 1) @@ -282,6 +284,17 @@ static vf_instance_t *vf_open_filter(struct vf_chain *c, const char *name, return vf_open(c, name, args); } +void vf_remove_filter(struct vf_chain *c, struct vf_instance *vf) +{ + assert(vf != c->first && vf != c->last); // these are sentinels + struct vf_instance *prev = c->first; + while (prev && prev->next != vf) + prev = prev->next; + assert(prev); // not inserted + prev->next = vf->next; + vf_uninit_filter(vf); +} + struct vf_instance *vf_append_filter(struct vf_chain *c, const char *name, char **args) { -- cgit v1.2.3