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)
76SPAN_DECLARE(
void) make_goertzel_descriptor(goertzel_descriptor_t *t,
84SPAN_DECLARE(goertzel_state_t *) goertzel_init(goertzel_state_t *s,
85 goertzel_descriptor_t *t);
87SPAN_DECLARE(
int) goertzel_release(goertzel_state_t *s);
89SPAN_DECLARE(
int) goertzel_free(goertzel_state_t *s);
93SPAN_DECLARE(
void) goertzel_reset(goertzel_state_t *s);
100SPAN_DECLARE(
int) goertzel_update(goertzel_state_t *s,
110#if defined(SPANDSP_USE_FIXED_POINT)
111SPAN_DECLARE(int32_t) goertzel_result(goertzel_state_t *s);
113SPAN_DECLARE(
float) goertzel_result(goertzel_state_t *s);
119static __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)
162static __inline__
void goertzel_samplex(goertzel_state_t *s, int16_t amp)
164static __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;
192SPAN_DECLARE(
int) periodogram_generate_coeffs(
complexf_t coeffs[],
float freq,
int sample_rate,
int window_len);
202SPAN_DECLARE(
float) periodogram_generate_phase_offset(
complexf_t *offset,
float freq,
int sample_rate,
int interval);
241#if defined(__cplusplus)
Definition tone_detect.h:33
Definition tone_detect.h:46