#include <stdlib.h>#include <string.h>#include <stdio.h>#include <fcntl.h>#include <ctype.h>#include <time.h>#include <inttypes.h>#include "floating_fudge.h"#include "spandsp/telephony.h"#include "spandsp/complex.h"#include "spandsp/vector_float.h"#include "spandsp/complex_vector_float.h"#include "spandsp/tone_detect.h"#include "spandsp/tone_generate.h"#include "spandsp/super_tone_rx.h"Defines | |
| #define | DETECTION_THRESHOLD 269338317.0f |
| #define | TONE_TWIST 3.981f |
| #define | TONE_TO_TOTAL_ENERGY 1.995f |
| #define | DTMF_TO_TOTAL_ENERGY 64.152f |
Functions | |
| int | super_tone_rx_add_tone (super_tone_rx_descriptor_t *desc) |
| int | super_tone_rx_add_element (super_tone_rx_descriptor_t *desc, int tone, int f1, int f2, int min, int max) |
| super_tone_rx_descriptor_t * | super_tone_rx_make_descriptor (super_tone_rx_descriptor_t *desc) |
| int | super_tone_rx_free_descriptor (super_tone_rx_descriptor_t *desc) |
| void | super_tone_rx_segment_callback (super_tone_rx_state_t *s, void(*callback)(void *data, int f1, int f2, int duration)) |
| super_tone_rx_state_t * | super_tone_rx_init (super_tone_rx_state_t *s, super_tone_rx_descriptor_t *desc, tone_report_func_t callback, void *user_data) |
| int | super_tone_rx_free (super_tone_rx_state_t *s) |
| int | super_tone_rx (super_tone_rx_state_t *s, const int16_t amp[], int samples) |
| Apply supervisory tone detection processing to a block of audio samples. | |
| int super_tone_rx | ( | super_tone_rx_state_t * | super, | |
| const int16_t | amp[], | |||
| int | samples | |||
| ) |
Apply supervisory tone detection processing to a block of audio samples.
Apply supervisory tone detection processing to a block of audio samples.
| super | The supervisory tone context. | |
| amp | The audio sample buffer. | |
| samples | The number of samples in the buffer. |
References goertzel_update().
| int super_tone_rx_add_element | ( | super_tone_rx_descriptor_t * | desc, | |
| int | tone, | |||
| int | f1, | |||
| int | f2, | |||
| int | min, | |||
| int | max | |||
| ) |
Add a new tone pattern element to a tone pattern in a supervisory tone detector.
| desc | The supervisory tone set desciptor. | |
| tone | The tone ID within the descriptor. | |
| f1 | Frequency 1 (-1 for a silent period). | |
| f2 | Frequency 2 (-1 for a silent period, or only one frequency). | |
| min | The minimum duration, in ms. | |
| max | The maximum duration, in ms. |
| int super_tone_rx_add_tone | ( | super_tone_rx_descriptor_t * | desc | ) |
Add a new tone pattern to a supervisory tone detector set.
| desc | The supervisory tone set descriptor. |
| int super_tone_rx_free | ( | super_tone_rx_state_t * | s | ) |
Release a supervisory tone detector.
| s | The supervisory tone context. |
| int super_tone_rx_free_descriptor | ( | super_tone_rx_descriptor_t * | desc | ) |
Free a supervisory tone detector descriptor.
| desc | The supervisory tone set desciptor. |
| super_tone_rx_state_t* super_tone_rx_init | ( | super_tone_rx_state_t * | s, | |
| super_tone_rx_descriptor_t * | desc, | |||
| tone_report_func_t | callback, | |||
| void * | user_data | |||
| ) |
Initialise a supervisory tone detector.
| s | The supervisory tone detector context. | |
| desc | The tone descriptor. | |
| callback | The callback routine called to report the valid detection or termination of one of the monitored tones. | |
| user_data | An opaque pointer passed when calling the callback routine. |
References goertzel_init().
| super_tone_rx_descriptor_t* super_tone_rx_make_descriptor | ( | super_tone_rx_descriptor_t * | desc | ) |
Create a new supervisory tone detector descriptor.
| desc | The supervisory tone set desciptor. If NULL, the routine will allocate space for a descriptor. |
| void super_tone_rx_segment_callback | ( | super_tone_rx_state_t * | s, | |
| void(*)(void *data, int f1, int f2, int duration) | callback | |||
| ) |
Define a callback routine to be called each time a tone pattern element is complete. This is mostly used when analysing a tone.
| s | The supervisory tone context. | |
| callback | The callback routine. |
1.5.6