[alsa-devel] [RFC PATCH] alsa-lib: Call LADSPA activate after all ports are setup
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?
Regards,
Matthias
From f7f5d920c845fc54ffef208f68f568b06e8fadd1 Mon Sep 17 00:00:00 2001 From: Matthias Larisch mail@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)
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@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)
} err = snd_pcm_ladspa_check_connect(plugin, &plugin->input, &instance->input, depth); if (err < 0)plugin->desc->activate(instance->handle);
-- 1.9.0
Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
participants (2)
-
Matthias Larisch
-
Takashi Iwai