37 static pthread_mutex_t
mutex = PTHREAD_MUTEX_INITIALIZER;
50 g_return_val_if_fail (header !=
NULL,
TRUE);
66 pthread_mutex_lock (&
mutex);
68 AUDDBG (
"Starting effects.\n");
81 pthread_mutex_unlock (&
mutex);
107 pthread_mutex_lock (&
mutex);
112 pthread_mutex_unlock (&
mutex);
117 pthread_mutex_lock (&
mutex);
125 pthread_mutex_unlock (&
mutex);
130 pthread_mutex_lock (&
mutex);
133 ((
RunningEffect *) node->data)->header->finish (data, samples);
135 pthread_mutex_unlock (&
mutex);
140 pthread_mutex_lock (&
mutex);
145 delay = ((
RunningEffect *) node->data)->header->adjust_delay (delay);
148 pthread_mutex_unlock (&
mutex);
154 return (effect->
plugin == plugin) ? 0 : -1;
179 if (node->prev !=
NULL)
196 header->start (& channels, & rate);
203 GList * node = g_list_find_custom (
running_effects, plugin, (GCompareFunc)
215 if (ep->preserves_format)
217 pthread_mutex_lock (&
mutex);
224 pthread_mutex_unlock (&
mutex);
238 g_return_val_if_fail (ep !=
NULL,
FALSE);
250 g_return_if_fail (ep !=
NULL);
static int input_channels
bool_t effect_plugin_start(PluginHandle *plugin)
static bool_t effect_start_cb(PluginHandle *plugin, EffectStartState *state)
int plugin_compare(PluginHandle *a, PluginHandle *b)
static float a[EQ_BANDS][2]
int effect_adjust_delay(int delay)
static float b[EQ_BANDS][2]
#define PLUGIN_HAS_FUNC(p, func)
void effect_process(float **data, int *samples)
void effect_finish(float **data, int *samples)
static void effect_insert(PluginHandle *plugin, EffectPlugin *header)
static void effect_remove(PluginHandle *plugin)
static void effect_enable(PluginHandle *plugin, EffectPlugin *ep, bool_t enable)
void effect_plugin_stop(PluginHandle *plugin)
const void * plugin_get_header(PluginHandle *plugin)
static int effect_find_cb(RunningEffect *effect, PluginHandle *plugin)
bool_t(* PluginForEachFunc)(PluginHandle *plugin, void *data)
void effect_start(int *channels, int *rate)
static GList * running_effects
static int effect_compare(RunningEffect *a, RunningEffect *b)
void output_reset(int type)
void plugin_for_enabled(int type, PluginForEachFunc func, void *data)
static void effect_process_cb(RunningEffect *effect, EffectProcessState *state)
void data PluginHandle plugin
const char * plugin_get_name(PluginHandle *plugin)
static pthread_mutex_t mutex
bool_t drct_get_playing(void)