[FFmpeg-devel] [PATCH 2/2] avfilter/af_ladspa: allow changing controls dynamically

Stefano Sabatini stefasab at gmail.com
Fri Sep 27 09:30:16 CEST 2013


On date Tuesday 2013-09-24 16:49:00 +0000, Paul B Mahol encoded:
> Signed-off-by: Paul B Mahol <onemda at gmail.com>
> ---
>  doc/filters.texi        | 10 ++++++++++
>  libavfilter/af_ladspa.c | 13 +++++++++++++
>  2 files changed, 23 insertions(+)
> 
> diff --git a/doc/filters.texi b/doc/filters.texi
> index 800a666..a349bee 100644
> --- a/doc/filters.texi
> +++ b/doc/filters.texi
> @@ -1502,6 +1502,16 @@ ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
>  @end example
>  @end itemize
>  
> + at subsection Commands
> +
> +This filter supports the following commands:
> + at table @option
> + at item ci

Nit: probably "cN" to make clear that N is something special.

> +Modify the @var{i}-th control value.
> +
> +If the specified value is not valid, it is ignored and prior one is kept.
> + at end table
> +
>  @section lowpass
>  
>  Apply a low-pass filter with 3dB point frequency.
> diff --git a/libavfilter/af_ladspa.c b/libavfilter/af_ladspa.c
> index f25699e..904ad14 100644
> --- a/libavfilter/af_ladspa.c
> +++ b/libavfilter/af_ladspa.c
> @@ -662,6 +662,18 @@ static av_cold void uninit(AVFilterContext *ctx)
>          av_freep(&ctx->input_pads[0].name);
>  }
>  
> +static int process_command(AVFilterContext *ctx, const char *cmd, const char *args,
> +                           char *res, int res_len, int flags)
> +{
> +    LADSPA_Data value;
> +    int port;
> +
> +    if (sscanf(cmd, "c%d", &port) + sscanf(args, "%f", &value) != 2)
> +        return AVERROR(EINVAL);
> +
> +    return set_control(ctx, port, value);
> +}
> +
>  static const AVFilterPad ladspa_outputs[] = {
>      {
>          .name          = "default",
> @@ -680,6 +692,7 @@ AVFilter avfilter_af_ladspa = {
>      .init          = init,
>      .uninit        = uninit,
>      .query_formats = query_formats,
> +    .process_command = process_command,
>      .inputs        = 0,
>      .outputs       = ladspa_outputs,
>      .flags         = AVFILTER_FLAG_DYNAMIC_INPUTS,

LGTM, thanks.
-- 
FFmpeg = Foolish and Freak Mournful Purposeless Ephemeral Guru


More information about the ffmpeg-devel mailing list