From 1ba0450f3ad016310335a9eac516dca060ba944f Mon Sep 17 00:00:00 2001 From: Marcus Weseloh Date: Sun, 29 Oct 2017 22:20:39 +0100 Subject: [PATCH] Remove enum for output mode, use a simple flag instead --- src/bindings/fluid_ladspa.c | 36 +++++++++++++++++------------------- src/bindings/fluid_ladspa.h | 16 +++++----------- 2 files changed, 22 insertions(+), 30 deletions(-) diff --git a/src/bindings/fluid_ladspa.c b/src/bindings/fluid_ladspa.c index 8329a690..af454e6e 100644 --- a/src/bindings/fluid_ladspa.c +++ b/src/bindings/fluid_ladspa.c @@ -442,7 +442,7 @@ void fluid_ladspa_run(fluid_ladspa_fx_t *fx, int block_count, int block_size) { effect = fx->effects[i]; - if (effect->mode == FLUID_LADSPA_MODE_ADD) + if (effect->mix) { effect->desc->run_adding(effect->handle, num_samples); } @@ -473,15 +473,15 @@ void fluid_ladspa_run(fluid_ladspa_fx_t *fx, int block_count, int block_size) /** * Check if the effect plugin supports the run_adding and set_run_adding_gain - * interfaces necessary for the FLUID_LADSPA_ADD output mode. + * interfaces necessary for output mixing * * @param fx LADSPA fx * @param name the name of the effect - * @return TRUE if add mode is supported, otherwise FALSE + * @return TRUE if mix mode is supported, otherwise FALSE */ -int fluid_ladspa_effect_can_add(fluid_ladspa_fx_t *fx, const char *name) +int fluid_ladspa_effect_can_mix(fluid_ladspa_fx_t *fx, const char *name) { - int can_add; + int can_mix; fluid_ladspa_effect_t *effect; LADSPA_API_ENTER(fx); @@ -492,24 +492,23 @@ int fluid_ladspa_effect_can_add(fluid_ladspa_fx_t *fx, const char *name) LADSPA_API_RETURN(fx, FALSE); } - can_add = (effect->desc->run_adding != NULL + can_mix = (effect->desc->run_adding != NULL && effect->desc->set_run_adding_gain != NULL); - LADSPA_API_RETURN(fx, can_add); + LADSPA_API_RETURN(fx, can_mix); } /** - * Set if the effect should replace everything in the output buffer(s) or add - * to the buffer(s) with a fixed gain. The default mode is FLUID_LADSPA_MODE_REPLACE. + * Set if the effect should replace everything in the output buffers (mix = 0, default) + * or add to the buffers with a fixed gain (mix = 1). * * @param fx LADSPA fx instance - * @param name the name of theeffect - * @param mode which mode to set: FLUID_LADSPA_MODE_ADD or FLUID_LADSPA_MODE_REPLACE - * @param gain the gain to apply to the effect output before adding to output. Ignored for replace mode. + * @param name the name of the effect + * @param mix (boolen) if to enable mix mode + * @param gain the gain to apply to the effect output before adding to output. * @return FLUID_OK on success, otherwise FLUID_FAILED */ -int fluid_ladspa_set_effect_mode(fluid_ladspa_fx_t *fx, const char *name, - fluid_ladspa_mode_t mode, float gain) +int fluid_ladspa_effect_set_mix(fluid_ladspa_fx_t *fx, const char *name, int mix, float gain) { fluid_ladspa_effect_t *effect; @@ -526,19 +525,18 @@ int fluid_ladspa_set_effect_mode(fluid_ladspa_fx_t *fx, const char *name, LADSPA_API_RETURN(fx, FLUID_FAILED); } - if (mode == FLUID_LADSPA_MODE_ADD) + if (mix) { - if (!fluid_ladspa_effect_can_add(fx, name)) + if (!fluid_ladspa_effect_can_mix(fx, name)) { - FLUID_LOG(FLUID_ERR, "Effect '%s' does not support 'add' mode", - effect->desc->Label); + FLUID_LOG(FLUID_ERR, "Effect '%s' does not support mix mode", name); LADSPA_API_RETURN(fx, FLUID_FAILED); } effect->desc->set_run_adding_gain(effect->handle, gain); } - effect->mode = mode; + effect->mix = mix; LADSPA_API_RETURN(fx, FLUID_OK); } diff --git a/src/bindings/fluid_ladspa.h b/src/bindings/fluid_ladspa.h index 9dba4f02..c7d4daf2 100644 --- a/src/bindings/fluid_ladspa.h +++ b/src/bindings/fluid_ladspa.h @@ -57,12 +57,6 @@ typedef enum _fluid_ladspa_node_type_t { } fluid_ladspa_node_type_t; -typedef enum _fluid_ladspa_mode_t { - FLUID_LADSPA_MODE_REPLACE = 0, - FLUID_LADSPA_MODE_ADD, - -} fluid_ladspa_mode_t; - typedef struct _fluid_ladspa_lib_t { char *filename; @@ -99,8 +93,9 @@ typedef struct _fluid_ladspa_effect_t int active; - /* Decides if to replace data in output buffer (default) or add to it */ - fluid_ladspa_mode_t mode; + /* Decides if we should call the run (mix = 0) or run_adding (mix = 1) + * plugin interface */ + int mix; /* Used to keep track of the port connection state */ fluid_ladspa_node_t **port_nodes; @@ -158,9 +153,8 @@ int fluid_ladspa_reset(fluid_ladspa_fx_t *fx); int fluid_ladspa_add_effect(fluid_ladspa_fx_t *fx, const char *effect_name, const char *lib_name, const char *plugin_name); -int fluid_ladspa_effect_can_add(fluid_ladspa_fx_t *fx, const char *name); -int fluid_ladspa_set_effect_mode(fluid_ladspa_fx_t *fx, const char *name, - fluid_ladspa_mode_t mode, float gain); +int fluid_ladspa_effect_can_mix(fluid_ladspa_fx_t *fx, const char *name); +int fluid_ladspa_effect_set_mix(fluid_ladspa_fx_t *fx, const char *name, int mix, float gain); int fluid_ladspa_effect_port_exists(fluid_ladspa_fx_t *fx, const char *effect_name, const char *port_name); int fluid_ladspa_host_port_exists(fluid_ladspa_fx_t *fx, const char *name); int fluid_ladspa_buffer_exists(fluid_ladspa_fx_t *fx, const char *name);