Another great patch from Danilo - fixes a bunch or warnings
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Fri, 21 Oct 2016 23:01:52 +0000 (23:01 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Fri, 21 Oct 2016 23:01:52 +0000 (23:01 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@2895 01035d8c-6547-0410-b346-abe4f91aad63

16 files changed:
codec2-dev/src/ampexp.c
codec2-dev/src/c2sim.c
codec2-dev/src/codec2.h
codec2-dev/src/codec2_internal.h
codec2-dev/src/cohpsk_ch.c
codec2-dev/src/cohpsk_demod.c
codec2-dev/src/fdmdv_channel.c
codec2-dev/src/freedv_api.c
codec2-dev/src/fsk_get_test_bits.c
codec2-dev/src/octave.c
codec2-dev/src/phaseexp.c
codec2-dev/unittest/lspsync.c
codec2-dev/unittest/test_cohpsk_ch.c
codec2-dev/unittest/tlspsens.c
codec2-dev/unittest/vqtrainjnd.c
codec2-dev/unittest/vqtrainsp.c

index ccec6dce8eb451133023f81241ef5cfd4df32a10..c0db2140c8fae29aacaa456e4e6e8996a878bf88 100644 (file)
@@ -979,6 +979,7 @@ void smooth_amp(struct AEXP *aexp, MODEL *model) {
 
            /* find bin  */
 
+           b = MAX_BINS;
            for(i=0; i<nbins; i++)
                if ((f > bins[i]) && (f <= bins[i+1]))
                    b = i;
@@ -998,6 +999,7 @@ void smooth_amp(struct AEXP *aexp, MODEL *model) {
 
            /* find bin */
 
+           b = MAX_BINS;
            for(i=0; i<nbins; i++)
                if ((f > bins[i]) && (f <= bins[i+1]))
                    b = i;
index 5af1c8b545c2496223fda1f1cdf0289ebedc8530..2902798714c7b943f627756035f4b5ce51e41f0d 100644 (file)
@@ -51,7 +51,7 @@
 #include "bpf.h"
 #include "bpfb.h"
 
-void synth_one_frame(kiss_fft_cfg fft_inv_cfg, short buf[], MODEL *model, float Sn_[], float Pn[], int prede, float *de_mem, float gain);
+void synth_one_frame(codec2_fftr_cfg fftr_inv_cfg, short buf[], MODEL *model, float Sn_[], float Pn[], int prede, float *de_mem, float gain);
 void print_help(const struct option *long_options, int num_opts, char* argv[]);
 
 
@@ -69,10 +69,11 @@ int main(int argc, char *argv[])
     float buf_float[N_SAMP];
     float buf_float_bpf[N_SAMP];
     float Sn[M_PITCH]; /* float input speech samples            */
-    float Sn_pre[N_SAMP];      /* pre-emphasised input speech samples   */
+    float Sn_pre[M_PITCH];     /* pre-emphasised input speech samples   */
     COMP  Sw[FFT_ENC]; /* DFT of Sn[]                           */
     codec2_fft_cfg  fft_fwd_cfg;
-    codec2_fft_cfg  fft_inv_cfg;
+    codec2_fftr_cfg  fftr_fwd_cfg;
+    codec2_fftr_cfg  fftr_inv_cfg;
     float w[M_PITCH];          /* time domain hamming window            */
     COMP  W[FFT_ENC];  /* DFT of w[]                            */
     MODEL model;
@@ -143,9 +144,9 @@ int main(int argc, char *argv[])
     float bpf_buf[BPF_N+N_SAMP];
     float lspmelvq_mse = 0.0;
     int   amread, Woread;
-    FILE *fam, *fWo;
+    FILE *fam = NULL, *fWo = NULL;
     int   awread;
-    FILE *faw;
+    FILE *faw = NULL;
 
     char* opt_string = "ho:";
     struct option long_options[] = {
@@ -398,7 +399,8 @@ int main(int argc, char *argv[])
     /* Initialise ------------------------------------------------------------*/
 
     fft_fwd_cfg = codec2_fft_alloc(FFT_ENC, 0, NULL, NULL); /* fwd FFT,used in several places   */
-    fft_inv_cfg = codec2_fft_alloc(FFT_DEC, 1, NULL, NULL); /* inverse FFT, used just for synth */
+    fftr_fwd_cfg = codec2_fftr_alloc(FFT_ENC, 0, NULL, NULL); /* fwd FFT,used in several places   */
+    fftr_inv_cfg = codec2_fftr_alloc(FFT_DEC, 1, NULL, NULL); /* inverse FFT, used just for synth */
     make_analysis_window(fft_fwd_cfg, w, W);
     make_synthesis_window(Pn);
     quantise_init();
@@ -566,7 +568,7 @@ int main(int argc, char *argv[])
 
             for(i=0; i<=order; i++)
                 a[i].real = ak[i];
-            kiss_fft(fft_fwd_cfg, (kiss_fft_cpx *)a, (kiss_fft_cpx *)Aw);
+            codec2_fft(fft_fwd_cfg, a, Aw);
 
            if (hand_voicing) {
                fscanf(fvoicing,"%d\n",&model.voiced);
@@ -813,7 +815,7 @@ int main(int argc, char *argv[])
             for(i=0; i<decimate; i++) {
                 if (lpc_model) {
                     lsp_to_lpc(&lsps_dec[i][0], &ak_dec[i][0], order);
-                    aks_to_M2(fft_fwd_cfg, &ak_dec[i][0], order, &model_dec[i], e_dec[i],
+                    aks_to_M2(fftr_fwd_cfg, &ak_dec[i][0], order, &model_dec[i], e_dec[i],
                               &snr, 0, simlpcpf, lpcpf, 1, LPCPF_BETA, LPCPF_GAMMA, Aw);
                     apply_lpc_correction(&model_dec[i]);
                     sum_snr += snr;
@@ -841,7 +843,7 @@ int main(int argc, char *argv[])
                     phase_synth_zero_order(fft_fwd_cfg, &model_dec[i], ex_phase, Aw);
                 if (postfilt)
                     postfilter(&model_dec[i], &bg_est);
-                synth_one_frame(fft_inv_cfg, buf, &model_dec[i], Sn_, Pn, prede, &de_mem, gain);
+                synth_one_frame(fftr_inv_cfg, buf, &model_dec[i], Sn_, Pn, prede, &de_mem, gain);
                 if (fout != NULL) fwrite(buf,sizeof(short),N_SAMP,fout);
             }
 
@@ -889,12 +891,12 @@ int main(int argc, char *argv[])
     return 0;
 }
 
-void synth_one_frame(kiss_fft_cfg fft_inv_cfg, short buf[], MODEL *model, float Sn_[],
+void synth_one_frame(codec2_fftr_cfg fftr_inv_cfg, short buf[], MODEL *model, float Sn_[],
                      float Pn[], int prede, float *de_mem, float gain)
 {
     int     i;
 
-    synthesise(fft_inv_cfg, Sn_, model, Pn, 1);
+    synthesise(fftr_inv_cfg, Sn_, model, Pn, 1);
     if (prede)
         de_emp(Sn_, Sn_, de_mem, N_SAMP);
 
index a6c608fc99a44eb994f91562a0ac6dd8d8ffcb8c..0e25850d5291b9c721188c4d2d8892bc840ec4c1 100644 (file)
@@ -58,6 +58,7 @@ int  codec2_rebuild_spare_bit(struct CODEC2 *codec2_state, int unpacked_bits[]);
 void codec2_set_natural_or_gray(struct CODEC2 *codec2_state, int gray);\r
 void codec2_set_softdec(struct CODEC2 *c2, float *softdec);\r
 float codec2_get_energy(struct CODEC2 *codec2_state, const unsigned char *bits);\r
+
 \r
 #endif\r
 \r
index cb516cc47366e49ced5e683150f1c26be06f7213..76c19f4da246dd50c06cff4f6efa89fd1bb58a24 100644 (file)
@@ -65,4 +65,8 @@ struct CODEC2 {
     float        *softdec;                 /* optional soft decn bits from demod        */
 };
 
+// test and debug
+void analyse_one_frame(struct CODEC2 *c2, MODEL *model, short speech[]);
+void synthesise_one_frame(struct CODEC2 *c2, short speech[], MODEL *model,
+                         COMP Aw[]);
 #endif
index a3eb14ae63fb1baff0394d2c3d4d78a71837c520..76a5a31dc9d83a6f3aef42df8b94ff20273b682d 100644 (file)
@@ -83,7 +83,7 @@ int main(int argc, char *argv[])
     float          No, variance;
     COMP           scaled_noise;
     float          hf_gain;
-    COMP          *ch_fdm_delay, aspread, aspread_2ms, delayed, direct;
+    COMP          *ch_fdm_delay = NULL, aspread, aspread_2ms, delayed, direct;
     float          tx_pwr, tx_pwr_fade, noise_pwr;
     int            frames, i, j, k, ret, clipped;
     float          sam, peak, inclip, papr, CNo, snr3k, EbNo700;
@@ -129,6 +129,8 @@ int main(int argc, char *argv[])
 
     /* init HF fading model */
 
+    ffading = NULL;
+    nhfdelay = 0;
     if (fading_en) {
         if (fading_en == 1) {
             ffading = fopen(FAST_FADING_FILE_NAME, "rb");
@@ -169,7 +171,7 @@ int main(int argc, char *argv[])
     /* --------------------------------------------------------*\
                                  Main Loop
     \*---------------------------------------------------------*/
-
+    frames = 0;
     while(fread(buf, sizeof(short), BUF_N, fin) == BUF_N) {
        frames++;
 
index 3a184c1cd381217ef3f1e0fa492cbad4815f9966..875cc7e87be6487925c7bf73819ad3d679c45988 100644 (file)
@@ -51,9 +51,9 @@ int main(int argc, char *argv[])
     COMP          rx_fdm[COHPSK_MAX_SAMPLES_PER_FRAME];
     short         rx_fdm_scaled[COHPSK_MAX_SAMPLES_PER_FRAME];
     int           frames, sync, nin_frame;
-    float        *rx_amp_log;
-    float        *rx_phi_log;
-    COMP         *rx_symb_log;
+    float        *rx_amp_log = NULL;
+    float        *rx_phi_log = NULL;
+    COMP         *rx_symb_log = NULL;
     float         f_est_log[LOG_FRAMES], ratio_log[LOG_FRAMES];
     int           i, r, c, log_data_r, oct, logframes;
 
index 68eaf89df50c6587c72e693843ec384dd8ba7515..d3d82b34ef99fd83544b2b40600f1e7fabb0def8 100644 (file)
@@ -34,6 +34,7 @@
 #include <errno.h>
 
 #include "codec2_fdmdv.h"
+#include "fdmdv_internal.h"
 
 int main(int argc, char *argv[])
 {
@@ -76,7 +77,7 @@ int main(int argc, char *argv[])
 
         /* real signal so we adjust SNR to suit.  I think.  I always get confused by this! */
 
-        fdmdv_simulate_channel(fdmdv, rx_fdm, FDMDV_NOM_SAMPLES_PER_FRAME, snrdB - 3.0);
+        fdmdv_simulate_channel(&fdmdv->sig_pwr_av, rx_fdm, FDMDV_NOM_SAMPLES_PER_FRAME, snrdB - 3.0);
 
        for(i=0; i<FDMDV_NOM_SAMPLES_PER_FRAME; i++) {
            sam = FDMDV_SCALE*rx_fdm[i].real;
index 6871ca1c25dd2cbf24d2d06ccce820f2d30d2ec6..28244da47446a7d3e28532f5befefad2f071bef1 100644 (file)
@@ -1115,7 +1115,7 @@ static int freedv_comprx_fdmdv_700(struct freedv *f, COMP demod_in[], int *valid
     int                 data_flag_index, n_ascii, nspare;
     short               abit[1];
     char                ascii_out;
-    float rx_bits[COHPSK_BITS_PER_FRAME];
+    char  rx_bits[COHPSK_BITS_PER_FRAME];
     int   sync;
     int   frames;
 
@@ -1134,7 +1134,7 @@ static int freedv_comprx_fdmdv_700(struct freedv *f, COMP demod_in[], int *valid
     for(i=0; i<f->nin; i++)
         demod_in[i] = fcmult(1.0/FDMDV_SCALE, demod_in[i]);
 
-    cohpsk_demod(f->cohpsk, rx_bits, &sync, demod_in, &f->nin);
+    cohpsk_demod(f->cohpsk, (float*)rx_bits, &sync, demod_in, &f->nin);
     f->sync = sync;
     cohpsk_get_demod_stats(f->cohpsk, &f->stats);
     f->snr_est = f->stats.snr_est;
index d4f38bad1b151166d3b75b70721d271bfa904aaf..058251cf0698e928c5123bc0fe2974ea47a59db0 100644 (file)
@@ -67,7 +67,7 @@ int main(int argc,char *argv[]){
     bitbuf = (uint8_t*)alloca(sizeof(uint8_t)*FSK_FRAME_SIZE);
     
     /* Write out sync frame and sequence */
-    for(i=0; i<FSK_FRAME_SIZE; i){
+    for(i=0; i<FSK_FRAME_SIZE; ){
        bitbuf[i++] = rand()&0x1;
     }
     for(i=0;i<sizeof(init);i++){
index b22598965d9c85b66cfba4753e84baf147eee6d9..738982ccbd40b325a9406ae5049eb572cd571768 100644 (file)
@@ -74,7 +74,7 @@ signed int printf_buffer(FILE* f, char* buffer,const size_t max_buf, size_t* buf
 }
 
 
-signed int printf_header(FILE* f, char* buffer,const size_t max_buf, size_t* buf_idx_ptr, const char *name, const char *dtype, int rows, int cols, int isFloat)
+void printf_header(FILE* f, char* buffer,const size_t max_buf, size_t* buf_idx_ptr, const char *name, const char *dtype, int rows, int cols, int isFloat)
 {
 #ifdef ARM_MATH_CM4
     printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# hex: %s\n", isFloat?"true":"false");
index 803611624491b8b7c07c70fc94978cf6427c4327..11e58c93a38ac0d45cb8ad92c539044bed09682d 100644 (file)
@@ -750,6 +750,7 @@ static float refine_Wo(struct PEXP     *pexp,
 
     Wo_est = (model->Wo + pexp->Wo_prev)/2.0;
     best_var = 1E32;
+    best_Wo = Wo_est;
     for(Wo=0.97*Wo_est; Wo<=1.03*Wo_est; Wo+=0.001*Wo_est) {
 
        /* predict phase and sum differences between harmonics */
@@ -1044,6 +1045,7 @@ void smooth_phase3(struct PEXP *pexp, MODEL *model) {
 
            /* find bin  */
 
+           b = MAX_BINS;
            for(i=0; i<nbins; i++)
                if ((f > bins[i]) && (f <= bins[i+1]))
                    b = i;
@@ -1066,6 +1068,7 @@ void smooth_phase3(struct PEXP *pexp, MODEL *model) {
 
            /* find bin */
 
+            b = MAX_BINS; 
            for(i=0; i<nbins; i++)
                if ((f > bins[i]) && (f <= bins[i+1]))
                    b = i;
@@ -1115,6 +1118,7 @@ void cb_phase1(struct PEXP *pexp, MODEL *model) {
 
            /* find bin  */
 
+           b = MAX_BINS;
            for(i=0; i<nbins; i++)
                if ((f > bins[i]) && (f <= bins[i+1]))
                    b = i;
@@ -1136,6 +1140,7 @@ void cb_phase1(struct PEXP *pexp, MODEL *model) {
 
            /* find bin */
 
+           b = MAX_BINS;
            for(i=0; i<nbins; i++)
                if ((f > bins[i]) && (f <= bins[i+1]))
                    b = i;
index 96db1dec4a7b5c06d7944bda9b0101e1183c64eb..007200c78451115a1aa33460990431a93c525899 100644 (file)
@@ -24,7 +24,7 @@
 #define CORRECT_OFFSET 10  /* LSPs start 10 bits int frame qt 2400 bit/s */
 
 
-static int check_candidate(char bits[], int offset)
+static int check_candidate(unsigned char bits[], int offset)
 {
     int          i;
     int          lsp_indexes[LPC_ORD];
@@ -45,7 +45,7 @@ int main(int argc, char *argv[]) {
     struct CODEC2 *c2;
     int            i,offset, nsamples, nbits, nbytes, frames;
     short         *speech;
-    char          *bits;
+    unsigned char          *bits;
     FILE          *fin;
     int            swaps, pass, fail, match;
 
@@ -57,7 +57,7 @@ int main(int argc, char *argv[]) {
 
     /* keep FRAMES frame memory of bit stream */
 
-    bits = (char*)malloc(F*nbytes*sizeof(char));
+    bits = (unsigned char*)malloc(F*nbytes*sizeof(unsigned char));
     for(i=0; i<F*nbytes; i++)
        bits[i] = 0;
 
index fe2f90fd53cc3f71b0652515af6fa43056cdf427..d81a6cf2d9406685355607ea2efc715c311603af 100644 (file)
@@ -68,6 +68,7 @@ int main(int argc, char *argv[])
     COMP           ch_fdm[COHPSK_NOM_SAMPLES_PER_FRAME];
     COMP           ch_buf[CH_BUF_SZ];
     float          rx_bits_sd[COHPSK_BITS_PER_FRAME];
+    char           rx_bits_char[COHPSK_BITS_PER_FRAME];
     float         *rx_amp_log;
     float         *rx_phi_log;
     COMP          *rx_symb_log;
@@ -136,6 +137,8 @@ int main(int argc, char *argv[])
     nbits = 0;
 
     /* init HF fading model */
+    ffading = NULL;
+    ch_fdm_delay = NULL;
 
     if (fading_en) {
         ffading = fopen(FADING_FILE_NAME, "rb");
@@ -247,7 +250,13 @@ int main(int argc, char *argv[])
             memcpy(ch_buf, &ch_buf[nin_frame], sizeof(COMP)*ch_buf_n);
         nin_frame = tmp;
 
-        cohpsk_put_test_bits(coh, &state, error_pattern, &bit_errors, rx_bits_sd);
+       
+       for (int i = 0; i < COHPSK_BITS_PER_FRAME; i++)
+       {
+           rx_bits_char[i] = rx_bits_sd[i];
+       }
+
+        cohpsk_put_test_bits(coh, &state, error_pattern, &bit_errors, rx_bits_char);
         nerrors += bit_errors;
         nbits   += COHPSK_BITS_PER_FRAME;
 
index 98874f723e540cb28dc8677c06efaa6664c4e84e..8a680f6be2275fa09178ec740af8af6c2a78c9f3 100644 (file)
@@ -34,6 +34,7 @@
 #include "defines.h"
 #include "comp.h"
 #include "codec2.h"
+#include "lsp.h"
 #include "quantise.h"
 #include "interp.h"
 #include "codec2_internal.h"
@@ -61,6 +62,8 @@ float run_a_test(char raw_file_name[], int bit_to_corrupt)
     /* find bit we are corrupting */
 
     found_bit = 0;
+    mask = 0;
+    index = -1;
     for(i=0; i<LSP_SCALAR_INDEXES; i++) {
        if (!found_bit) {
            if (bit_to_corrupt > lsp_bits(i))
index 3f8ed9ff709ab985b719a9b8104f9edaf6555a55..06be6c7a5e7f70647a56800087f7211736fe39b8 100644 (file)
@@ -124,7 +124,7 @@ int main(int argc, char *argv[]) {
        printf("Error in malloc.\n");
        exit(1);
     }
-    printf("training array is %d bytes\n", sizeof(float)*k*J);
+    printf("training array is %lu bytes\n", sizeof(float)*k*J);
 
     n = (int*)malloc(sizeof(int)*J);
     if (n == NULL) {
index 1f237fb002308bd05a45c7320bbb6a2bfb0b4590..a26d003a9846e7f3ac7c9af8feea36b615e65e9b 100644 (file)
@@ -87,7 +87,6 @@ int main(int argc, char *argv[]) {
     float   delta;     /* improvement in distortion                    */
     FILE   *ftrain;    /* file containing training set                 */
     FILE   *fvq;       /* file containing vector quantiser             */
-    int     ret;
     int     i,j, finished, iterations;
     float   sd;
     int     var_n, bits, b, levels;
@@ -147,7 +146,7 @@ int main(int argc, char *argv[]) {
     printf("initial codebook...\n");
     #endif
     for(i=0; i<J; i++) {
-       ret = fread(vec, sizeof(float), d, ftrain);
+       fread(vec, sizeof(float), d, ftrain);
         #ifdef DBG
        print_vec(vec, d, 1);
        #endif
@@ -169,6 +168,8 @@ int main(int argc, char *argv[]) {
     printf("bits  Iteration  delta  var     std dev\n");
     printf("---------------------------------------\n");
 
+    levels = 0;
+
     for(b=1; b<=bits; b++) {
        levels = 1<<b;
        iterations = 0;
@@ -200,7 +201,7 @@ int main(int argc, char *argv[]) {
            se = 0.0;
            rewind(ftrain);
            for(i=0; i<J; i++) {
-               ret = fread(vec, sizeof(float), d, ftrain);
+               fread(vec, sizeof(float), d, ftrain);
                ind = quantise(cb, vec, d, levels, &se);
                //ind = gain_shape_quantise(cb, vec, d, levels, &se, &best_gain);
                //for(j=0; j<d; j++)
@@ -287,7 +288,7 @@ int main(int argc, char *argv[]) {
        assert(ferr != NULL);
        rewind(ftrain);
        for(i=0; i<J; i++) {
-           ret = fread(vec, sizeof(float), d, ftrain);
+           fread(vec, sizeof(float), d, ftrain);
            ind = quantise(cb, vec, d, levels, &se);
            for(j=0; j<d; j++) {
                if (vec[j] != 0.0)