[Freeswitch-svn] [commit] r5278 - freeswitch/trunk/libs/libteletone/src

Freeswitch SVN mikej at freeswitch.org
Wed Jun 6 21:02:39 EDT 2007


Author: mikej
Date: Wed Jun  6 21:02:39 2007
New Revision: 5278

Modified:
   freeswitch/trunk/libs/libteletone/src/libteletone.h
   freeswitch/trunk/libs/libteletone/src/libteletone_detect.c
   freeswitch/trunk/libs/libteletone/src/libteletone_generate.c
   freeswitch/trunk/libs/libteletone/src/libteletone_generate.h

Log:
switch teletone to use float.

Modified: freeswitch/trunk/libs/libteletone/src/libteletone.h
==============================================================================
--- freeswitch/trunk/libs/libteletone/src/libteletone.h	(original)
+++ freeswitch/trunk/libs/libteletone/src/libteletone.h	Wed Jun  6 21:02:39 2007
@@ -78,7 +78,7 @@
 #define TELETONE_MAX_TONES 6
 #define TELETONE_TONE_RANGE 127
 
-typedef double teletone_process_t;
+typedef float teletone_process_t;
 
 /*! \file libteletone.h
     \brief Top level include file

Modified: freeswitch/trunk/libs/libteletone/src/libteletone_detect.c
==============================================================================
--- freeswitch/trunk/libs/libteletone/src/libteletone_detect.c	(original)
+++ freeswitch/trunk/libs/libteletone/src/libteletone_detect.c	Wed Jun  6 21:02:39 2007
@@ -144,17 +144,17 @@
     dtmf_detect_state->hit1 = dtmf_detect_state->hit2 = 0;
 
     for (i = 0;  i < GRID_FACTOR;  i++) {
-        theta = M_TWO_PI*(dtmf_row[i]/(teletone_process_t)sample_rate);
-        dtmf_detect_row[i].fac = 2.0*cos(theta);
+        theta = (teletone_process_t)(M_TWO_PI*(dtmf_row[i]/(teletone_process_t)sample_rate));
+        dtmf_detect_row[i].fac = (teletone_process_t)(2.0*cos(theta));
 
-        theta = M_TWO_PI*(dtmf_col[i]/(teletone_process_t)sample_rate);
-        dtmf_detect_col[i].fac = 2.0*cos(theta);
+        theta = (teletone_process_t)(M_TWO_PI*(dtmf_col[i]/(teletone_process_t)sample_rate));
+        dtmf_detect_col[i].fac = (teletone_process_t)(2.0*cos(theta));
     
-        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 = (teletone_process_t)(M_TWO_PI*(dtmf_row[i]*2.0/(teletone_process_t)sample_rate));
+        dtmf_detect_row_2nd[i].fac = (teletone_process_t)(2.0*cos(theta));
 
-        theta = M_TWO_PI*(dtmf_col[i]*2.0/(teletone_process_t)sample_rate);
-        dtmf_detect_col_2nd[i].fac = 2.0*cos(theta);
+        theta = (teletone_process_t)(M_TWO_PI*(dtmf_col[i]*2.0/(teletone_process_t)sample_rate));
+        dtmf_detect_col_2nd[i].fac = (teletone_process_t)(2.0*cos(theta));
     
 		goertzel_init (&dtmf_detect_state->row_out[i], &dtmf_detect_row[i]);
     	goertzel_init (&dtmf_detect_state->col_out[i], &dtmf_detect_col[i]);
@@ -200,8 +200,8 @@
 			break;
 		}
 		mt->tone_count++;
-		theta = M_TWO_PI*(map->freqs[x]/(teletone_process_t)mt->sample_rate);
-		mt->tdd[x].fac = 2.0 * cos(theta);
+		theta = (teletone_process_t)(M_TWO_PI*(map->freqs[x]/(teletone_process_t)mt->sample_rate));
+		mt->tdd[x].fac = (teletone_process_t)(2.0 * cos(theta));
 		goertzel_init (&mt->gs[x], &mt->tdd[x]);
 		goertzel_init (&mt->gs2[x], &mt->tdd[x]);
 	}

Modified: freeswitch/trunk/libs/libteletone/src/libteletone_generate.c
==============================================================================
--- freeswitch/trunk/libs/libteletone/src/libteletone_generate.c	(original)
+++ freeswitch/trunk/libs/libteletone/src/libteletone_generate.c	Wed Jun  6 21:02:39 2007
@@ -211,7 +211,7 @@
 	int wait = 0;
 	int32_t sample;
 	int32_t dc = 0;
-	float vol = ts->volume;
+	teletone_process_t vol = ts->volume;
 	ts->samples = 0;
 	memset(tones, 0, sizeof(tones[0]) * TELETONE_MAX_TONES);
 	duration = (ts->tmp_duration > -1) ? ts->tmp_duration : ts->duration;
@@ -234,7 +234,7 @@
 
 		for (ts->samples = 0; ts->samples < ts->datalen && ts->samples < duration; ts->samples++) {
 			if (ts->decay_direction && ++dc >= ts->decay_step) {
-				float nvol = vol + ts->decay_direction * ts->decay_factor;
+				teletone_process_t nvol = vol + ts->decay_direction * ts->decay_factor;
 				int j;
 
 				if (nvol <= TELETONE_VOL_DB_MAX && nvol >= TELETONE_VOL_DB_MIN) {
@@ -355,7 +355,7 @@
 					break;
 				case 'v':
 					{
-						float vol = atof(cur + 2);
+						teletone_process_t vol = (teletone_process_t)atof(cur + 2);
 						if (vol <= TELETONE_VOL_DB_MAX && vol >= TELETONE_VOL_DB_MIN) {
 							ts->volume = vol;
 						}
@@ -370,7 +370,7 @@
 					ts->decay_direction = 1;
 					break;
 				case '+':
-					ts->decay_factor = atof(cur + 2);
+					ts->decay_factor = (teletone_process_t)atof(cur + 2);
 					break;
 				case 'w':
 					ts->wait = atoi(cur + 2) * (ts->rate / 1000);
@@ -419,7 +419,7 @@
 									ts->tmp_wait = atoi(p) * (ts->rate / 1000);
 									i++;
 								} else {
-									mymap.freqs[i++ - 2] = atof(p);
+									mymap.freqs[i++ - 2] = (teletone_process_t)atof(p);
 								}
 								p = next;
 

Modified: freeswitch/trunk/libs/libteletone/src/libteletone_generate.h
==============================================================================
--- freeswitch/trunk/libs/libteletone/src/libteletone_generate.h	(original)
+++ freeswitch/trunk/libs/libteletone/src/libteletone_generate.h	Wed Jun  6 21:02:39 2007
@@ -79,7 +79,23 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#ifdef WIN32
+#ifdef _MSC_VER
+#ifndef __inline__
+#define __inline__ __inline
+#endif
+#endif
+typedef unsigned __int64 uint64_t;
+typedef unsigned __int32 uint32_t;
+typedef unsigned __int16 uint16_t;
+typedef unsigned __int8 uint8_t;
+typedef __int64 int64_t;
+typedef __int32 int32_t;
+typedef __int16 int16_t;
+typedef __int8 int8_t;
+#else
 #include <stdint.h>
+#endif
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
@@ -89,17 +105,9 @@
 #endif
 #include <string.h>
 #include <errno.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
 #ifndef _MSC_VER
 #include <unistd.h>
-#include <stdint.h>
 #endif
-#include <fcntl.h>
-#include <sys/types.h>
-#include <errno.h>
 #include <assert.h>
 #include <stdarg.h>
 #include <libteletone.h>
@@ -112,7 +120,7 @@
 	uint32_t scale_factor;
 	uint32_t phase_accumulator;
 	int16_t sample;
-	float tx_level;
+	teletone_process_t tx_level;
 };
 typedef struct teletone_dds_state teletone_dds_state_t;
 
@@ -145,7 +153,7 @@
     return (int16_t) (sample * dds->scale_factor >> 15);
 }
 
-static __inline__ void teletone_dds_state_set_tone(teletone_dds_state_t *dds, float tone, uint32_t rate, float tx_level)
+static __inline__ void teletone_dds_state_set_tone(teletone_dds_state_t *dds, teletone_process_t tone, uint32_t rate, teletone_process_t tx_level)
 {
 	dds->phase_accumulator = 0;
 	dds->phase_rate = (int32_t) ((tone * MAX_PHASE_ACCUMULATOR) / rate);
@@ -158,7 +166,7 @@
 	dds->tx_level = tx_level;
 }
 
-static __inline__ void teletone_dds_state_set_tx_level(teletone_dds_state_t *dds, float tx_level)
+static __inline__ void teletone_dds_state_set_tx_level(teletone_dds_state_t *dds, teletone_process_t tx_level)
 {
 	dds->scale_factor = (int) (powf(10.0f, (tx_level - DBM0_MAX_POWER) / 20.0f) * (32767.0f * 1.414214f));
 }
@@ -196,13 +204,13 @@
 	/*! Number of loops to repeat the entire set of instructions*/
 	int LOOPS;
 	/*! Number to mutiply total samples by to determine when to begin ascent or decent e.g. 0=beginning 4=(last 25%) */
-	float decay_factor;
+	teletone_process_t decay_factor;
 	/*! Direction to perform volume increase/decrease 1/-1*/
 	int decay_direction;
 	/*! Number of samples between increase/decrease of volume */
 	int decay_step;
 	/*! Volume factor of the tone */
-	float volume;
+	teletone_process_t volume;
 	/*! Debug on/off */
 	int debug;
 	/*! FILE stream to write debug data to */



More information about the Freeswitch-svn mailing list