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) 62 #if defined(SPANDSP_USE_FIXED_POINT) 63 #define goertzel_threshold_dbm0(len,thresh) (int) ((len*len*256.0f*256.0f/2.0f)*powf(10.0f, (thresh - DBM0_MAX_SINE_POWER)/10.0f)) 64 #define goertzel_threshold_dbmov(len,thresh) (int) ((len*len*256.0f*256.0f/2.0f)*powf(10.0f, (thresh - DBMOV_MAX_SINE_POWER)/10.0f)) 66 #define goertzel_threshold_dbm0(len,thresh) (float) ((len*len*32768.0f*32768.0f/2.0f)*powf(10.0f, (thresh - DBM0_MAX_SINE_POWER)/10.0f)) 67 #define goertzel_threshold_dbmov(len,thresh) (float) ((len*len*32768.0f*32768.0f/2.0f)*powf(10.0f, (thresh - DBMOV_MAX_SINE_POWER)/10.0f)) 80 #if defined(__cplusplus) 120 #if defined(SPANDSP_USE_FIXED_POINT) 131 #if defined(SPANDSP_USE_FIXED_POINT) 140 #if defined(SPANDSP_USE_FIXED_POINT) 141 x = (((int32_t) s->fac*s->v2) >> 14);
146 s->v3 = x - v1 + (amp >> 7);
148 s->v3 = s->fac*s->v2 - v1 + amp;
158 #if defined(SPANDSP_USE_FIXED_POINT) 159 #define goertzel_preadjust_amp(amp) (((int16_t) amp) >> 7) 161 #define goertzel_preadjust_amp(amp) ((float) amp) 171 #if defined(SPANDSP_USE_FIXED_POINT) 177 #if defined(SPANDSP_USE_FIXED_POINT) 186 #if defined(SPANDSP_USE_FIXED_POINT) 187 x = (((int32_t) s->fac*s->v2) >> 14);
188 s->v3 = x - v1 + amp;
190 s->v3 = s->fac*s->v2 - v1 + amp;
251 #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:123
float periodogram_generate_phase_offset(complexf_t *offset, float freq, int sample_rate, int interval)
Definition: tone_detect.c:289
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:60
complexf_t periodogram_apply(const complexf_t coeffs[], const complexf_t sum[], const complexf_t diff[], int len)
Definition: tone_detect.c:242
void goertzel_reset(goertzel_state_t *s)
Reset the state of a Goertzel transform.
Definition: tone_detect.c:110
float periodogram_freq_error(const complexf_t *phase_offset, float scale, const complexf_t *last_result, const complexf_t *result)
Definition: tone_detect.c:301
complexf_t periodogram(const complexf_t coeffs[], const complexf_t amp[], int len)
Definition: tone_detect.c:208
goertzel_state_t * goertzel_init(goertzel_state_t *s, goertzel_descriptor_t *t)
Initialise the state of a Goertzel transform.
Definition: tone_detect.c:71
int periodogram_generate_coeffs(complexf_t coeffs[], float freq, int sample_rate, int window_len)
Definition: tone_detect.c:258
float goertzel_result(goertzel_state_t *s)
Evaluate the final result of a Goertzel transform.
Definition: tone_detect.c:162
Definition: tone_detect.h:45
int periodogram_prepare(complexf_t sum[], complexf_t diff[], const complexf_t amp[], int len)
Definition: tone_detect.c:228
Definition: tone_detect.h:32