Here's a patch for freedv_api.c . I rather heavy-handedly just zero everything 
in freedv_open(), and set nin to FREEDV_NSAMPLES / 2.
A nested comment (not legal C) got changed to use #if 0 in the outer block.

        Thanks

        Bruce

--- /home/bruce/freetel-code/codec2-dev/src/freedv_api.c        2014-08-08 
22:33:12.536693304 -0700
+++ freedv_api.c        2014-08-10 18:18:14.518621941 -0700
@@ -53,7 +53,7 @@
  
  
\*---------------------------------------------------------------------------*/
  
-/*
+#if 0
  
  
      struct FDMDV_STATS   fdmdv_stats;
@@ -75,7 +75,7 @@
      void (*freedv_put_next_rx_char)(void *callback_state, char c);
  
      void                *callback_state;
- */
+#endif
  
  struct freedv *freedv_open(int mode) {
      struct freedv *f;
@@ -84,7 +84,7 @@
      if (mode != FREEDV_MODE_1600)
          return NULL;
  
-    f = (struct freedv*)malloc(sizeof(struct freedv));
+    f = (struct freedv*)calloc(1, sizeof(struct freedv));
      if (f == NULL)
          return NULL;
  
@@ -107,15 +107,15 @@
  
      nbit = codec2_bits_per_frame(f->codec2);
      nbyte = (nbit + 7) / 8;
-    f->packed_codec_bits = (unsigned char*)malloc(nbyte*sizeof(char));
-    f->codec_bits = (int*)malloc(nbit*sizeof(int));
+    f->packed_codec_bits = (unsigned char*)calloc(1, nbyte*sizeof(char));
+    f->codec_bits = (int*)calloc(1, nbit*sizeof(int));
  
      nbit = 2*fdmdv_bits_per_frame(f->fdmdv);
-    f->tx_bits = (int*)malloc(nbit*sizeof(int));
-    f->rx_bits = (int*)malloc(nbit*sizeof(int));
+    f->tx_bits = (int*)calloc(1, nbit*sizeof(int));
+    f->rx_bits = (int*)calloc(1, nbit*sizeof(int));
   
      nbit = fdmdv_bits_per_frame(f->fdmdv);
-    f->fdmdv_bits = (int*)malloc(nbit*sizeof(int));
+    f->fdmdv_bits = (int*)calloc(1, nbit*sizeof(int));
  
      if ((f->packed_codec_bits == NULL) || (f->codec_bits == NULL)
          || (f->tx_bits == NULL) || (f->rx_bits == NULL) || (f->fdmdv_bits == 
NULL))
@@ -129,6 +129,7 @@
  
      golay23_init();
      f->total_bit_errors = 0;
+    f->nin = FREEDV_NSAMPLES / 2;
  
      return f;
  }
@@ -147,6 +148,8 @@
      free(freedv->packed_codec_bits);
      free(freedv->codec_bits);
      free(freedv->tx_bits);
+    free(freedv->fdmdv_bits);
+    free(freedv->rx_bits);
      fdmdv_destroy(freedv->fdmdv);
      codec2_destroy(freedv->codec2);
      free(freedv);


------------------------------------------------------------------------------
_______________________________________________
Freetel-codec2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freetel-codec2

Reply via email to