[FFmpeg-cvslog] avfilter/af_lv2: add commands support

Paul B Mahol git at videolan.org
Thu Mar 10 13:07:59 EET 2022


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Thu Mar 10 11:52:18 2022 +0100| [5cd8eb2aef0c88e18030756ba91ed3c77f045369] | committer: Paul B Mahol

avfilter/af_lv2: add commands support

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5cd8eb2aef0c88e18030756ba91ed3c77f045369
---

 doc/filters.texi     |  4 ++++
 libavfilter/af_lv2.c | 21 +++++++++++++++++++++
 2 files changed, 25 insertions(+)

diff --git a/doc/filters.texi b/doc/filters.texi
index 3c64d13b82..914baaf134 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -5433,6 +5433,10 @@ lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
 @end example
 @end itemize
 
+ at subsection Commands
+
+This filter supports all options that are exported by plugin as commands.
+
 @section mcompand
 Multiband Compress or expand the audio's dynamic range.
 
diff --git a/libavfilter/af_lv2.c b/libavfilter/af_lv2.c
index 0f0c797989..0c23adeb15 100644
--- a/libavfilter/af_lv2.c
+++ b/libavfilter/af_lv2.c
@@ -538,6 +538,26 @@ static int query_formats(AVFilterContext *ctx)
     return 0;
 }
 
+static int process_command(AVFilterContext *ctx, const char *cmd, const char *args,
+                           char *res, int res_len, int flags)
+{
+    LV2Context *s = ctx->priv;
+    const LilvPort *port;
+    LilvNode *sym;
+    int index;
+
+    sym  = lilv_new_string(s->world, cmd);
+    port = lilv_plugin_get_port_by_symbol(s->plugin, sym);
+    lilv_node_free(sym);
+    if (!port) {
+        av_log(s, AV_LOG_WARNING, "Unknown option: <%s>\n", cmd);
+    } else {
+        index = lilv_port_get_index(s->plugin, port);
+        s->controls[index] = atof(args);
+    }
+    return 0;
+}
+
 static av_cold void uninit(AVFilterContext *ctx)
 {
     LV2Context *s = ctx->priv;
@@ -578,6 +598,7 @@ const AVFilter ff_af_lv2 = {
     .priv_class    = &lv2_class,
     .init          = init,
     .uninit        = uninit,
+    .process_command = process_command,
     .inputs        = 0,
     FILTER_OUTPUTS(lv2_outputs),
     FILTER_QUERY_FUNC(query_formats),



More information about the ffmpeg-cvslog mailing list