Revision
16261
Author
gmaruzz
Date
2010-01-12 10:24:23 -0600 (Tue, 12 Jan 2010)

Log Message

gsmopen: portaudio reads from config, speex reset echo_state when portaudio reads a number of samples different from 160 (usually 0)

Modified Paths

Diff

Modified: freeswitch/branches/gmaruzz/mod_gsmopen/gsmopen_protocol.cpp (16260 => 16261)


--- freeswitch/branches/gmaruzz/mod_gsmopen/gsmopen_protocol.cpp	2010-01-12 16:13:03 UTC (rev 16260)
+++ freeswitch/branches/gmaruzz/mod_gsmopen/gsmopen_protocol.cpp	2010-01-12 16:24:23 UTC (rev 16261)
@@ -124,6 +124,7 @@
   PaStreamParameters inputParameters, outputParameters;
   int numdevices;
   const PaDeviceInfo *deviceInfo;
+  long owner=1;
 
 #ifndef GIOVA48
   setenv("PA_ALSA_PLUGHW", "1", 1);
@@ -211,7 +212,8 @@
 #ifndef GIOVA48
     OpenAudioStream(&tech_pvt->stream, &inputParameters, &outputParameters, 8000,
                     paDitherOff | paClipOff, SAMPLES_PER_FRAME, tech_pvt->audiopipe[1],
-                    &tech_pvt->speexecho, &tech_pvt->speexpreprocess, &tech_pvt->owner);
+                    &tech_pvt->speexecho, &tech_pvt->speexpreprocess, &owner);
+                    //&tech_pvt->speexecho, &tech_pvt->speexpreprocess, &tech_pvt->owner);
 
 #else // GIOVA48
     OpenAudioStream(&tech_pvt->stream, &inputParameters, &outputParameters, 48000,

Modified: freeswitch/branches/gmaruzz/mod_gsmopen/mod_gsmopen.cpp (16260 => 16261)


--- freeswitch/branches/gmaruzz/mod_gsmopen/mod_gsmopen.cpp	2010-01-12 16:13:03 UTC (rev 16260)
+++ freeswitch/branches/gmaruzz/mod_gsmopen/mod_gsmopen.cpp	2010-01-12 16:24:23 UTC (rev 16261)
@@ -846,6 +846,9 @@
 	tech_pvt->read_frame.datalen = 2;
 	tech_pvt->read_frame.flags = SFF_CNG;
 	*frame = &tech_pvt->read_frame;
+#ifdef GSMOPEN_PORTAUDIO
+		speex_echo_state_reset(tech_pvt->stream->echo_state);
+#endif // GSMOPEN_PORTAUDIO
 	return SWITCH_STATUS_SUCCESS;
 
 }
@@ -1313,6 +1316,10 @@
 #else 
 			const char *no_sound = "1";
 #endif // defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO)
+			const char *portaudiocindex = "1";
+			const char *portaudiopindex = "1";
+			const char *speexecho = "1";
+			const char *speexpreprocess = "1";
 
 			uint32_t interface_id = 0;
 #ifdef WIN32
@@ -1459,8 +1466,14 @@
 					alsacname = val;
 				} else if (!strcasecmp(var, "alsapname")) {
 					alsapname = val;
-
-
+				} else if (!strcasecmp(var, "portaudiocindex")) {
+					portaudiocindex = val;
+				} else if (!strcasecmp(var, "portaudiopindex")) {
+					portaudiopindex = val;
+				} else if (!strcasecmp(var, "speexecho")) {
+					speexecho = val;
+				} else if (!strcasecmp(var, "speexpreprocess")) {
+					speexpreprocess = val;
 				} else if (!strcasecmp(var, "at_early_audio")) {
 					at_early_audio = val;
 				} else if (!strcasecmp(var, "at_after_preinit_pause")) {
@@ -1649,6 +1662,12 @@
 				switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].alsapname, alsapname);
 #endif// GSMOPEN_ALSA
 
+#ifdef GSMOPEN_PORTAUDIO
+				globals.GSMOPEN_INTERFACES[interface_id].portaudiocindex = atoi(portaudiocindex);
+				globals.GSMOPEN_INTERFACES[interface_id].portaudiopindex = atoi(portaudiopindex);
+				globals.GSMOPEN_INTERFACES[interface_id].speexecho = atoi(speexecho);
+				globals.GSMOPEN_INTERFACES[interface_id].speexpreprocess = atoi(speexpreprocess);
+#endif// GSMOPEN_PORTAUDIO
 				globals.GSMOPEN_INTERFACES[interface_id].at_early_audio = atoi(at_early_audio);
 				globals.GSMOPEN_INTERFACES[interface_id].at_after_preinit_pause = atoi(at_after_preinit_pause);
 				globals.GSMOPEN_INTERFACES[interface_id].at_initial_pause = atoi(at_initial_pause);
@@ -1693,10 +1712,10 @@
 
 #ifdef GSMOPEN_PORTAUDIO
 				//FIXME
-				globals.GSMOPEN_INTERFACES[interface_id].portaudiocindex = 1;
-				globals.GSMOPEN_INTERFACES[interface_id].portaudiopindex = 1;
-				globals.GSMOPEN_INTERFACES[interface_id].speexecho = 1;
-				globals.GSMOPEN_INTERFACES[interface_id].speexpreprocess = 1;
+				//globals.GSMOPEN_INTERFACES[interface_id].portaudiocindex = 1;
+				//globals.GSMOPEN_INTERFACES[interface_id].portaudiopindex = 1;
+				//globals.GSMOPEN_INTERFACES[interface_id].speexecho = 1;
+				//globals.GSMOPEN_INTERFACES[interface_id].speexpreprocess = 1;
 				DEBUGA_GSMOPEN("portaudiocindex=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].portaudiocindex);
 				DEBUGA_GSMOPEN("portaudiocindex=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].portaudiocindex);
 				DEBUGA_GSMOPEN("speexecho=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].speexecho);
@@ -1793,6 +1812,8 @@
 #ifdef GSMOPEN_PORTAUDIO
 				DEBUGA_GSMOPEN("portaudiocindex=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].portaudiocindex);
 				DEBUGA_GSMOPEN("portaudiopindex=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].portaudiopindex);
+				DEBUGA_GSMOPEN("speexecho=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].speexecho);
+				DEBUGA_GSMOPEN("speexpreprocess=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].speexpreprocess);
 #endif// GSMOPEN_PORTAUDIO
 
 			}