From 7ae2eb8e2cbb041d22017632e95de6ac773db56a Mon Sep 17 00:00:00 2001 From: Kevin Mitchell Date: Sun, 13 Apr 2014 07:00:11 -0700 Subject: vf: add vf_control_by_label to send vfctrl to specific filter --- video/filter/vf.c | 11 +++++++++++ video/filter/vf.h | 1 + 2 files changed, 12 insertions(+) diff --git a/video/filter/vf.c b/video/filter/vf.c index 118587766d..2e26ed0fbe 100644 --- a/video/filter/vf.c +++ b/video/filter/vf.c @@ -156,6 +156,17 @@ int vf_control_any(struct vf_chain *c, int cmd, void *arg) return CONTROL_UNKNOWN; } +int vf_control_by_label(struct vf_chain *c,int cmd, void *arg, bstr label) +{ + char *label_str = bstrdup0(NULL, label); + struct vf_instance *cur = vf_find_by_label(c, label_str); + talloc_free(label_str); + if (cur) + return cur->control(cur, cmd, arg); + else + return CONTROL_UNKNOWN; +} + static void vf_fix_img_params(struct mp_image *img, struct mp_image_params *p) { // Filters must absolutely set these correctly. diff --git a/video/filter/vf.h b/video/filter/vf.h index 4e7832a6e8..6bc887bbb2 100644 --- a/video/filter/vf.h +++ b/video/filter/vf.h @@ -129,6 +129,7 @@ struct vf_chain *vf_new(struct mpv_global *global); void vf_destroy(struct vf_chain *c); int vf_reconfig(struct vf_chain *c, const struct mp_image_params *params); int vf_control_any(struct vf_chain *c, int cmd, void *arg); +int vf_control_by_label(struct vf_chain *c, int cmd, void *arg, bstr label); int vf_filter_frame(struct vf_chain *c, struct mp_image *img); struct mp_image *vf_output_queued_frame(struct vf_chain *c); void vf_seek_reset(struct vf_chain *c); -- cgit v1.2.3