File portaudio-echocancel.diff of Package kiax

Index: iaxclient/lib/audio_portaudio.c
===================================================================
--- iaxclient.orig/lib/audio_portaudio.c
+++ iaxclient/lib/audio_portaudio.c
@@ -356,8 +356,25 @@ static void iaxc_echo_can(short *inputBu
 	    
 	return;
     }
 
+    if (!outputBuffer) {
+	static int errmsg = 0;
+	if (!errmsg) {	
+	    printf("No echo cancellation due to outputBuffer=NULL\n");
+	    fflush(stdout);
+	    ++errmsg;
+	}
+	return;
+    } else {
+	static int errmsg = 0;
+        if (!errmsg) {	
+	    printf("Trying echo cancellation :-)\n");
+	    fflush(stdout);
+	    ++errmsg;
+	}
+    }
+
     /* we want echo cancellation */
 
     if(!ec) {
 	RingBuffer_Init(&outRing, EC_RING_SZ, &outRingBuf);
@@ -558,11 +575,15 @@ static int pa_open(int single, int inMon
  * */
 static int pa_openstreams (struct iaxc_audio_driver *d ) {
     int err;
 #ifdef LINUX
-    err = pa_open(0, 1, 1) && /* two stream mono */
-        pa_open(1, 1, 1) &&   /* one stream mono */
-        pa_open(0, 0, 0);     /* two stream stereo */
+    err = 
+	pa_open(0, 1, 1) &&    /* two stream mono */
+        pa_open(0, 1, 0) &&    /* two stream mono in stereo out */
+        pa_open(0, 0, 0) &&    /* two stream stereo */
+	pa_open(1, 1, 1) &&    /* one stream mono */
+        pa_open(1, 1, 0) &&    /* one stream mono in stereo out */
+        pa_open(1, 0, 0);      /* one stream stereo */
 #else
 #ifdef MACOSX
     err = pa_open(1, 0, 0) &&  /* one stream stereo */
         pa_open(1, 1, 0) &&    /* one stream mono in stereo out */
openSUSE Build Service is sponsored by