From 75f15accd506ac4cad0b2a801764908303be1fbb Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 7 Sep 2021 20:12:58 +0200 Subject: [PATCH] filter-chain: add dirac pulse --- .../module-filter-chain/builtin_plugin.c | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) 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);