|
spandsp 0.0.6
|
#include <inttypes.h>#include <stdlib.h>#include "floating_fudge.h"#include <string.h>#include <stdio.h>#include <time.h>#include <fcntl.h>#include "spandsp/telephony.h"#include "spandsp/complex.h"#include "spandsp/complex_vector_float.h"#include "spandsp/tone_detect.h"#include "spandsp/tone_generate.h"#include "spandsp/private/tone_detect.h"Macros | |
| #define | M_PI 3.14159265358979323846264338327 |
Functions | |
| void | make_goertzel_descriptor (goertzel_descriptor_t *t, float freq, int samples) |
| Create a descriptor for use with either a Goertzel transform. | |
| goertzel_state_t * | goertzel_init (goertzel_state_t *s, goertzel_descriptor_t *t) |
| Initialise the state of a Goertzel transform. | |
| int | goertzel_release (goertzel_state_t *s) |
| int | goertzel_free (goertzel_state_t *s) |
| void | goertzel_reset (goertzel_state_t *s) |
| Reset the state of a Goertzel transform. | |
| int | goertzel_update (goertzel_state_t *s, const int16_t amp[], int samples) |
| Update the state of a Goertzel transform. | |
| float | goertzel_result (goertzel_state_t *s) |
| Evaluate the final result of a Goertzel transform. | |
| complexf_t | periodogram (const complexf_t coeffs[], const complexf_t amp[], int len) |
| int | periodogram_prepare (complexf_t sum[], complexf_t diff[], const complexf_t amp[], int len) |
| complexf_t | periodogram_apply (const complexf_t coeffs[], const complexf_t sum[], const complexf_t diff[], int len) |
| int | periodogram_generate_coeffs (complexf_t coeffs[], float freq, int sample_rate, int window_len) |
| float | periodogram_generate_phase_offset (complexf_t *offset, float freq, int sample_rate, int interval) |
| float | periodogram_freq_error (const complexf_t *phase_offset, float scale, const complexf_t *last_result, const complexf_t *result) |
| goertzel_state_t * goertzel_init | ( | goertzel_state_t * | s, |
| goertzel_descriptor_t * | t | ||
| ) |
Initialise the state of a Goertzel transform.
| s | The Goertzel context. If NULL, a context is allocated with malloc. |
| t | The Goertzel descriptor. |
| void goertzel_reset | ( | goertzel_state_t * | s | ) |
Reset the state of a Goertzel transform.
| s | The Goertzel context. |
Referenced by goertzel_result().
| float goertzel_result | ( | goertzel_state_t * | s | ) |
Evaluate the final result of a Goertzel transform.
| s | The Goertzel context. |
References goertzel_reset().
| int goertzel_update | ( | goertzel_state_t * | s, |
| const int16_t | amp[], | ||
| int | samples | ||
| ) |
Update the state of a Goertzel transform.
| s | The Goertzel context. |
| amp | The samples to be transformed. |
| samples | The number of samples. |
| complexf_t periodogram | ( | const complexf_t | coeffs[], |
| const complexf_t | amp[], | ||
| int | len | ||
| ) |
Evaluate a periodogram.
| coeffs | A set of coefficients generated by periodogram_generate_coeffs(). |
| amp | The complex amplitude of the signal. |
| len | The length of the periodogram, in samples. This must be an even number. |
References complexf_t::im, and complexf_t::re.
| complexf_t periodogram_apply | ( | const complexf_t | coeffs[], |
| const complexf_t | sum[], | ||
| const complexf_t | diff[], | ||
| int | len | ||
| ) |
Evaluate a periodogram, based on data prepared by periodogram_prepare(). This is more efficient than using periodogram() when several periodograms are to be applied to the same signal.
| coeffs | A set of coefficients generated by periodogram_generate_coeffs(). |
| sum | A vector of sums produced by periodogram_prepare(). |
| diff | A vector of differences produced by periodogram_prepare(). |
| len | The length of the periodogram, in samples. This must be an even number. |
References complexf_t::im, and complexf_t::re.
| float periodogram_freq_error | ( | const complexf_t * | phase_offset, |
| float | scale, | ||
| const complexf_t * | last_result, | ||
| const complexf_t * | result | ||
| ) |
Apply a phase offset, to find the frequency error between periodogram evaluations. specified interval.
| phase_offset | A point to the expected phase offset. |
| scale | The scaling factor to be used. |
| last_result | A pointer to the previous periodogram result. |
| result | A pointer to the current periodogram result. |
References complexf_t::im, and complexf_t::re.
| int periodogram_generate_coeffs | ( | complexf_t | coeffs[], |
| float | freq, | ||
| int | sample_rate, | ||
| int | window_len | ||
| ) |
Generate a Hamming weighted coefficient set, to be used for a periodogram analysis.
| coeffs | The generated coefficients. |
| freq | The frequency to be matched by the periodogram, in Hz. |
| sample_rate | The sample rate of the signal, in samples per second. |
| window_len | The length of the periodogram window. This must be an even number. |
References complexf_t::im, and complexf_t::re.
| float periodogram_generate_phase_offset | ( | complexf_t * | offset, |
| float | freq, | ||
| int | sample_rate, | ||
| int | interval | ||
| ) |
Generate the phase offset to be expected between successive periodograms evaluated at the specified interval.
| offset | A point to the generated phase offset. |
| freq | The frequency being matched by the periodogram, in Hz. |
| sample_rate | The sample rate of the signal, in samples per second. |
| interval | The interval between periodograms, in samples. |
References complexf_t::im, and complexf_t::re.
| int periodogram_prepare | ( | complexf_t | sum[], |
| complexf_t | diff[], | ||
| const complexf_t | amp[], | ||
| int | len | ||
| ) |
Prepare data for evaluating a set of periodograms.
| sum | A vector of sums of pairs of signal samples. This will be half the length of len. |
| diff | A vector of differences between pairs of signal samples. This will be half the length of len. |
| amp | The complex amplitude of the signal. |
| len | The length of the periodogram, in samples. This must be an even number. |