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)
86SPAN_DECLARE(
void) make_goertzel_descriptor(goertzel_descriptor_t *t,
94SPAN_DECLARE(goertzel_state_t *) goertzel_init(goertzel_state_t *s,
95 goertzel_descriptor_t *t);
97SPAN_DECLARE(
int) goertzel_release(goertzel_state_t *s);
99SPAN_DECLARE(
int) goertzel_free(goertzel_state_t *s);
103SPAN_DECLARE(
void) goertzel_reset(goertzel_state_t *s);
110SPAN_DECLARE(
int) goertzel_update(goertzel_state_t *s,
120#if defined(SPANDSP_USE_FIXED_POINT)
121SPAN_DECLARE(int32_t) goertzel_result(goertzel_state_t *s);
123SPAN_DECLARE(
float) goertzel_result(goertzel_state_t *s);
129static __inline__
void goertzel_sample(goertzel_state_t *s, int16_t amp)
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)
172static __inline__
void goertzel_samplex(goertzel_state_t *s, int16_t amp)
174static __inline__
void goertzel_samplex(goertzel_state_t *s,
float amp)
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;
202SPAN_DECLARE(
int) periodogram_generate_coeffs(
complexf_t coeffs[],
float freq,
int sample_rate,
int window_len);
212SPAN_DECLARE(
float) periodogram_generate_phase_offset(
complexf_t *offset,
float freq,
int sample_rate,
int interval);
251#if defined(__cplusplus)
Definition tone_detect.h:33
Definition tone_detect.h:46