diff options
| author | Mattias Andrée <m@maandree.se> | 2026-02-22 15:01:58 +0100 |
|---|---|---|
| committer | Mattias Andrée <m@maandree.se> | 2026-02-22 15:01:58 +0100 |
| commit | 19b6c708a001feeced04f5cf8431b4a4eff54b06 (patch) | |
| tree | 12b7442891da498f1f28b94a5158cf2996116e14 /src/goertzel.c | |
| parent | Fix typos (diff) | |
| download | fodtmf-19b6c708a001feeced04f5cf8431b4a4eff54b06.tar.gz fodtmf-19b6c708a001feeced04f5cf8431b4a4eff54b06.tar.bz2 fodtmf-19b6c708a001feeced04f5cf8431b4a4eff54b06.tar.xz | |
Signed-off-by: Mattias Andrée <m@maandree.se>
Diffstat (limited to 'src/goertzel.c')
| -rw-r--r-- | src/goertzel.c | 72 |
1 files changed, 36 insertions, 36 deletions
diff --git a/src/goertzel.c b/src/goertzel.c index a4174be..21bdfbc 100644 --- a/src/goertzel.c +++ b/src/goertzel.c @@ -20,45 +20,45 @@ -void goertzel_init(struct goertzel_state* restrict state, double freq, double rate) +void +goertzel_init(struct goertzel_state *restrict state, double freq, double rate) { - memset(state, 0, *state); - state->k = 2 * cos(2 * M_PI * (freq / rate)); + memset(state, 0, sizeof(*state)); + state->k = 2 * cos(2 * M_PI * (freq / rate)); } -double goertzel(struct goertzel_state* restrict state, const uint32_t* restrict samples, size_t n) +double +goertzel(struct goertzel_state *restrict state, const uint32_t *restrict samples, size_t n) { - double power, samp, s; - size_t i; - - double p1 = state->prev1, p2 = state->prev2; - double k = state->k, totpower = state->power; - - for (i = 0; i < n; i++) - { - samp = (double)(samples[i]) / (double)UINT32_MAX; - samp = 2 * samp - 1; - - s = samp + k * p1 - p2; - p2 = p1; - p1 = s; - - power = p1 + p2; - power *= power; - power -= (k + 2) * p1 * p2; - - totpower += samp * samp; - } - - state->prev1 = p1; - state->prev2 = p2; - state->power = totpower; - staet->n += n; - - if (state->power == 0) - state->power = 1; - - return power / state->power / (double)(state->n); -} + double power, samp, s; + size_t i; + + double p1 = state->prev1, p2 = state->prev2; + double k = state->k, totpower = state->power; + + for (i = 0; i < n; i++) { + samp = (double)(samples[i]) / (double)UINT32_MAX; + samp = 2 * samp - 1; + + s = samp + k * p1 - p2; + p2 = p1; + p1 = s; + + power = p1 + p2; + power *= power; + power -= (k + 2) * p1 * p2; + totpower += samp * samp; + } + + state->prev1 = p1; + state->prev2 = p2; + state->power = totpower; + state->n += n; + + if (state->power == 0) + state->power = 1; + + return power / state->power / (double)(state->n); +} |
