stopped -inf SNRs with zero signal, decided to to pass thru audio when out of sync...
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Thu, 10 May 2018 09:54:32 +0000 (09:54 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Thu, 10 May 2018 09:54:32 +0000 (09:54 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@3592 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/src/dump.c
codec2-dev/src/freedv_api.c
codec2-dev/src/ofdm.c

index c8b3b310566a43b853b3e09bc28207a5cb020b65..79242abc7ed83c83ed5abdb51b93a61a66022d8e 100644 (file)
@@ -268,7 +268,7 @@ void dump_model(MODEL *model) {
 void dump_quantised_model(MODEL *model) {
     int l;
     char s[MAX_STR];
-    char line[2048];
+    char line[4096];
 
     if (!dumpon) return;
 
@@ -282,10 +282,12 @@ void dump_quantised_model(MODEL *model) {
     for(l=1; l<=model->L; l++) {
        sprintf(s,"%12f ",model->A[l]);
         strcat(line, s);
+        assert(strlen(line) < 4096);
     }
     for(l=model->L+1; l<=MAX_AMP; l++) {
        sprintf(s,"%12f ", 0.0);
         strcat(line, s);
+        assert(strlen(line) < 4096);
     }
 
     sprintf(s,"%d\n",model->voiced);
index f717b602058be64ff1617eb9b21aaff39b8ee663..839394b48fd9d3186fb54885373727a45da5c21d 100644 (file)
@@ -1663,8 +1663,11 @@ static int freedv_comprx_700d(struct freedv *f, COMP demod_in_8kHz[], int *valid
     bits_per_codec_frame  = codec2_bits_per_frame(f->codec2);
     bytes_per_codec_frame = (bits_per_codec_frame + 7) / 8;
     frames = f->n_codec_bits / bits_per_codec_frame;
-    nout = 0;
 
+    // pass through is too noisey ....
+    //nout = f->n_speech_samples;
+    nout = 0;
+    
     int Nerrs_raw = 0;
     int Nerrs_coded = 0;
     int iter = 0;
@@ -1838,7 +1841,7 @@ static int freedv_comprx_700d(struct freedv *f, COMP demod_in_8kHz[], int *valid
          if (f->squelch_en) {
            *valid = 0;
          }
-        f->snr_est = 0.0;
+         //f->snr_est = 0.0;
     }
     
     //fprintf(stderr, "sync: %d valid: %d snr: %3.2f\n", f->sync, *valid, f->snr_est);
index 222008c4129a1dd3cd0a5e97d1eec4bd1ca4115e..e889f4ed6124bd1dc160f6574cec25d9169c26a8 100644 (file)
@@ -1198,7 +1198,7 @@ void ofdm_get_demod_stats(struct OFDM *ofdm, struct MODEM_STATS *stats)
     stats->Nc = OFDM_NC;
     assert(stats->Nc <= MODEM_STATS_NC_MAX);
 
-    float snr_est = 10.0f * log10f((ofdm->sig_var / ofdm->noise_var) * OFDM_NC*OFDM_RS / 3000.0f);
+    float snr_est = 10.0f * log10f((0.1+ (ofdm->sig_var/ofdm->noise_var)) * OFDM_NC*OFDM_RS / 3000.0f);
     //fprintf(stderr, "sig: %f var: %f snr: %f\n", ofdm->sig_var, ofdm->noise_var, snr_est);
     stats->snr_est = 0.9f * stats->snr_est + 0.1f * snr_est;
     stats->sync = !strcmp(ofdm->sync_state, "synced") || !strcmp(ofdm->sync_state, "trial");