]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
make teletone use all doubles
authorAnthony Minessale <anthony.minessale@gmail.com>
Sun, 19 Feb 2006 21:01:55 +0000 (21:01 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Sun, 19 Feb 2006 21:01:55 +0000 (21:01 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@631 d0543943-73ff-0310-b7d9-9358b9ac24b2

libs/libteletone/Makefile.am
libs/libteletone/Makefile.in
libs/libteletone/src/libteletone.h
libs/libteletone/src/libteletone_detect.c
libs/libteletone/src/libteletone_detect.h
libs/libteletone/src/libteletone_generate.h

index 06abcf0fb477adea1b9c45c21718c70e0cf63ee3..8b1212473b177713b8bed9f2e5cf652b8f7f2f11 100644 (file)
@@ -19,6 +19,6 @@ library_include_HEADERS = src/libteletone.h src/libteletone_detect.h src/libtele
 
 
 
-
-
+dox:
+       cd docs && doxygen $(PWD)/docs/Doxygen.conf
 
index dad70598e233bd639f6757ae4f4789785bf3b69b..22beade073d16e78feac38bc43bc6816c4fd2c49 100644 (file)
@@ -731,6 +731,9 @@ uninstall-info: uninstall-info-recursive
        uninstall-info-am uninstall-libLTLIBRARIES \
        uninstall-library_includeHEADERS
 
+
+dox:
+       cd docs && doxygen $(PWD)/docs/Doxygen.conf
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
index 5bd0e0e6d610857512b9fcc1a3c69872b18826f6..d206ae604770b87b7d83bcf201f219437370656c 100644 (file)
@@ -39,6 +39,8 @@ extern "C" {
 #define TELETONE_MAX_TONES 6
 #define TELETONE_TONE_RANGE 127
 
+typedef double teletone_process_t;
+
 /*! \file libteletone.h
     \brief Top level include file
 
@@ -48,7 +50,7 @@ extern "C" {
 /*! \brief An abstraction to store a tone mapping */
 typedef struct {
        /*! An array of tone frequencies */
-       double freqs[TELETONE_MAX_TONES];
+       teletone_process_t freqs[TELETONE_MAX_TONES];
 } teletone_tone_map_t;
 
 
index 2b8cb0396b3ac3332b9486da541eaf74a6207070..148c7aa70fe74ecc8e91aa653d4b9891951d2304 100644 (file)
@@ -63,8 +63,8 @@ static teletone_detection_descriptor_t dtmf_detect_col[GRID_FACTOR];
 static teletone_detection_descriptor_t dtmf_detect_row_2nd[GRID_FACTOR];
 static teletone_detection_descriptor_t dtmf_detect_col_2nd[GRID_FACTOR];
 
-static float dtmf_row[] = {697.0,  770.0,  852.0,  941.0};
-static float dtmf_col[] = {1209.0, 1336.0, 1477.0, 1633.0};
+static teletone_process_t dtmf_row[] = {697.0,  770.0,  852.0,  941.0};
+static teletone_process_t dtmf_col[] = {1209.0, 1336.0, 1477.0, 1633.0};
 
 
 static char dtmf_positions[] = "123A" "456B" "789C" "*0#D";
@@ -79,7 +79,7 @@ void teletone_goertzel_update(teletone_goertzel_state_t *goertzel_state,
                                                          int samples)
 {
     int i;
-    float v1;
+    teletone_process_t v1;
     
     for (i = 0;  i < samples;  i++) {
         v1 = goertzel_state->v2;
@@ -88,7 +88,7 @@ void teletone_goertzel_update(teletone_goertzel_state_t *goertzel_state,
     }
 }
 
-float teletone_goertzel_result (teletone_goertzel_state_t *goertzel_state)
+teletone_process_t teletone_goertzel_result (teletone_goertzel_state_t *goertzel_state)
 {
     return goertzel_state->v3 * goertzel_state->v3 + goertzel_state->v2 * goertzel_state->v2 - goertzel_state->v2 * goertzel_state->v3 * goertzel_state->fac;
 }
@@ -96,21 +96,21 @@ float teletone_goertzel_result (teletone_goertzel_state_t *goertzel_state)
 void teletone_dtmf_detect_init (teletone_dtmf_detect_state_t *dtmf_detect_state, int sample_rate)
 {
     int i;
-    float theta;
+    teletone_process_t theta;
 
     dtmf_detect_state->hit1 = dtmf_detect_state->hit2 = 0;
 
     for (i = 0;  i < GRID_FACTOR;  i++) {
-        theta = M_TWO_PI*(dtmf_row[i]/(float)sample_rate);
+        theta = M_TWO_PI*(dtmf_row[i]/(teletone_process_t)sample_rate);
         dtmf_detect_row[i].fac = 2.0*cos(theta);
 
-        theta = M_TWO_PI*(dtmf_col[i]/(float)sample_rate);
+        theta = M_TWO_PI*(dtmf_col[i]/(teletone_process_t)sample_rate);
         dtmf_detect_col[i].fac = 2.0*cos(theta);
     
-        theta = M_TWO_PI*(dtmf_row[i]*2.0/(float)sample_rate);
+        theta = M_TWO_PI*(dtmf_row[i]*2.0/(teletone_process_t)sample_rate);
         dtmf_detect_row_2nd[i].fac = 2.0*cos(theta);
 
-        theta = M_TWO_PI*(dtmf_col[i]*2.0/(float)sample_rate);
+        theta = M_TWO_PI*(dtmf_col[i]*2.0/(teletone_process_t)sample_rate);
         dtmf_detect_col_2nd[i].fac = 2.0*cos(theta);
     
                goertzel_init (&dtmf_detect_state->row_out[i], &dtmf_detect_row[i]);
@@ -129,7 +129,7 @@ void teletone_dtmf_detect_init (teletone_dtmf_detect_state_t *dtmf_detect_state,
 
 void teletone_multi_tone_init(teletone_multi_tone_t *mt, teletone_tone_map_t *map)
 {
-       float theta = 0;
+       teletone_process_t theta = 0;
        int x = 0;
 
        if(!mt->min_samples) {
@@ -157,7 +157,7 @@ void teletone_multi_tone_init(teletone_multi_tone_t *mt, teletone_tone_map_t *ma
                        break;
                }
                mt->tone_count++;
-               theta = M_TWO_PI*(map->freqs[x]/(float)mt->sample_rate);
+               theta = M_TWO_PI*(map->freqs[x]/(teletone_process_t)mt->sample_rate);
                mt->tdd[x].fac = 2.0 * cos(theta);
                goertzel_init (&mt->gs[x], &mt->tdd[x]);
                goertzel_init (&mt->gs2[x], &mt->tdd[x]);
@@ -170,8 +170,8 @@ int teletone_multi_tone_detect (teletone_multi_tone_t *mt,
                                           int samples)
 {
        int sample, limit, j, x = 0;
-       float v1, famp;
-       float eng_sum = 0, eng_all[TELETONE_MAX_TONES];
+       teletone_process_t v1, famp;
+       teletone_process_t eng_sum = 0, eng_all[TELETONE_MAX_TONES];
        int gtest = 0, see_hit = 0;
 
     for (sample = 0;  sample < samples;  sample = limit) {
@@ -256,10 +256,10 @@ int teletone_dtmf_detect (teletone_dtmf_detect_state_t *dtmf_detect_state,
                  int16_t sample_buffer[],
                  int samples)
 {
-    float row_energy[GRID_FACTOR];
-    float col_energy[GRID_FACTOR];
-    float famp;
-    float v1;
+    teletone_process_t row_energy[GRID_FACTOR];
+    teletone_process_t col_energy[GRID_FACTOR];
+    teletone_process_t famp;
+    teletone_process_t v1;
     int i;
     int j;
     int sample;
index 2edbd437190a1d63f4b930e4468829207c64672c..db60b2dd4d65cdcc94f6940a6e8ab874fbdbc235 100644 (file)
@@ -92,9 +92,9 @@ extern "C" {
 
 /*! \brief A continer for the elements of a Goertzel Algorithm (The names are from his formula) */
 typedef struct {
-       float v2;
-       float v3;
-       float fac;
+       teletone_process_t v2;
+       teletone_process_t v3;
+       teletone_process_t fac;
 } teletone_goertzel_state_t;
        
 /*! \brief A container for a DTMF detection state.*/
@@ -109,7 +109,7 @@ typedef struct {
     teletone_goertzel_state_t col_out[GRID_FACTOR];
     teletone_goertzel_state_t row_out2nd[GRID_FACTOR];
     teletone_goertzel_state_t col_out2nd[GRID_FACTOR];
-    float energy;
+    teletone_process_t energy;
     
     int current_sample;
     char digits[TELETONE_MAX_DTMF_DIGITS + 1];
@@ -121,7 +121,7 @@ typedef struct {
 
 /*! \brief An abstraction to store the coefficient of a tone frequency */
 typedef struct {
-    float fac;
+    teletone_process_t fac;
 } teletone_detection_descriptor_t;
 
 /*! \brief A container for a single multi-tone detection 
@@ -136,7 +136,7 @@ typedef struct {
        teletone_goertzel_state_t gs2[TELETONE_MAX_TONES];
        int tone_count;
 
-       float energy;
+       teletone_process_t energy;
        int current_sample;
        
        int min_samples;
@@ -173,6 +173,7 @@ int teletone_multi_tone_detect (teletone_multi_tone_t *mt,
 
 /*! 
   \brief Initilize a DTMF detection state object
+  \param dtmf_detect_state the DTMF detection state to initilize
   \param sample_rate the desired sample rate
 */
 void teletone_dtmf_detect_init (teletone_dtmf_detect_state_t *dtmf_detect_state, int sample_rate);
@@ -213,7 +214,7 @@ void teletone_goertzel_update(teletone_goertzel_state_t *goertzel_state,
   \param goertzel_state the goertzel state to retrieve from
   \return the computed value for consideration in furthur audio tests
 */
-float teletone_goertzel_result (teletone_goertzel_state_t *goertzel_state);
+teletone_process_t teletone_goertzel_result (teletone_goertzel_state_t *goertzel_state);
 
 
 
index 6177e01002d3b91194089c7f4f742861999db77e..3ccab1cb0c7e1d8bf2bb9fbade0a3b0202a1e495 100644 (file)
@@ -55,7 +55,6 @@ extern "C" {
 */
 
 typedef short teletone_audio_t;
-typedef float teletone_process_t;
 struct teletone_generation_session;
 typedef int (*tone_handler)(struct teletone_generation_session *ts, teletone_tone_map_t *map);
 
@@ -128,6 +127,7 @@ int teletone_set_map(teletone_tone_map_t *map, ...);
   \param ts the tone generation session to initilize
   \param buflen the size of the buffer(in samples) to dynamically allocate
   \param handler a callback function to execute when a tone generation instruction is complete
+  \param user_data optional user data to send
   \return 0
 */
 int teletone_init_session(teletone_generation_session_t *ts, int buflen, tone_handler handler, void *user_data);