From 5800e12f4c4e00b208979f87f69eeb7c3e16dc58 Mon Sep 17 00:00:00 2001 From: John Melton - G0ORX/N6LYT Date: Sat, 10 Sep 2016 07:00:54 +0000 Subject: [PATCH] old protocol source changes for local microphone --- audio.c | 1 + old_protocol.c | 82 +++++++++++++++++++++++++++++++++++++++++++++++++- old_protocol.h | 1 + 3 files changed, 83 insertions(+), 1 deletion(-) diff --git a/audio.c b/audio.c index d45f5e1..87ec58b 100644 --- a/audio.c +++ b/audio.c @@ -315,6 +315,7 @@ static void *mic_read_thread(void *arg) { // process the mic input switch(protocol) { case ORIGINAL_PROTOCOL: + old_protocol_process_local_mic(mic_buffer,1); break; case NEW_PROTOCOL: new_protocol_process_local_mic(mic_buffer,1); diff --git a/old_protocol.c b/old_protocol.c index c974822..b46a1b6 100644 --- a/old_protocol.c +++ b/old_protocol.c @@ -239,6 +239,13 @@ void old_protocol_init(int rx,int pixels) { } } + if(local_microphone) { + if(audio_open_input()!=0) { + fprintf(stderr,"audio_open_input failed\n"); + local_microphone=0; + } + } + receiver=rx; display_width=pixels; @@ -442,7 +449,7 @@ static void process_ozy_input_buffer(char *buffer) { mic_sample_double=(double)mic_sample/32767.0; // 16 bit sample 2^16-1 // add to buffer - if(isTransmitting()) { + if(isTransmitting() && !local_microphone) { #ifdef FREEDV if(mode==modeFREEDV && !tune) { if(freedv_samples==0) { @@ -694,6 +701,79 @@ static void full_tx_buffer() { } +void *old_protocol_process_local_mic(unsigned char *buffer,int le) { + int b; + int leftmicsample; + int rightmicsample; + double leftmicsampledouble; + double rightmicsampledouble; + + if(isTransmitting()) { + b=0; + int i,j,s; + for(i=0;i<720;i++) { + if(le) { + leftmicsample = (int)((unsigned char)buffer[b++] & 0xFF); + leftmicsample |= (int)((signed char) buffer[b++]) << 8; + //rightmicsample = (int)((unsigned char)buffer[b++] & 0xFF); + //rightmicsample |= (int)((signed char) buffer[b++]) << 8; + rightmicsample=leftmicsample; + } else { + leftmicsample = (int)((signed char) buffer[b++]) << 8; + leftmicsample |= (int)((unsigned char)buffer[b++] & 0xFF); + rightmicsample = (int)((signed char) buffer[b++]) << 8; + rightmicsample |= (int)((unsigned char)buffer[b++] & 0xFF); + } +#ifdef FREEDV + if(mode==modeFREEDV && !tune) { + if(freedv_samples==0) { // 48K to 8K + int modem_samples=mod_sample_freedv(leftmicsample); + if(modem_samples!=0) { + for(s=0;s