[alsa-devel] [RFC PATCH] alsa-lib: Call LADSPA activate after all ports are setup

Takashi Iwai tiwai at suse.de
Tue Mar 25 16:43:10 CET 2014


At Mon, 17 Mar 2014 19:40:00 +0100,
Matthias Larisch wrote:
> 
> Hey there,
> 
> I notices mainly swh-plugins (like butterworth_1902) to crash on seek with
> mplayer or mpd. This is due to their behaviour on relying on the activate call
> after the control inputs are set.
> 
> This is not right by LADSPA API description but I see no point in NOT calling
> activate as late as possible in alsa-lib.
> 
> Comments?

I think your patch is OK.  The worst thing would be a regression, but
I see no big risk there.  Could you resubmit with a proper comment and
your sign off?  Thanks.


Takashi

> 
> Regards,
> 
> Matthias
> 
> >From f7f5d920c845fc54ffef208f68f568b06e8fadd1 Mon Sep 17 00:00:00 2001
> From: Matthias Larisch <mail at matthias-larisch.de>
> Date: Mon, 17 Mar 2014 19:37:01 +0100
> Subject: [PATCH] call ladspa activate as late as possible to work around wrong
>  plugin behaviour
> 
> ---
>  src/pcm/pcm_ladspa.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/src/pcm/pcm_ladspa.c b/src/pcm/pcm_ladspa.c
> index 9ce5242..7d1e3df 100644
> --- a/src/pcm/pcm_ladspa.c
> +++ b/src/pcm/pcm_ladspa.c
> @@ -645,8 +645,6 @@ static int snd_pcm_ladspa_allocate_instances(snd_pcm_t *pcm, snd_pcm_ladspa_t *l
>  				return -EINVAL;
>  			}
>  			list_add_tail(&instance->list, &plugin->instances);
> -			if (plugin->desc->activate)
> -				plugin->desc->activate(instance->handle);
>  			if (plugin->policy == SND_PCM_LADSPA_POLICY_DUPLICATE) {
>  				err = snd_pcm_ladspa_connect_plugin_duplicate(plugin, &plugin->input, &plugin->output, instance, idx);
>  				if (err < 0) {
> @@ -664,6 +662,8 @@ static int snd_pcm_ladspa_allocate_instances(snd_pcm_t *pcm, snd_pcm_ladspa_t *l
>  			assert(err >= 0);
>  			err = snd_pcm_ladspa_connect_controls(plugin, &plugin->output, instance);
>  			assert(err >= 0);
> +			if (plugin->desc->activate)
> +				plugin->desc->activate(instance->handle);
>  		}
>  		err = snd_pcm_ladspa_check_connect(plugin, &plugin->input, &instance->input, depth);
>  		if (err < 0)
> -- 
> 1.9.0
> 
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> 


More information about the Alsa-devel mailing list