diff --git a/src/modules/module-filter-chain/builtin_plugin.c b/src/modules/module-filter-chain/builtin_plugin.c index 159991af2..cbd0b3344 100644 --- a/src/modules/module-filter-chain/builtin_plugin.c +++ b/src/modules/module-filter-chain/builtin_plugin.c @@ -551,6 +551,24 @@ static float *create_hilbert(const char *filename, float gain, int delay, int of return samples; } +static float *create_dirac(const char *filename, float gain, int delay, int offset, + int length, int *n_samples) +{ + float *samples; + int n; + + n = delay + 1; + + samples = calloc(n, sizeof(float)); + if (samples == NULL) + return NULL; + + samples[delay] = gain; + + *n_samples = n; + return samples; +} + static void * convolver_instantiate(const struct fc_descriptor * Descriptor, unsigned long SampleRate, int index, const char *config) { @@ -619,6 +637,9 @@ static void * convolver_instantiate(const struct fc_descriptor * Descriptor, if (spa_streq(filename, "/hilbert")) { samples = create_hilbert(filename, gain, delay, offset, length, &n_samples); + } else if (spa_streq(filename, "/dirac")) { + samples = create_dirac(filename, gain, delay, offset, + length, &n_samples); } else { samples = read_samples(filename, gain, delay, offset, length, channel, &n_samples);