]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
small changes triggered by merging John's updates.
authorc vw <dl1ycf@darc.de>
Thu, 21 Nov 2019 17:02:13 +0000 (18:02 +0100)
committerc vw <dl1ycf@darc.de>
Thu, 21 Nov 2019 17:02:13 +0000 (18:02 +0100)
audio.c
audio.h
portaudio.c

diff --git a/audio.c b/audio.c
index 6ae9846859d58e8deb4bc7a8dc5cf17f2411a0c5..c6137beb7fad0753e9c8a0dd78271490833bd4c1 100644 (file)
--- a/audio.c
+++ b/audio.c
@@ -281,17 +281,16 @@ void audio_close_input() {
 // Note that audio_write must be switched off for the
 // active_receiver when transmitting.
 //
-int cw_audio_write(double sample){
+int cw_audio_write(float sample){
   snd_pcm_sframes_t delay;
   long rc;
   long trim;
-  short shortsample;
        
   RECEIVER *rx = active_receiver;
  
   if(rx->playback_handle!=NULL && rx->local_audio_buffer!=NULL) {
-    rx->local_audio_buffer[(rx->local_audio_buffer_offset*2)]=shortsample;
-    rx->local_audio_buffer[(rx->local_audio_buffer_offset*2)+1]=shortsample;
+    rx->local_audio_buffer[(rx->local_audio_buffer_offset*2)]=sample;
+    rx->local_audio_buffer[(rx->local_audio_buffer_offset*2)+1]=sample;
     rx->local_audio_buffer_offset++;
 
     if(rx->local_audio_buffer_offset>=rx->local_audio_buffer_size) {
diff --git a/audio.h b/audio.h
index 00deea1377b793a26ecdb5fb8226893a457e9b45..7fe7d6f84b81c1d1f13027704fd96e3b19a921ea 100644 (file)
--- a/audio.h
+++ b/audio.h
@@ -42,5 +42,6 @@ extern void audio_close_input();
 extern int audio_open_output(RECEIVER *rx);
 extern void audio_close_output(RECEIVER *rx);
 extern int audio_write(RECEIVER *rx,float left_sample,float right_sample);
+extern int cw_audio_write(float sample);
 extern void audio_get_cards();
 #endif
index b4f2ca1dc9477e33873b93c1a549e3deba8d716d..dbb5f749107d3da28d2e871a5646535c55c5e58a 100644 (file)
@@ -285,14 +285,14 @@ int audio_open_output(RECEIVER *rx)
 
   // Do not use call-back function, just stream it
 
-  rx->playback_buffer=malloc(audio_buffer_size*sizeof(float));
-  rx->playback_offset=0;
+  rx->local_audio_buffer=malloc(audio_buffer_size*sizeof(float));
+  rx->local_audio_buffer_offset=0;
   err = Pa_OpenStream(&(rx->playback_handle), NULL, &outputParameters, 48000.0, framesPerBuffer, paNoFlag, NULL, NULL);
   if (err != paNoError) {
     fprintf(stderr,"PORTAUDIO ERROR: out open stream: %s\n",Pa_GetErrorText(err));
     rx->playback_handle = NULL;
-    if (rx->playback_buffer) free(rx->playback_buffer);
-    rx->playback_buffer = NULL;
+    if (rx->local_audio_buffer) free(rx->local_audio_buffer);
+    rx->local_audio_buffer = NULL;
     return -1;
   }
 
@@ -300,14 +300,14 @@ int audio_open_output(RECEIVER *rx)
   if (err != paNoError) {
     fprintf(stderr,"PORTAUDIO ERROR: out start stream:%s\n",Pa_GetErrorText(err));
     rx->playback_handle=NULL;
-    if (rx->playback_buffer) free(rx->playback_buffer);
-    rx->playback_buffer = NULL;
+    if (rx->local_audio_buffer) free(rx->local_audio_buffer);
+    rx->local_audio_buffer = NULL;
     return -1;
   }
   // Write one buffer to avoid under-flow errors
   // (this gives us 5 msec to pass before we have to call audio_write the first time)
-  bzero(rx->playback_buffer, (size_t) audio_buffer_size*sizeof(float));
-  err=Pa_WriteStream(rx->playback_handle, (void *) rx->playback_buffer, (unsigned long) audio_buffer_size);
+  bzero(rx->local_audio_buffer, (size_t) audio_buffer_size*sizeof(float));
+  err=Pa_WriteStream(rx->playback_handle, (void *) rx->local_audio_buffer, (unsigned long) audio_buffer_size);
   return 0;
 }
 
@@ -350,9 +350,9 @@ void audio_close_output(RECEIVER *rx) {
   fprintf(stderr,"AudioCloseOutput: %s\n", rx->audio_name);
 
 // free the buffer first, this then indicates to audio_write to do nothing
-  if(rx->playback_buffer!=NULL) {
-    free(rx->playback_buffer);
-    rx->playback_buffer=NULL;
+  if(rx->local_audio_buffer!=NULL) {
+    free(rx->local_audio_buffer);
+    rx->local_audio_buffer=NULL;
   }
 
   if(rx->playback_handle!=NULL) {
@@ -375,7 +375,7 @@ void audio_close_output(RECEIVER *rx) {
 // we have to store the data such that the PA callback function
 // can access it.
 //
-int audio_write (RECEIVER *rx, short l, short r)
+int audio_write (RECEIVER *rx, float left, float right)
 {
   PaError err;
   int mode=transmitter->mode;
@@ -389,27 +389,27 @@ int audio_write (RECEIVER *rx, short l, short r)
   //
   if (rx == active_receiver && isTransmitting() && (mode==modeCWU || mode==modeCWL)) return 0;
 
-  if (rx->playback_handle != NULL && rx->playback_buffer != NULL) {
-    rx->playback_buffer[rx->playback_offset++] = (r + l) *0.000015259;  //   65536 --> 1.0   
-    if (rx->playback_offset == audio_buffer_size) {
-      err=Pa_WriteStream(rx->playback_handle, (void *) rx->playback_buffer, (unsigned long) audio_buffer_size);
-      rx->playback_offset=0;
+  if (rx->playback_handle != NULL && rx->local_audio_buffer != NULL) {
+    rx->local_audio_buffer[rx->local_audio_buffer_offset++] = (left+right)*0.5;  //   mix to MONO   
+    if (rx->local_audio_buffer_offset == audio_buffer_size) {
+      err=Pa_WriteStream(rx->playback_handle, (void *) rx->local_audio_buffer, (unsigned long) audio_buffer_size);
+      rx->local_audio_buffer_offset=0;
       // do not check on errors, there will be underflows every now and then
     }
   }
   return 0;
 }
 
-int cw_audio_write(double sample) {
+int cw_audio_write(float sample) {
   PaError err;
   RECEIVER *rx = active_receiver;
 
-  if (rx->playback_handle != NULL && rx->playback_buffer != NULL) {
-    rx->playback_buffer[rx->playback_offset++] = sample;
-    if (rx->playback_offset == audio_buffer_size) {
-      err=Pa_WriteStream(rx->playback_handle, (void *) rx->playback_buffer, (unsigned long) audio_buffer_size);
+  if (rx->playback_handle != NULL && rx->local_audio_buffer != NULL) {
+    rx->local_audio_buffer[rx->local_audio_buffer_offset++] = sample;
+    if (rx->local_audio_buffer_offset == audio_buffer_size) {
+      err=Pa_WriteStream(rx->playback_handle, (void *) rx->local_audio_buffer, (unsigned long) audio_buffer_size);
       // do not check on errors, there will be underflows every now and then
-      rx->playback_offset=0;
+      rx->local_audio_buffer_offset=0;
     }
   }
   return 0;