clean up ptahces from Thomas
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Thu, 15 Mar 2012 19:45:14 +0000 (19:45 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Thu, 15 Mar 2012 19:45:14 +0000 (19:45 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@346 01035d8c-6547-0410-b346-abe4f91aad63

15 files changed:
codec2-dev/src/fft.c
codec2-dev/src/fft.h
codec2-dev/unittest/extract.c
codec2-dev/unittest/genlsp.c
codec2-dev/unittest/genres.c
codec2-dev/unittest/mksine.c
codec2-dev/unittest/run_tests.sh [new file with mode: 0644]
codec2-dev/unittest/scalarlsptest.c
codec2-dev/unittest/tcodec2.c
codec2-dev/unittest/tcontphase.c
codec2-dev/unittest/tinterp.c
codec2-dev/unittest/tnlp.c
codec2-dev/unittest/vq_train_jvm.c
codec2-dev/unittest/vqtrain.c
codec2-dev/unittest/vqtrainjnd.c

index df1fbcf1428e76f5e7cef5522ba2ad3b6b60b409..f75f110a23c8a5c31f86a1ab01b3853055749ba6 100644 (file)
                                                                              
 \*---------------------------------------------------------------------------*/
 
-kiss_fft_cpx *fin;
-kiss_fft_cpx *fout;
-kiss_fft_cfg cfg_forward;
-kiss_fft_cfg cfg_reverse;
+kiss_fft_cpx *fin        = 0;
+kiss_fft_cpx *fout       = 0;
+kiss_fft_cfg cfg_forward = 0;
+kiss_fft_cfg cfg_reverse = 0;
 
 /*---------------------------------------------------------------------------*\
                                                                              
@@ -51,6 +51,7 @@ kiss_fft_cfg cfg_reverse;
 void
 initialize_fft (int n)
 {
+  assert(!fin && !fout && !cfg_forward && !cfg_reverse);
   fin = KISS_FFT_MALLOC (n * sizeof (kiss_fft_cpx));
   assert(fin != NULL);
   fout = KISS_FFT_MALLOC (n * sizeof (kiss_fft_cpx));
@@ -98,3 +99,11 @@ fft (float x[], int n, int isign)
       x[c + 1] = -fout[(c) / 2].i;
     }
 }
+
+void cleanup_fft(void)
+{
+    KISS_FFT_FREE(fin);
+    KISS_FFT_FREE(fout);
+    KISS_FFT_FREE(cfg_forward);
+    KISS_FFT_FREE(cfg_reverse);
+}
index 84c6737bd89272d06f873727e846890c731c25d9..e6b583beb37e053c9073ebff06e95cfce0ed6363 100644 (file)
 #define __FFT__
 void fft(float x[], int n, int isign);
 
+void cleanup_fft(void)
+#ifdef __GNUC__
+    __attribute__ ((destructor))
+#endif
+    ;
+
 #endif /* __FFT__ */
 
index 36c6d6817c4cec56cca383b1f59af9edd093a464..77196248d801f1a1e9cf5c0eba920298e0f02ecb 100644 (file)
@@ -45,8 +45,8 @@ int main(int argc, char *argv[]) {
     long   lines;      /* lines read so far                            */
 
     if (argc != 5) {
-       printf("usage: extract TextFile FloatFile start(1 .. 10) end(1 .. 10)\n");
-       exit(0);
+       printf("usage: %s TextFile FloatFile start(1 .. 10) end(1 .. 10)\n", argv[0]);
+       exit(1);
     }
 
     /* read command line arguments and open files */
index f4a3ddc4ce16d4f73849ae58f3aa53a3af539463..dc60893041c2aa897c1f237c4dfcf0ec1b059ca4 100644 (file)
@@ -75,8 +75,8 @@ int main(int argc, char *argv[]) {
     /* Initialise ------------------------------------------------------*/
 
     if (argc < 3) {
-       printf("usage: gentest RawFile LSPTextFile [--lspd] [--log] [--lspdt] \n");
-       exit(0);
+       printf("usage: %s RawFile LSPTextFile [--lspd] [--log] [--lspdt] \n", argv[0]);
+       exit(1);
     }
 
     /* Open files */
index 7fb501b4fecff2034c4d12fb5bf3853c232eb484..2da9662c824fdc6d510fbc0a657778e194e54554 100644 (file)
@@ -46,7 +46,7 @@ int main(int argc, char *argv[])
 
   if (argc < 3) {
     printf("usage: %s InputFile ResidualFile\n", argv[0]);
-    exit(0);
+    exit(1);
   }
 
   /* Open files */
index 2383e79b552c9e7f0ef4f2b56fd7595f3b77e9d2..3e5c551aadb574dc4b33062a11e3acbc137c0ef7 100644 (file)
@@ -22,8 +22,8 @@ int main(int argc, char *argv[]) {
     short buf[N];
 
     if (argc != 3) {
-       printf("usage: mksine outputFile frequencyHz\n");
-       exit(0);
+       printf("usage: %s outputFile frequencyHz\n", argv[0]);
+       exit(1);
     }
 
     f = fopen(argv[1] ,"wb");
diff --git a/codec2-dev/unittest/run_tests.sh b/codec2-dev/unittest/run_tests.sh
new file mode 100644 (file)
index 0000000..06e7b6b
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+# verbose, skittish
+set -ex
+
+# run valgrind?
+VG="valgrind --error-exitcode=149 --leak-check=full --show-reachable=yes"
+
+# make sure we're up-to-date
+make
+
+
+# runs, not certaion wht it does yet
+${VG} ./tcodec2
+${VG} ./tinterp
+${VG} ./tquant
+
+# these fail, missing arguments
+${VG} ./extract
+${VG} ./genlsp
+${VG} ./genres
+${VG} ./scalarlsptest
+${VG} ./tnlp
+${VG} ./vq_train_jvm
+${VG} ./vqtrain
+${VG} ./vqtrainjnd
+
index f77a6959ae258a56ff191d332dd724ec21908d1e..2bf213354f2464686ea12220a5d3599e4c747a44 100644 (file)
@@ -53,7 +53,7 @@ int main(int argc, char *argv[])
 
     if (argc < 2) {
        printf("usage: %s InputFile\n", argv[0]);
-       exit(0);
+       exit(1);
     }
 
     if ((ftrain = fopen(argv[1],"rt")) == NULL) {
index a0b5b4bece7d2efc16adea5503fb3c94dc47d198..c6d4d78e1b9790938be15aad9f9612f34d6ff5dd 100644 (file)
@@ -185,7 +185,10 @@ int test3()
     struct CODEC2 *c2;
 
     c2 = codec2_create(CODEC2_MODE_2500);
-    bits = (char*)malloc(codec2_bits_per_frame(c2));
+    int numBits  = codec2_bits_per_frame(c2);
+    int numBytes = (numBits+7)>>3;
+
+    bits = (char*)malloc(numBytes);
 
     fin = fopen("../raw/hts1a.raw", "rb");
     assert(fin != NULL);
@@ -196,9 +199,9 @@ int test3()
 
     while(fread(buf1, sizeof(short), 2*N, fin) == 2*N) {
        codec2_encode(c2, (void*)bits, buf1);
-       fwrite(bits, sizeof(char), codec2_bits_per_frame(c2), fbits);
+       fwrite(bits, sizeof(char), numBytes, fbits);
        codec2_decode(c2, buf2, (void*)bits);
-       fwrite(buf2, sizeof(short), codec2_bits_per_frame(c2), fout);
+       fwrite(buf2, sizeof(short), numBytes, fout);
     }
 
     free(bits);
index 403e4f94a45956307b12e733452d5c1cb5ed7c96..6761bac8d095daa2aa1eeb04688acea84801b87d 100644 (file)
@@ -102,8 +102,8 @@ char *argv[];
     float f0;
 
     if (argc < 3) {
-       printf("\nusage: tcontphase OutputRawSpeechFile F0\n");
-        exit(0);
+       printf("\nusage: %s OutputRawSpeechFile F0\n", argv[0]);
+        exit(1);
     }
 
     /* Output file */
index 52e782b4b777e19a4ee3dafd517ad09c83f7157b..8520c832b222e1bc2fb83306ea42a8405ed90a13 100644 (file)
@@ -31,6 +31,9 @@
 #include <string.h>
 #include <math.h>
 #include <ctype.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
 
 #include "defines.h"
 #include "sine.h"
@@ -59,13 +62,14 @@ void write_amp(char file[], MODEL *model)
     fclose(f);
 }
 
-char *get_next_float(char *s, float *num)
+const char *get_next_float(const char *s, float *num)
 {
-    char *p = s;
+    const char *p = s;
     char  tmp[MAX_STR];
 
     while(*p && !isspace(*p)) 
        p++;
+    assert((p-s) < (int)(sizeof(tmp)-1));
     memcpy(tmp, s, p-s);
     tmp[p-s] = 0;
     *num = atof(tmp);
@@ -73,13 +77,14 @@ char *get_next_float(char *s, float *num)
     return p+1;
 }
 
-char *get_next_int(char *s, int *num)
+const char *get_next_int(const char *s, int *num)
 {
-    char *p = s;
+    const char *p = s;
     char  tmp[MAX_STR];
 
     while(*p && !isspace(*p)) 
        p++;
+    assert((p-s) < (int)(sizeof(tmp)-1));
     memcpy(tmp, s, p-s);
     tmp[p-s] = 0;
     *num = atoi(tmp);
@@ -87,14 +92,15 @@ char *get_next_int(char *s, int *num)
     return p+1;
 }
 
-void load_amp(MODEL *model, char file[], int frame)
+void load_amp(MODEL *model, const char * file, int frame)
 {
     FILE *f;
     int   i;
     char  s[1024];
-    char *ps;
+    const char *ps;
 
     f = fopen(file,"rt");
+    assert(f);
 
     for(i=0; i<frame; i++)
        ps = fgets(s, 1023, f);
@@ -109,13 +115,30 @@ void load_amp(MODEL *model, char file[], int frame)
     fclose(f);
 }
 
+void load_or_make_amp(MODEL *model, 
+                      const char * filename, int frame,
+                      float f0, float cdB, float mdBHz)
+{
+    struct stat buf;
+    int rc = stat(filename, &buf);
+    if (rc || !S_ISREG(buf.st_mode) || ((buf.st_mode & S_IRUSR) != S_IRUSR))
+    {
+        make_amp(model, f0, cdB, mdBHz);
+    }
+    else
+    {
+        load_amp(model, filename, frame);
+    }
+}
 int main() {
     MODEL  prev, next, interp;
 
-    //make_amp(&prev, 50.0, 60.0, 6E-3);
-    //make_amp(&next, 50.0, 40.0, 6E-3);
-    load_amp(&prev, "../src/hts1a_model.txt", 32);
-    load_amp(&next, "../src/hts1a_model.txt", 34);
+    load_or_make_amp(&prev,
+                     "../src/hts1a_model.txt", 32,
+                     50.0, 60.0, 6E-3);
+    load_or_make_amp(&next,
+                     "../src/hts1a_model.txt", 34,
+                     50.0, 40.0, 6E-3);
 
     interp.voiced = 1;
     interpolate(&interp, &prev, &next);
index 2f85f7fd7c2fe6c2e1c5b4e57b596b6b7514d097..43ef9cb04250906c6d6887b08c6b2249fa456219 100644 (file)
@@ -94,7 +94,7 @@ char *argv[];
     if (argc < 3) {
        printf("\nusage: tnlp InputRawSpeechFile OutputPitchTextFile "
               "[--dump DumpFile]\n");
-        exit(0);
+        exit(1);
     }
 
     /* Input file */
index 885020e239af0f212a9ee85b77d0e5eabd20f676..54613f6bb1ba3ac3c0e63a5e1d45100ef8e50291 100755 (executable)
@@ -291,7 +291,7 @@ int main(int argc, char **argv)
 
   if (argc != 5) {
       printf("usage: %s TrainTextFile K(dimension) M(codebook size) VQFilesPrefix\n", argv[0]);
-      exit(0);      
+      exit(1);      
   }
   
   ndim = atoi(argv[2]);
index cf73d83b1a187732b92d686e6bdbc73f91d4543e..86966d544bc1a24e494fbc1daeb8903f1c7c7dbb 100644 (file)
@@ -84,8 +84,8 @@ int main(int argc, char *argv[]) {
     /* Interpret command line arguments */
 
     if (argc != 5)     {
-       printf("usage: vqtrain TrainFile K(dimension) M(codebook size) VQFile\n");
-       exit(0);
+       printf("usage: %s TrainFile K(dimension) M(codebook size) VQFile\n", argv[0]);
+       exit(1);
     }
 
     /* Open training file */
index e2f4e3f734a66e4c674ff48ad2de70ebc7342cf7..f0fb18a329d8fb825dbbafa70df88bee9748aec9 100644 (file)
@@ -89,7 +89,7 @@ int main(int argc, char *argv[]) {
     if (argc != 6)     {
        printf("usage: %s TrainFile K(dimension) JND popThresh VQFile\n", 
               argv[0]);
-       exit(0);
+       exit(1);
     }
 
     /* Open training file */