vf: add function to remove a filter from the chain

This commit is contained in:
wm4
2014-04-30 11:45:31 +02:00
parent 3d85137495
commit 57f32f7ca8
2 changed files with 14 additions and 0 deletions
+13
View File
@@ -115,6 +115,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)
@@ -270,6 +272,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)
{
+1
View File
@@ -134,6 +134,7 @@ struct mp_image *vf_output_queued_frame(struct vf_chain *c);
void vf_seek_reset(struct vf_chain *c);
struct vf_instance *vf_append_filter(struct vf_chain *c, const char *name,
char **args);
void vf_remove_filter(struct vf_chain *c, struct vf_instance *vf);
int vf_append_filter_list(struct vf_chain *c, struct m_obj_settings *list);
struct vf_instance *vf_find_by_label(struct vf_chain *c, const char *label);
void vf_print_filter_chain(struct vf_chain *c, int msglevel);