[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