From 54ce54feb73b4e82069da9bf848aa9c390e8a3ed Mon Sep 17 00:00:00 2001 From: c vw Date: Thu, 21 Nov 2019 18:02:13 +0100 Subject: [PATCH] small changes triggered by merging John's updates. --- audio.c | 7 +++---- audio.h | 1 + portaudio.c | 46 +++++++++++++++++++++++----------------------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/audio.c b/audio.c index 6ae9846..c6137be 100644 --- 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 00deea1..7fe7d6f 100644 --- 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 diff --git a/portaudio.c b/portaudio.c index b4f2ca1..dbb5f74 100644 --- a/portaudio.c +++ b/portaudio.c @@ -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; -- 2.45.2