26 #if !defined(_SPANDSP_TONE_DETECT_H_) 27 #define _SPANDSP_TONE_DETECT_H_ 34 #if defined(SPANDSP_USE_FIXED_POINT) 47 #if defined(SPANDSP_USE_FIXED_POINT) 70 #if defined(__cplusplus) 84 SPAN_DECLARE(goertzel_state_t *)
goertzel_init(goertzel_state_t *s,
85 goertzel_descriptor_t *t);
87 SPAN_DECLARE(
int) goertzel_release(goertzel_state_t *s);
89 SPAN_DECLARE(
int) goertzel_free(goertzel_state_t *s);
110 #if defined(SPANDSP_USE_FIXED_POINT) 119 static __inline__
void goertzel_sample(goertzel_state_t *s, int16_t amp)
121 #if defined(SPANDSP_USE_FIXED_POINT) 130 #if defined(SPANDSP_USE_FIXED_POINT) 131 x = (((int32_t) s->fac*s->v2) >> 14);
136 s->v3 = x - v1 + (amp >> 7);
138 s->v3 = s->fac*s->v2 - v1 + amp;
148 #if defined(SPANDSP_USE_FIXED_POINT) 149 #define goertzel_preadjust_amp(amp) (((int16_t) amp) >> 7) 151 #define goertzel_preadjust_amp(amp) ((float) amp) 161 #if defined(SPANDSP_USE_FIXED_POINT) 162 static __inline__
void goertzel_samplex(goertzel_state_t *s, int16_t amp)
164 static __inline__
void goertzel_samplex(goertzel_state_t *s,
float amp)
167 #if defined(SPANDSP_USE_FIXED_POINT) 176 #if defined(SPANDSP_USE_FIXED_POINT) 177 x = (((int32_t) s->fac*s->v2) >> 14);
178 s->v3 = x - v1 + amp;
180 s->v3 = s->fac*s->v2 - v1 + amp;
241 #if defined(__cplusplus) int goertzel_update(goertzel_state_t *s, const int16_t amp[], int samples)
Update the state of a Goertzel transform.
Definition: tone_detect.c:119
float periodogram_generate_phase_offset(complexf_t *offset, float freq, int sample_rate, int interval)
Definition: tone_detect.c:277
void make_goertzel_descriptor(goertzel_descriptor_t *t, float freq, int samples)
Create a descriptor for use with either a Goertzel transform.
Definition: tone_detect.c:59
complexf_t periodogram_apply(const complexf_t coeffs[], const complexf_t sum[], const complexf_t diff[], int len)
Definition: tone_detect.c:233
void goertzel_reset(goertzel_state_t *s)
Reset the state of a Goertzel transform.
Definition: tone_detect.c:106
float periodogram_freq_error(const complexf_t *phase_offset, float scale, const complexf_t *last_result, const complexf_t *result)
Definition: tone_detect.c:289
complexf_t periodogram(const complexf_t coeffs[], const complexf_t amp[], int len)
Definition: tone_detect.c:201
goertzel_state_t * goertzel_init(goertzel_state_t *s, goertzel_descriptor_t *t)
Initialise the state of a Goertzel transform.
Definition: tone_detect.c:70
int periodogram_generate_coeffs(complexf_t coeffs[], float freq, int sample_rate, int window_len)
Definition: tone_detect.c:248
float goertzel_result(goertzel_state_t *s)
Evaluate the final result of a Goertzel transform.
Definition: tone_detect.c:156
Definition: tone_detect.h:45
int periodogram_prepare(complexf_t sum[], complexf_t diff[], const complexf_t amp[], int len)
Definition: tone_detect.c:220
Definition: tone_detect.h:32