]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
fixed audio bug
authorJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Wed, 13 Jul 2016 09:51:10 +0000 (09:51 +0000)
committerJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Wed, 13 Jul 2016 09:51:10 +0000 (09:51 +0000)
audio.c
old_protocol.c

diff --git a/audio.c b/audio.c
index 3804d3a28cb72a85d653ea7fc2f26f044f2920b7..22aa428a8a6a32effea27720847ed32759870062 100644 (file)
--- a/audio.c
+++ b/audio.c
@@ -32,6 +32,7 @@
 #include <pulse/error.h>
 
 #include "audio.h"
+#include "radio.h"
 
 int audio = 0;
 int audio_buffer_size = 2016; // samples (both left and right)
@@ -106,8 +107,8 @@ void audio_write(double* buffer,int samples) {
 
     for(i=0;i<samples;i++) {
         int source_index=i*2;
-        short left_sample=(short)(buffer[source_index]*32768.0);
-        short right_sample=(short)(buffer[source_index+1]*32768.0);
+        short left_sample=(short)(buffer[source_index]*32767.0*volume);
+        short right_sample=(short)(buffer[source_index+1]*32767.0*volume);
         audio_buffer[audio_offset++]=left_sample>>8;
         audio_buffer[audio_offset++]=left_sample;
         audio_buffer[audio_offset++]=right_sample>>8;
index 5092d88cb94f85bf0aff8530311e43caf036fc5c..e7f8476c5d635a6260505b7a973db2bb0d0a0ee8 100644 (file)
@@ -539,9 +539,6 @@ static void full_rx_buffer() {
     if(error!=0) {
       fprintf(stderr,"fexchange2 (CHANNEL_RX0) returned error: %d\n", error);
     }
-    if(local_audio) {
-      audio_write(audiooutputbuffer,output_buffer_size);
-    }
 
     Spectrum0(1, CHANNEL_RX0, 0, 0, iqinputbuffer);
 
@@ -554,6 +551,9 @@ static void full_rx_buffer() {
         if(demod_samples!=0) {
           int s;
           int t;
+          if(local_audio) {
+            audio_write(audiooutputbuffer,demod_samples);
+          }
           for(s=0;s<demod_samples;s++) {
             for(t=0;t<6;t++) { // 8k to 48k
               if(freedv_sync) {
@@ -591,6 +591,9 @@ static void full_rx_buffer() {
       fprintf(stderr,"fexchange2 (CHANNEL_RX0) returned error: %d\n", error);
     }
     Spectrum0(1, CHANNEL_RX0, 0, 0, iqinputbuffer);
+    if(local_audio) {
+      audio_write(audiooutputbuffer,output_buffer_size);
+    }
     for(j=0;j<output_buffer_size;j++) {
       left_rx_sample=(short)(audiooutputbuffer[j*2]*32767.0*volume);
       right_rx_sample=(short)(audiooutputbuffer[(j*2)+1]*32767.0*volume);