From: drowe67 Date: Thu, 10 May 2018 09:54:32 +0000 (+0000) Subject: stopped -inf SNRs with zero signal, decided to to pass thru audio when out of sync... X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=cc874045b28f378f5c7a866918b56065e8091702;p=freetel-svn-tracking.git stopped -inf SNRs with zero signal, decided to to pass thru audio when out of sync as its too loud at low SNRs git-svn-id: https://svn.code.sf.net/p/freetel/code@3592 01035d8c-6547-0410-b346-abe4f91aad63 --- diff --git a/codec2-dev/src/dump.c b/codec2-dev/src/dump.c index c8b3b310..79242abc 100644 --- a/codec2-dev/src/dump.c +++ b/codec2-dev/src/dump.c @@ -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); diff --git a/codec2-dev/src/freedv_api.c b/codec2-dev/src/freedv_api.c index f717b602..839394b4 100644 --- a/codec2-dev/src/freedv_api.c +++ b/codec2-dev/src/freedv_api.c @@ -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); diff --git a/codec2-dev/src/ofdm.c b/codec2-dev/src/ofdm.c index 222008c4..e889f4ed 100644 --- a/codec2-dev/src/ofdm.c +++ b/codec2-dev/src/ofdm.c @@ -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");