added Jean-Marcs VQ program, and test program for scalar lsps
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Mon, 13 Feb 2012 01:13:50 +0000 (01:13 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Mon, 13 Feb 2012 01:13:50 +0000 (01:13 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@314 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/unittest/Makefile.am
codec2-dev/unittest/Makefile.in
codec2-dev/unittest/extract.c
codec2-dev/unittest/lsptest.c [deleted file]
codec2-dev/unittest/scalarlsptest.c [new file with mode: 0644]
codec2-dev/unittest/speexlsptest.c [new file with mode: 0644]
codec2-dev/unittest/tcodec2.c
codec2-dev/unittest/tquant.c
codec2-dev/unittest/vq_train_jvm.c

index 21c20367b2283e1e4e59a799506b14e996fc3590..ca3f172fd46a994c9cddd0d5ad397515a1d4766a 100644 (file)
@@ -3,7 +3,7 @@ AUTOMAKE_OPTS = gnu
 NAME = libcodec2
 AM_CPPFLAGS = $(AM_CFLAGS)
 
-bin_PROGRAMS = genres genlsp extract vqtrain vqtrainjnd tnlp tinterp tquant tcodec2
+bin_PROGRAMS = genres genlsp extract vqtrain vqtrainjnd tnlp tinterp tquant tcodec2 vq_train_jvm scalarlsptest
 
 
 genres_SOURCES = genres.c ../src/lpc.c
@@ -26,7 +26,11 @@ vqtrainjnd_SOURCES = vqtrainjnd.c
 vqtrainjnd_LDADD = $(lib_LTLIBRARIES) 
 vqtrainjnd_LDFLAGS = $(LIBS)
 
-CODEBOOKS = ../src/codebook.c ../src/codebookd.c ../src/codebookvq.c ../src/codebookjnd.c ../src/codebookdt.c
+vq_train_jvm_SOURCES = vq_train_jvm.c
+vq_train_jvm_LDADD = $(lib_LTLIBRARIES) 
+vq_train_jvm_LDFLAGS = $(LIBS)
+
+CODEBOOKS = ../src/codebook.c ../src/codebookd.c ../src/codebookvq.c ../src/codebookjnd.c ../src/codebookdt.c ../src/codebookjvm.c
 
 tnlp_SOURCES = tnlp.c ../src/sine.c ../src/nlp.c ../src/fft.c ../src/kiss_fft.c ../src/dump.c
 tnlp_LDADD = $(lib_LTLIBRARIES) 
@@ -45,3 +49,7 @@ tcodec2_SOURCES = tcodec2.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/d
 tcodec2_LDADD = $(lib_LTLIBRARIES) 
 tcodec2_LDFLAGS = $(LIBS)
 
+scalarlsptest_SOURCES = scalarlsptest.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/fft.c ../src/kiss_fft.c $(CODEBOOKS)
+scalarlsptest_LDADD = $(lib_LTLIBRARIES) 
+scalarlsptest_LDFLAGS = $(LIBS)
+
index 6fafeec532cf921d1c6f40e8e168a2d4a22a1b42..ff3c18dd548e4b0b3d08cd3c538c6576805b7a85 100644 (file)
@@ -38,7 +38,8 @@ build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = genres$(EXEEXT) genlsp$(EXEEXT) extract$(EXEEXT) \
        vqtrain$(EXEEXT) vqtrainjnd$(EXEEXT) tnlp$(EXEEXT) \
-       tinterp$(EXEEXT) tquant$(EXEEXT) tcodec2$(EXEEXT)
+       tinterp$(EXEEXT) tquant$(EXEEXT) tcodec2$(EXEEXT) \
+       vq_train_jvm$(EXEEXT) scalarlsptest$(EXEEXT)
 subdir = unittest
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -61,7 +62,12 @@ genres_OBJECTS = $(am_genres_OBJECTS)
 genres_DEPENDENCIES =
 am__objects_1 = codebook.$(OBJEXT) codebookd.$(OBJEXT) \
        codebookvq.$(OBJEXT) codebookjnd.$(OBJEXT) \
-       codebookdt.$(OBJEXT)
+       codebookdt.$(OBJEXT) codebookjvm.$(OBJEXT)
+am_scalarlsptest_OBJECTS = scalarlsptest.$(OBJEXT) quantise.$(OBJEXT) \
+       lpc.$(OBJEXT) lsp.$(OBJEXT) dump.$(OBJEXT) fft.$(OBJEXT) \
+       kiss_fft.$(OBJEXT) $(am__objects_1)
+scalarlsptest_OBJECTS = $(am_scalarlsptest_OBJECTS)
+scalarlsptest_DEPENDENCIES =
 am_tcodec2_OBJECTS = tcodec2.$(OBJEXT) quantise.$(OBJEXT) \
        lpc.$(OBJEXT) lsp.$(OBJEXT) dump.$(OBJEXT) fft.$(OBJEXT) \
        kiss_fft.$(OBJEXT) codec2.$(OBJEXT) sine.$(OBJEXT) \
@@ -84,6 +90,9 @@ am_tquant_OBJECTS = tquant.$(OBJEXT) quantise.$(OBJEXT) lpc.$(OBJEXT) \
        $(am__objects_1)
 tquant_OBJECTS = $(am_tquant_OBJECTS)
 tquant_DEPENDENCIES =
+am_vq_train_jvm_OBJECTS = vq_train_jvm.$(OBJEXT)
+vq_train_jvm_OBJECTS = $(am_vq_train_jvm_OBJECTS)
+vq_train_jvm_DEPENDENCIES =
 am_vqtrain_OBJECTS = vqtrain.$(OBJEXT)
 vqtrain_OBJECTS = $(am_vqtrain_OBJECTS)
 vqtrain_DEPENDENCIES =
@@ -102,11 +111,13 @@ CCLD = $(CC)
 LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
 SOURCES = $(extract_SOURCES) $(genlsp_SOURCES) $(genres_SOURCES) \
-       $(tcodec2_SOURCES) $(tinterp_SOURCES) $(tnlp_SOURCES) \
-       $(tquant_SOURCES) $(vqtrain_SOURCES) $(vqtrainjnd_SOURCES)
+       $(scalarlsptest_SOURCES) $(tcodec2_SOURCES) $(tinterp_SOURCES) \
+       $(tnlp_SOURCES) $(tquant_SOURCES) $(vq_train_jvm_SOURCES) \
+       $(vqtrain_SOURCES) $(vqtrainjnd_SOURCES)
 DIST_SOURCES = $(extract_SOURCES) $(genlsp_SOURCES) $(genres_SOURCES) \
-       $(tcodec2_SOURCES) $(tinterp_SOURCES) $(tnlp_SOURCES) \
-       $(tquant_SOURCES) $(vqtrain_SOURCES) $(vqtrainjnd_SOURCES)
+       $(scalarlsptest_SOURCES) $(tcodec2_SOURCES) $(tinterp_SOURCES) \
+       $(tnlp_SOURCES) $(tquant_SOURCES) $(vq_train_jvm_SOURCES) \
+       $(vqtrain_SOURCES) $(vqtrainjnd_SOURCES)
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -233,7 +244,10 @@ vqtrain_LDFLAGS = $(LIBS)
 vqtrainjnd_SOURCES = vqtrainjnd.c
 vqtrainjnd_LDADD = $(lib_LTLIBRARIES) 
 vqtrainjnd_LDFLAGS = $(LIBS)
-CODEBOOKS = ../src/codebook.c ../src/codebookd.c ../src/codebookvq.c ../src/codebookjnd.c ../src/codebookdt.c
+vq_train_jvm_SOURCES = vq_train_jvm.c
+vq_train_jvm_LDADD = $(lib_LTLIBRARIES) 
+vq_train_jvm_LDFLAGS = $(LIBS)
+CODEBOOKS = ../src/codebook.c ../src/codebookd.c ../src/codebookvq.c ../src/codebookjnd.c ../src/codebookdt.c ../src/codebookjvm.c
 tnlp_SOURCES = tnlp.c ../src/sine.c ../src/nlp.c ../src/fft.c ../src/kiss_fft.c ../src/dump.c
 tnlp_LDADD = $(lib_LTLIBRARIES) 
 tnlp_LDFLAGS = $(LIBS)
@@ -248,6 +262,9 @@ tcodec2_SOURCES = tcodec2.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/d
 
 tcodec2_LDADD = $(lib_LTLIBRARIES) 
 tcodec2_LDFLAGS = $(LIBS)
+scalarlsptest_SOURCES = scalarlsptest.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/fft.c ../src/kiss_fft.c $(CODEBOOKS)
+scalarlsptest_LDADD = $(lib_LTLIBRARIES) 
+scalarlsptest_LDFLAGS = $(LIBS)
 all: all-am
 
 .SUFFIXES:
@@ -318,6 +335,9 @@ genlsp$(EXEEXT): $(genlsp_OBJECTS) $(genlsp_DEPENDENCIES)
 genres$(EXEEXT): $(genres_OBJECTS) $(genres_DEPENDENCIES) 
        @rm -f genres$(EXEEXT)
        $(LINK) $(genres_LDFLAGS) $(genres_OBJECTS) $(genres_LDADD) $(LIBS)
+scalarlsptest$(EXEEXT): $(scalarlsptest_OBJECTS) $(scalarlsptest_DEPENDENCIES) 
+       @rm -f scalarlsptest$(EXEEXT)
+       $(LINK) $(scalarlsptest_LDFLAGS) $(scalarlsptest_OBJECTS) $(scalarlsptest_LDADD) $(LIBS)
 tcodec2$(EXEEXT): $(tcodec2_OBJECTS) $(tcodec2_DEPENDENCIES) 
        @rm -f tcodec2$(EXEEXT)
        $(LINK) $(tcodec2_LDFLAGS) $(tcodec2_OBJECTS) $(tcodec2_LDADD) $(LIBS)
@@ -330,6 +350,9 @@ tnlp$(EXEEXT): $(tnlp_OBJECTS) $(tnlp_DEPENDENCIES)
 tquant$(EXEEXT): $(tquant_OBJECTS) $(tquant_DEPENDENCIES) 
        @rm -f tquant$(EXEEXT)
        $(LINK) $(tquant_LDFLAGS) $(tquant_OBJECTS) $(tquant_LDADD) $(LIBS)
+vq_train_jvm$(EXEEXT): $(vq_train_jvm_OBJECTS) $(vq_train_jvm_DEPENDENCIES) 
+       @rm -f vq_train_jvm$(EXEEXT)
+       $(LINK) $(vq_train_jvm_LDFLAGS) $(vq_train_jvm_OBJECTS) $(vq_train_jvm_LDADD) $(LIBS)
 vqtrain$(EXEEXT): $(vqtrain_OBJECTS) $(vqtrain_DEPENDENCIES) 
        @rm -f vqtrain$(EXEEXT)
        $(LINK) $(vqtrain_LDFLAGS) $(vqtrain_OBJECTS) $(vqtrain_LDADD) $(LIBS)
@@ -347,6 +370,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codebookd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codebookdt.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codebookjnd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codebookjvm.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codebookvq.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codec2.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump.Po@am__quote@
@@ -363,11 +387,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/phase.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/postfilter.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quantise.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scalarlsptest.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sine.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tcodec2.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tinterp.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tnlp.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tquant.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vq_train_jvm.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vqtrain.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vqtrainjnd.Po@am__quote@
 
@@ -476,6 +502,90 @@ kiss_fft.obj: ../src/kiss_fft.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o kiss_fft.obj `if test -f '../src/kiss_fft.c'; then $(CYGPATH_W) '../src/kiss_fft.c'; else $(CYGPATH_W) '$(srcdir)/../src/kiss_fft.c'; fi`
 
+codebook.o: ../src/codebook.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebook.o -MD -MP -MF "$(DEPDIR)/codebook.Tpo" -c -o codebook.o `test -f '../src/codebook.c' || echo '$(srcdir)/'`../src/codebook.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebook.Tpo" "$(DEPDIR)/codebook.Po"; else rm -f "$(DEPDIR)/codebook.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebook.c' object='codebook.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebook.o `test -f '../src/codebook.c' || echo '$(srcdir)/'`../src/codebook.c
+
+codebook.obj: ../src/codebook.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebook.obj -MD -MP -MF "$(DEPDIR)/codebook.Tpo" -c -o codebook.obj `if test -f '../src/codebook.c'; then $(CYGPATH_W) '../src/codebook.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebook.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebook.Tpo" "$(DEPDIR)/codebook.Po"; else rm -f "$(DEPDIR)/codebook.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebook.c' object='codebook.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebook.obj `if test -f '../src/codebook.c'; then $(CYGPATH_W) '../src/codebook.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebook.c'; fi`
+
+codebookd.o: ../src/codebookd.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookd.o -MD -MP -MF "$(DEPDIR)/codebookd.Tpo" -c -o codebookd.o `test -f '../src/codebookd.c' || echo '$(srcdir)/'`../src/codebookd.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookd.Tpo" "$(DEPDIR)/codebookd.Po"; else rm -f "$(DEPDIR)/codebookd.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookd.c' object='codebookd.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookd.o `test -f '../src/codebookd.c' || echo '$(srcdir)/'`../src/codebookd.c
+
+codebookd.obj: ../src/codebookd.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookd.obj -MD -MP -MF "$(DEPDIR)/codebookd.Tpo" -c -o codebookd.obj `if test -f '../src/codebookd.c'; then $(CYGPATH_W) '../src/codebookd.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookd.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookd.Tpo" "$(DEPDIR)/codebookd.Po"; else rm -f "$(DEPDIR)/codebookd.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookd.c' object='codebookd.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookd.obj `if test -f '../src/codebookd.c'; then $(CYGPATH_W) '../src/codebookd.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookd.c'; fi`
+
+codebookvq.o: ../src/codebookvq.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookvq.o -MD -MP -MF "$(DEPDIR)/codebookvq.Tpo" -c -o codebookvq.o `test -f '../src/codebookvq.c' || echo '$(srcdir)/'`../src/codebookvq.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookvq.Tpo" "$(DEPDIR)/codebookvq.Po"; else rm -f "$(DEPDIR)/codebookvq.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookvq.c' object='codebookvq.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookvq.o `test -f '../src/codebookvq.c' || echo '$(srcdir)/'`../src/codebookvq.c
+
+codebookvq.obj: ../src/codebookvq.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookvq.obj -MD -MP -MF "$(DEPDIR)/codebookvq.Tpo" -c -o codebookvq.obj `if test -f '../src/codebookvq.c'; then $(CYGPATH_W) '../src/codebookvq.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookvq.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookvq.Tpo" "$(DEPDIR)/codebookvq.Po"; else rm -f "$(DEPDIR)/codebookvq.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookvq.c' object='codebookvq.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookvq.obj `if test -f '../src/codebookvq.c'; then $(CYGPATH_W) '../src/codebookvq.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookvq.c'; fi`
+
+codebookjnd.o: ../src/codebookjnd.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookjnd.o -MD -MP -MF "$(DEPDIR)/codebookjnd.Tpo" -c -o codebookjnd.o `test -f '../src/codebookjnd.c' || echo '$(srcdir)/'`../src/codebookjnd.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookjnd.Tpo" "$(DEPDIR)/codebookjnd.Po"; else rm -f "$(DEPDIR)/codebookjnd.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookjnd.c' object='codebookjnd.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookjnd.o `test -f '../src/codebookjnd.c' || echo '$(srcdir)/'`../src/codebookjnd.c
+
+codebookjnd.obj: ../src/codebookjnd.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookjnd.obj -MD -MP -MF "$(DEPDIR)/codebookjnd.Tpo" -c -o codebookjnd.obj `if test -f '../src/codebookjnd.c'; then $(CYGPATH_W) '../src/codebookjnd.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookjnd.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookjnd.Tpo" "$(DEPDIR)/codebookjnd.Po"; else rm -f "$(DEPDIR)/codebookjnd.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookjnd.c' object='codebookjnd.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookjnd.obj `if test -f '../src/codebookjnd.c'; then $(CYGPATH_W) '../src/codebookjnd.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookjnd.c'; fi`
+
+codebookdt.o: ../src/codebookdt.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookdt.o -MD -MP -MF "$(DEPDIR)/codebookdt.Tpo" -c -o codebookdt.o `test -f '../src/codebookdt.c' || echo '$(srcdir)/'`../src/codebookdt.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookdt.Tpo" "$(DEPDIR)/codebookdt.Po"; else rm -f "$(DEPDIR)/codebookdt.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookdt.c' object='codebookdt.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookdt.o `test -f '../src/codebookdt.c' || echo '$(srcdir)/'`../src/codebookdt.c
+
+codebookdt.obj: ../src/codebookdt.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookdt.obj -MD -MP -MF "$(DEPDIR)/codebookdt.Tpo" -c -o codebookdt.obj `if test -f '../src/codebookdt.c'; then $(CYGPATH_W) '../src/codebookdt.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookdt.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookdt.Tpo" "$(DEPDIR)/codebookdt.Po"; else rm -f "$(DEPDIR)/codebookdt.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookdt.c' object='codebookdt.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookdt.obj `if test -f '../src/codebookdt.c'; then $(CYGPATH_W) '../src/codebookdt.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookdt.c'; fi`
+
+codebookjvm.o: ../src/codebookjvm.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookjvm.o -MD -MP -MF "$(DEPDIR)/codebookjvm.Tpo" -c -o codebookjvm.o `test -f '../src/codebookjvm.c' || echo '$(srcdir)/'`../src/codebookjvm.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookjvm.Tpo" "$(DEPDIR)/codebookjvm.Po"; else rm -f "$(DEPDIR)/codebookjvm.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookjvm.c' object='codebookjvm.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookjvm.o `test -f '../src/codebookjvm.c' || echo '$(srcdir)/'`../src/codebookjvm.c
+
+codebookjvm.obj: ../src/codebookjvm.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookjvm.obj -MD -MP -MF "$(DEPDIR)/codebookjvm.Tpo" -c -o codebookjvm.obj `if test -f '../src/codebookjvm.c'; then $(CYGPATH_W) '../src/codebookjvm.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookjvm.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookjvm.Tpo" "$(DEPDIR)/codebookjvm.Po"; else rm -f "$(DEPDIR)/codebookjvm.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookjvm.c' object='codebookjvm.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookjvm.obj `if test -f '../src/codebookjvm.c'; then $(CYGPATH_W) '../src/codebookjvm.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookjvm.c'; fi`
+
 codec2.o: ../src/codec2.c
 @am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codec2.o -MD -MP -MF "$(DEPDIR)/codec2.Tpo" -c -o codec2.o `test -f '../src/codec2.c' || echo '$(srcdir)/'`../src/codec2.c; \
 @am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codec2.Tpo" "$(DEPDIR)/codec2.Po"; else rm -f "$(DEPDIR)/codec2.Tpo"; exit 1; fi
@@ -574,76 +684,6 @@ pack.obj: ../src/pack.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o pack.obj `if test -f '../src/pack.c'; then $(CYGPATH_W) '../src/pack.c'; else $(CYGPATH_W) '$(srcdir)/../src/pack.c'; fi`
 
-codebook.o: ../src/codebook.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebook.o -MD -MP -MF "$(DEPDIR)/codebook.Tpo" -c -o codebook.o `test -f '../src/codebook.c' || echo '$(srcdir)/'`../src/codebook.c; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebook.Tpo" "$(DEPDIR)/codebook.Po"; else rm -f "$(DEPDIR)/codebook.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebook.c' object='codebook.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebook.o `test -f '../src/codebook.c' || echo '$(srcdir)/'`../src/codebook.c
-
-codebook.obj: ../src/codebook.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebook.obj -MD -MP -MF "$(DEPDIR)/codebook.Tpo" -c -o codebook.obj `if test -f '../src/codebook.c'; then $(CYGPATH_W) '../src/codebook.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebook.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebook.Tpo" "$(DEPDIR)/codebook.Po"; else rm -f "$(DEPDIR)/codebook.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebook.c' object='codebook.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebook.obj `if test -f '../src/codebook.c'; then $(CYGPATH_W) '../src/codebook.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebook.c'; fi`
-
-codebookd.o: ../src/codebookd.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookd.o -MD -MP -MF "$(DEPDIR)/codebookd.Tpo" -c -o codebookd.o `test -f '../src/codebookd.c' || echo '$(srcdir)/'`../src/codebookd.c; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookd.Tpo" "$(DEPDIR)/codebookd.Po"; else rm -f "$(DEPDIR)/codebookd.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookd.c' object='codebookd.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookd.o `test -f '../src/codebookd.c' || echo '$(srcdir)/'`../src/codebookd.c
-
-codebookd.obj: ../src/codebookd.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookd.obj -MD -MP -MF "$(DEPDIR)/codebookd.Tpo" -c -o codebookd.obj `if test -f '../src/codebookd.c'; then $(CYGPATH_W) '../src/codebookd.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookd.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookd.Tpo" "$(DEPDIR)/codebookd.Po"; else rm -f "$(DEPDIR)/codebookd.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookd.c' object='codebookd.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookd.obj `if test -f '../src/codebookd.c'; then $(CYGPATH_W) '../src/codebookd.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookd.c'; fi`
-
-codebookvq.o: ../src/codebookvq.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookvq.o -MD -MP -MF "$(DEPDIR)/codebookvq.Tpo" -c -o codebookvq.o `test -f '../src/codebookvq.c' || echo '$(srcdir)/'`../src/codebookvq.c; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookvq.Tpo" "$(DEPDIR)/codebookvq.Po"; else rm -f "$(DEPDIR)/codebookvq.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookvq.c' object='codebookvq.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookvq.o `test -f '../src/codebookvq.c' || echo '$(srcdir)/'`../src/codebookvq.c
-
-codebookvq.obj: ../src/codebookvq.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookvq.obj -MD -MP -MF "$(DEPDIR)/codebookvq.Tpo" -c -o codebookvq.obj `if test -f '../src/codebookvq.c'; then $(CYGPATH_W) '../src/codebookvq.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookvq.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookvq.Tpo" "$(DEPDIR)/codebookvq.Po"; else rm -f "$(DEPDIR)/codebookvq.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookvq.c' object='codebookvq.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookvq.obj `if test -f '../src/codebookvq.c'; then $(CYGPATH_W) '../src/codebookvq.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookvq.c'; fi`
-
-codebookjnd.o: ../src/codebookjnd.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookjnd.o -MD -MP -MF "$(DEPDIR)/codebookjnd.Tpo" -c -o codebookjnd.o `test -f '../src/codebookjnd.c' || echo '$(srcdir)/'`../src/codebookjnd.c; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookjnd.Tpo" "$(DEPDIR)/codebookjnd.Po"; else rm -f "$(DEPDIR)/codebookjnd.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookjnd.c' object='codebookjnd.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookjnd.o `test -f '../src/codebookjnd.c' || echo '$(srcdir)/'`../src/codebookjnd.c
-
-codebookjnd.obj: ../src/codebookjnd.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookjnd.obj -MD -MP -MF "$(DEPDIR)/codebookjnd.Tpo" -c -o codebookjnd.obj `if test -f '../src/codebookjnd.c'; then $(CYGPATH_W) '../src/codebookjnd.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookjnd.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookjnd.Tpo" "$(DEPDIR)/codebookjnd.Po"; else rm -f "$(DEPDIR)/codebookjnd.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookjnd.c' object='codebookjnd.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookjnd.obj `if test -f '../src/codebookjnd.c'; then $(CYGPATH_W) '../src/codebookjnd.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookjnd.c'; fi`
-
-codebookdt.o: ../src/codebookdt.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookdt.o -MD -MP -MF "$(DEPDIR)/codebookdt.Tpo" -c -o codebookdt.o `test -f '../src/codebookdt.c' || echo '$(srcdir)/'`../src/codebookdt.c; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookdt.Tpo" "$(DEPDIR)/codebookdt.Po"; else rm -f "$(DEPDIR)/codebookdt.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookdt.c' object='codebookdt.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookdt.o `test -f '../src/codebookdt.c' || echo '$(srcdir)/'`../src/codebookdt.c
-
-codebookdt.obj: ../src/codebookdt.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookdt.obj -MD -MP -MF "$(DEPDIR)/codebookdt.Tpo" -c -o codebookdt.obj `if test -f '../src/codebookdt.c'; then $(CYGPATH_W) '../src/codebookdt.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookdt.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookdt.Tpo" "$(DEPDIR)/codebookdt.Po"; else rm -f "$(DEPDIR)/codebookdt.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookdt.c' object='codebookdt.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookdt.obj `if test -f '../src/codebookdt.c'; then $(CYGPATH_W) '../src/codebookdt.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookdt.c'; fi`
-
 mostlyclean-libtool:
        -rm -f *.lo
 
index e17cc5b9ba13908821c0fa1d27498911cca86216..dcd75df4b8b0f330e60a57745277244a1c69ea4d 100644 (file)
@@ -74,8 +74,10 @@ int main(int argc, char *argv[]) {
     lines = 0;
     while(!feof(ftext)) {
        scan_line(ftext, buf, en);
-       fwrite(&buf[st-1], sizeof(float), en-st+1, ffloat);
-       printf("\r%ld lines",lines++);
+       if (!feof(ftext)) {
+           fwrite(&buf[st-1], sizeof(float), en-st+1, ffloat);
+           printf("\r%ld lines",lines++);
+       }
     }
     printf("\n");
 
diff --git a/codec2-dev/unittest/lsptest.c b/codec2-dev/unittest/lsptest.c
deleted file mode 100644 (file)
index c60d7f8..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-/*---------------------------------------------------------------------------*\
-                                                                           
-  FILE........: lsptest.c   
-  AUTHOR......: David Rowe                                                      
-  DATE CREATED: 24/8/09                                                   
-                                                                          
-  Test Speech LPC to LSP conversion and quantisation.
-                                                                          
-\*---------------------------------------------------------------------------*/
-
-/*
-  Copyright (C) 2009 David Rowe
-
-  All rights reserved.
-
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU Lesser General Public License version 2, as
-  published by the Free Software Foundation.  This program is
-  distributed in the hope that it will be useful, but WITHOUT ANY
-  WARRANTY; without even the implied warranty of MERCHANTABILITY or
-  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
-  License for more details.
-
-  You should have received a copy of the GNU Lesser General Public License
-  along with this program; if not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <lpc.h>
-#include <lsp.h>
-#include <sd.h>
-
-#define N 160
-#define P 10
-
-#define LPC_FLOOR 0.0002        /* autocorrelation floor */
-#define LSP_DELTA1 0.2          /* grid spacing for LSP root searches */
-#define NDFT    256             /* DFT size for SD calculation          */
-
-/* Speex lag window */
-
-const float lag_window[11] = {
-   1.00000, 0.99716, 0.98869, 0.97474, 0.95554, 0.93140, 0.90273, 0.86998, 
-   0.83367, 0.79434, 0.75258
-};
-
-/*---------------------------------------------------------------------------*\
-                                                                            
-  find_aks_for_lsp()
-                                                          
-  This function takes a frame of samples, and determines the linear           
-  prediction coefficients for that frame of samples.  Modified version of
-  find_aks from lpc.c to include autocorrelation noise floor and lag window
-  to match Speex processing steps prior to LSP conversion.
-                                                                            
-\*---------------------------------------------------------------------------*/
-
-void find_aks_for_lsp(
-  float Sn[],  /* Nsam samples with order sample memory */
-  float a[],   /* order+1 LPCs with first coeff 1.0 */
-  int Nsam,    /* number of input speech samples */
-  int order,   /* order of the LPC analysis */
-  float *E     /* residual energy */
-)
-{
-  float Wn[N]; /* windowed frame of Nsam speech samples */
-  float R[P+1];        /* order+1 autocorrelation values of Sn[] */
-  int i;
-
-  hanning_window(Sn,Wn,Nsam);
-
-  autocorrelate(Wn,R,Nsam,order);
-  R[0] += LPC_FLOOR;
-  assert(order == 10); /* lag window only defined for order == 10 */
-  for(i=0; i<=order; i++)
-      R[i] *= lag_window[i];
-  levinson_durbin(R,a,order);
-
-  *E = 0.0;
-  for(i=0; i<=order; i++)
-    *E += a[i]*R[i];
-  if (*E < 0.0)
-    *E = 1E-12;
-}
-
-/*---------------------------------------------------------------------------*\
-                                                                            
-                                MAIN 
-                                   
-\*---------------------------------------------------------------------------*/
-
-int main(int argc, char *argv[])
-{
-  FILE *fin;            /* input speech files */
-  short buf[N];         /* buffer of 16 bit speech samples */
-  float Sn[P+N];        /* input speech samples */
-  float E;
-  float ak[P+1];        /* LP coeffs */
-  float ak_[P+1];       /* quantised LP coeffs */
-  float lsp[P];
-  float lsp_[P];        /* quantised LSPs */
-  int   roots;          /* number of LSP roots found */
-  int frames;           /* frames processed so far */
-  int i;                /* loop variables */
-
-  SpeexBits bits;
-
-  float  sd;            /* SD for this frame                */
-  float  totsd;         /* accumulated SD so far            */
-  int    gt2,gt4;       /* number of frames > 2 and 4 dB SD */
-  int    unstables;     /* number of unstable LSP frames    */
-
-  if (argc < 2) {
-    printf("usage: %s InputFile\n", argv[0]);
-    exit(0);
-  }
-
-  /* Open files */
-
-  if ((fin = fopen(argv[1],"rb")) == NULL) {
-    printf("Error opening input file: %s\n",argv[1]);
-    exit(0);
-  }
-
-  /* Initialise */
-
-  frames = 0;
-  for(i=0; i<P; i++) {
-    Sn[i] = 0.0;
-  }
-  ak_[0] = 1.0;
-
-  speex_bits_init(&bits);
-
-  totsd = 0.0;
-  unstables = 0;
-  gt2 = 0; gt4 = 0;
-
-  /* Main loop */
-
-  while( (fread(buf,sizeof(short),N,fin)) == N) {
-    frames++;
-    for(i=0; i<N; i++)
-      Sn[P+i] = (float)buf[i];
-
-    /* convert to LSP domain and back */
-
-    find_aks(&Sn[P], ak, N, P, &E);
-    roots = lpc_to_lsp(&ak[1], P , lsp, 10, LSP_DELTA1, NULL);
-    if (roots == P) {
-
-        speex_bits_reset(&bits);
-       lsp_quant_lbr(lsp, lsp_, P, &bits);     
-       lsp_to_lpc(lsp_, &ak_[1], P, NULL);
-       
-       /* measure spectral distortion */
-       sd = spectral_dist(ak, ak_, P, NDFT);
-       if (sd > 2.0) gt2++;
-       if (sd > 4.0) gt4++;
-       totsd += sd;
-    }
-    else
-       unstables++;
-  }
-
-  fclose(fin);
-
-  printf("frames = %d Av sd = %3.2f dB", frames, totsd/frames);
-  printf("  >2 dB %3.2f%%  >4 dB %3.2f%%  unstables: %d\n",gt2*100.0/frames,
-         gt4*100.0/frames, unstables);
-
-  return 0;
-}
-
diff --git a/codec2-dev/unittest/scalarlsptest.c b/codec2-dev/unittest/scalarlsptest.c
new file mode 100644 (file)
index 0000000..b55eeb9
--- /dev/null
@@ -0,0 +1,106 @@
+/*---------------------------------------------------------------------------*\
+                                                                           
+  FILE........: scalarlsptest.c   
+  AUTHOR......: David Rowe                                                      
+  DATE CREATED: 8/2/12                                                   
+                                                                          
+  Test Scalar LSP quantiser, output variance of quantisation error.
+                                                                          
+\*---------------------------------------------------------------------------*/
+
+/*
+  Copyright (C) 2012 David Rowe
+
+  All rights reserved.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU Lesser General Public License version 2, as
+  published by the Free Software Foundation.  This program is
+  distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+  License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "defines.h"
+#include "quantise.h"
+
+/*---------------------------------------------------------------------------*\
+                                                                            
+                                MAIN 
+                                   
+\*---------------------------------------------------------------------------*/
+
+int main(int argc, char *argv[])
+{
+    FILE *ftrain;       /* LSP training data text file */
+    float lsp[LPC_ORD];    /* LSP input vector in rads */
+    float lsp_hz[LPC_ORD]; /* LSP input vector in Hz */
+    int vectors;           /* number LSP vectors processed */
+    int k,m;             /* LSP vector order and codebook size */     
+    int    index;
+    float  wt[1];        /* weighting (not used here for scalars) */
+    float *cb;           /* LSP quantiser codebook */
+    int i, ret;               
+    float  se, total_se; 
+
+    if (argc < 2) {
+       printf("usage: %s InputFile\n", argv[0]);
+       exit(0);
+    }
+
+    if ((ftrain = fopen(argv[1],"rt")) == NULL) {
+       printf("Error opening input file: %s\n",argv[1]);
+       exit(0);
+    }
+
+    total_se = 0.0;
+    vectors = 0;
+    wt[0] = 1.0;
+    /* Main loop */
+
+    while(!feof(ftrain)) {
+
+       /* Read LSP input vector speech */
+
+       for (i=0; i<LPC_ORD; i++) {
+           ret = fscanf(ftrain, "%f ", &lsp[i]);
+       }
+       vectors++;
+       if ((vectors % 1000) == 0)
+           printf("\r%d vectors", vectors);
+
+       /* convert from radians to Hz so we can use human readable
+          frequencies */
+
+       for(i=0; i<LPC_ORD; i++)
+           lsp_hz[i] = (4000.0/PI)*lsp[i];
+    
+       /* simple uniform scalar quantisers */
+
+       for(i=0; i<LPC_ORD; i++) {
+           k = lsp_cb[i].k;                                                                 
+           m = lsp_cb[i].m;
+           cb = lsp_cb[i].cb;
+           index = quantise(cb, &lsp_hz[i], wt, k, m, &total_se);
+           //printf("k %d m %d lsp[%d] %f %f se %f\n", k,m,i,lsp_hz[i], cb[index],se);
+       }
+       //printf("total se %f\n", total_se);
+       //exit(0);
+    }
+
+    fclose(ftrain);
+
+    printf("\n variance = %f\n", ((PI*PI)/(4000.0*4000.0))*total_se/vectors);
+
+    return 0;
+}
+
diff --git a/codec2-dev/unittest/speexlsptest.c b/codec2-dev/unittest/speexlsptest.c
new file mode 100644 (file)
index 0000000..3350894
--- /dev/null
@@ -0,0 +1,176 @@
+/*---------------------------------------------------------------------------*\
+                                                                           
+  FILE........: speexlsptest.c   
+  AUTHOR......: David Rowe                                                      
+  DATE CREATED: 24/8/09                                                   
+                                                                          
+  Test LPC to LSP conversion and quantisation using Speex LSP quantiser.
+                                                                          
+\*---------------------------------------------------------------------------*/
+
+/*
+  Copyright (C) 2009 David Rowe
+
+  All rights reserved.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU Lesser General Public License version 2, as
+  published by the Free Software Foundation.  This program is
+  distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+  License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <lpc.h>
+#include <lsp.h>
+#include <sd.h>
+
+#define N 160
+#define P 10
+
+#define LPC_FLOOR 0.0002        /* autocorrelation floor */
+#define LSP_DELTA1 0.2          /* grid spacing for LSP root searches */
+#define NDFT    256             /* DFT size for SD calculation          */
+
+/* Speex lag window */
+
+const float lag_window[11] = {
+   1.00000, 0.99716, 0.98869, 0.97474, 0.95554, 0.93140, 0.90273, 0.86998, 
+   0.83367, 0.79434, 0.75258
+};
+
+/*---------------------------------------------------------------------------*\
+                                                                            
+  find_aks_for_lsp()
+                                                          
+  This function takes a frame of samples, and determines the linear           
+  prediction coefficients for that frame of samples.  Modified version of
+  find_aks from lpc.c to include autocorrelation noise floor and lag window
+  to match Speex processing steps prior to LSP conversion.
+                                                                            
+\*---------------------------------------------------------------------------*/
+
+void find_aks_for_lsp(
+  float Sn[],  /* Nsam samples with order sample memory */
+  float a[],   /* order+1 LPCs with first coeff 1.0 */
+  int Nsam,    /* number of input speech samples */
+  int order,   /* order of the LPC analysis */
+  float *E     /* residual energy */
+)
+{
+  float Wn[N]; /* windowed frame of Nsam speech samples */
+  float R[P+1];        /* order+1 autocorrelation values of Sn[] */
+  int i;
+
+  hanning_window(Sn,Wn,Nsam);
+
+  autocorrelate(Wn,R,Nsam,order);
+  R[0] += LPC_FLOOR;
+  assert(order == 10); /* lag window only defined for order == 10 */
+  for(i=0; i<=order; i++)
+      R[i] *= lag_window[i];
+  levinson_durbin(R,a,order);
+
+  *E = 0.0;
+  for(i=0; i<=order; i++)
+    *E += a[i]*R[i];
+  if (*E < 0.0)
+    *E = 1E-12;
+}
+
+/*---------------------------------------------------------------------------*\
+                                                                            
+                                MAIN 
+                                   
+\*---------------------------------------------------------------------------*/
+
+int main(int argc, char *argv[])
+{
+  FILE *fin;            /* input speech files */
+  short buf[N];         /* buffer of 16 bit speech samples */
+  float Sn[P+N];        /* input speech samples */
+  float E;
+  float ak[P+1];        /* LP coeffs */
+  float ak_[P+1];       /* quantised LP coeffs */
+  float lsp[P];
+  float lsp_[P];        /* quantised LSPs */
+  int   roots;          /* number of LSP roots found */
+  int frames;           /* frames processed so far */
+  int i;                /* loop variables */
+
+  SpeexBits bits;
+
+  float  sd;            /* SD for this frame                */
+  float  totsd;         /* accumulated SD so far            */
+  int    gt2,gt4;       /* number of frames > 2 and 4 dB SD */
+  int    unstables;     /* number of unstable LSP frames    */
+
+  if (argc < 2) {
+    printf("usage: %s InputFile\n", argv[0]);
+    exit(0);
+  }
+
+  /* Open files */
+
+  if ((fin = fopen(argv[1],"rb")) == NULL) {
+    printf("Error opening input file: %s\n",argv[1]);
+    exit(0);
+  }
+
+  /* Initialise */
+
+  frames = 0;
+  for(i=0; i<P; i++) {
+    Sn[i] = 0.0;
+  }
+  ak_[0] = 1.0;
+
+  speex_bits_init(&bits);
+
+  totsd = 0.0;
+  unstables = 0;
+  gt2 = 0; gt4 = 0;
+
+  /* Main loop */
+
+  while( (fread(buf,sizeof(short),N,fin)) == N) {
+    frames++;
+    for(i=0; i<N; i++)
+      Sn[P+i] = (float)buf[i];
+
+    /* convert to LSP domain and back */
+
+    find_aks(&Sn[P], ak, N, P, &E);
+    roots = lpc_to_lsp(&ak[1], P , lsp, 10, LSP_DELTA1, NULL);
+    if (roots == P) {
+
+        speex_bits_reset(&bits);
+       lsp_quant_lbr(lsp, lsp_, P, &bits);     
+       lsp_to_lpc(lsp_, &ak_[1], P, NULL);
+       
+       /* measure spectral distortion */
+       sd = spectral_dist(ak, ak_, P, NDFT);
+       if (sd > 2.0) gt2++;
+       if (sd > 4.0) gt4++;
+       totsd += sd;
+    }
+    else
+       unstables++;
+  }
+
+  fclose(fin);
+
+  printf("frames = %d Av sd = %3.2f dB", frames, totsd/frames);
+  printf("  >2 dB %3.2f%%  >4 dB %3.2f%%  unstables: %d\n",gt2*100.0/frames,
+         gt4*100.0/frames, unstables);
+
+  return 0;
+}
+
index 4f057723e900653f5882f617b67c0c1c06ff488b..bc590b78864c7a258358f5c01f29875df99ac9c2 100644 (file)
 
 /* CODEC2 struct copies from codec2.c to help with testing */
 
-typedef struct {
-    float  Sn[M];        /* input speech                              */
-    float  w[M];        /* time domain hamming window                */
-    COMP   W[FFT_ENC];  /* DFT of w[]                                */
-    float  Pn[2*N];     /* trapezoidal synthesis window              */
-    float  Sn_[2*N];    /* synthesised speech                        */
-    float  prev_Wo;      /* previous frame's pitch estimate           */
-    float  ex_phase;     /* excitation model phase track              */
-    float  bg_est;       /* background noise estimate for post filter */
-    MODEL  prev_model;   /* model parameters from 20ms ago            */
-} CODEC2;
-
-void analyse_one_frame(CODEC2 *c2, MODEL *model, short speech[]);
-void synthesise_one_frame(CODEC2 *c2, short speech[], MODEL *model, float ak[]);
+struct CODEC2 {
+    int    mode;
+    float  w[M];               /* time domain hamming window                */
+    COMP   W[FFT_ENC];         /* DFT of w[]                                */
+    float  Pn[2*N];            /* trapezoidal synthesis window              */
+    float  Sn[M];               /* input speech                              */
+    float  hpf_states[2];       /* high pass filter states                   */
+    void  *nlp;                 /* pitch predictor states                    */
+    float  Sn_[2*N];           /* synthesised output speech                 */
+    float  ex_phase;            /* excitation model phase track              */
+    float  bg_est;              /* background noise estimate for post filter */
+    float  prev_Wo;             /* previous frame's pitch estimate           */
+    MODEL  prev_model;          /* previous frame's model parameters         */
+    float  prev_lsps_[LPC_ORD]; /* previous frame's LSPs                     */
+    float  prev_energy;         /* previous frame's LPC energy               */
+};
+
+void analyse_one_frame(struct CODEC2 *c2, MODEL *model, short speech[]);
+void synthesise_one_frame(struct CODEC2 *c2, short speech[], MODEL *model, float ak[]);
 
 int test1()
 {
     FILE   *fin, *fout;
     short   buf[N];
-    void   *c2;
-    CODEC2 *c3;
+    struct CODEC2 *c2;
     MODEL   model;
     float   ak[LPC_ORD+1];
     float   lsps[LPC_ORD];
 
-    c2 = codec2_create();
-    c3 = (CODEC2*)c2;
+    c2 = codec2_create(CODEC2_MODE_2500);
 
     fin = fopen("../raw/hts1a.raw", "rb");
     assert(fin != NULL);
@@ -72,9 +75,9 @@ int test1()
     assert(fout != NULL);
 
     while(fread(buf, sizeof(short), N, fin) == N) {
-       analyse_one_frame(c3, &model, buf);
-       speech_to_uq_lsps(lsps, ak, c3->Sn, c3->w, LPC_ORD);
-       synthesise_one_frame(c3, buf, &model, ak);
+       analyse_one_frame(c2, &model, buf);
+       speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, LPC_ORD);
+       synthesise_one_frame(c2, buf, &model, ak);
        fwrite(buf, sizeof(short), N, fout);
     }
 
@@ -90,23 +93,22 @@ int test2()
 {
     FILE   *fin, *fout;
     short   buf[2*N];
-    void   *c2;
-    CODEC2 *c3;
+    struct  CODEC2 *c2;
     MODEL   model, model_interp;
     float   ak[LPC_ORD+1];
     int     voiced1, voiced2;
     int     lsp_indexes[LPC_ORD];
     int     energy_index;
     int     Wo_index;
-    char    bits[CODEC2_BITS_PER_FRAME];
+    char    *bits;
     int     nbit;
     int     i;
     float   lsps[LPC_ORD];
     float   e;
        
-    c2 = codec2_create();
-    c3 = (CODEC2*)c2;
-
+    c2 = codec2_create(CODEC2_MODE_2500);
+    bits = (char*)malloc(codec2_bits_per_frame(c2));
+    assert(bits != NULL);
     fin = fopen("../raw/hts1a.raw", "rb");
     assert(fin != NULL);
     fout = fopen("hts1a_test.raw", "wb");
@@ -115,20 +117,18 @@ int test2()
     while(fread(buf, sizeof(short), 2*N, fin) == 2*N) {
        /* first 10ms analysis frame - we just want voicing */
 
-       analyse_one_frame(c3, &model, buf);
+       analyse_one_frame(c2, &model, buf);
        voiced1 = model.voiced;
 
        /* second 10ms analysis frame */
 
-       analyse_one_frame(c3, &model, &buf[N]);
+       analyse_one_frame(c2, &model, &buf[N]);
        voiced2 = model.voiced;
     
        Wo_index = encode_Wo(model.Wo);
-       encode_amplitudes(lsp_indexes, 
-                         &energy_index,
-                         &model, 
-                         c3->Sn, 
-                         c3->w);   
+       e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, LPC_ORD);
+       encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD);
+       energy_index = encode_energy(e);
        nbit = 0;
        pack(bits, &nbit, Wo_index, WO_BITS);
        for(i=0; i<LPC_ORD; i++) {
@@ -158,15 +158,16 @@ int test2()
 
        model.voiced = voiced2;
        model_interp.voiced = voiced1;
-       interpolate(&model_interp, &c3->prev_model, &model);
+       interpolate(&model_interp, &c2->prev_model, &model);
 
-       synthesise_one_frame(c3,  buf,     &model_interp, ak);
-       synthesise_one_frame(c3, &buf[N],  &model, ak);
+       synthesise_one_frame(c2,  buf,     &model_interp, ak);
+       synthesise_one_frame(c2, &buf[N],  &model, ak);
 
-       memcpy(&c3->prev_model, &model, sizeof(MODEL));
+       memcpy(&c2->prev_model, &model, sizeof(MODEL));
        fwrite(buf, sizeof(short), 2*N, fout);
     }
 
+    free(bits);
     codec2_destroy(c2);
 
     fclose(fin);
@@ -180,10 +181,11 @@ int test3()
     FILE   *fin, *fout, *fbits;
     short   buf1[2*N];
     short   buf2[2*N];
-    char    bits[CODEC2_BITS_PER_FRAME];
-    void   *c2;
+    char   *bits;
+    struct CODEC2 *c2;
 
-    c2 = codec2_create();
+    c2 = codec2_create(CODEC2_MODE_2500);
+    bits = (char*)malloc(codec2_bits_per_frame(c2));
 
     fin = fopen("../raw/hts1a.raw", "rb");
     assert(fin != NULL);
@@ -194,11 +196,12 @@ int test3()
 
     while(fread(buf1, sizeof(short), 2*N, fin) == 2*N) {
        codec2_encode(c2, bits, buf1);
-       fwrite(bits, sizeof(char), CODEC2_BITS_PER_FRAME, fbits);
+       fwrite(bits, sizeof(char), codec2_bits_per_frame(c2), fbits);
        codec2_decode(c2, buf2, bits);
-       fwrite(buf2, sizeof(short), CODEC2_SAMPLES_PER_FRAME, fout);
+       fwrite(buf2, sizeof(short), codec2_bits_per_frame(c2), fout);
     }
 
+    free(bits);
     codec2_destroy(c2);
 
     fclose(fin);
index 9c70c5fe50d4e362874db2b62c9e8ecb83c9b97d..6ad271d8d4c100e3faf15bca1ca6cb891c9fb684 100644 (file)
@@ -122,8 +122,8 @@ int test_lsp(int lsp_number, int levels, float max_error_hz) {
 
     for(i=0; i<levels; i++) {
        indexes_in[lsp_number] = i;
-       decode_lsps(lsp, indexes_in, LPC_ORD);
-       encode_lsps(indexes_out, lsp,LPC_ORD);
+       decode_lsps_scalar(lsp, indexes_in, LPC_ORD);
+       encode_lsps_scalar(indexes_out, lsp,LPC_ORD);
        if (indexes_in[lsp_number] != indexes_out[lsp_number]) {
            printf("freq: %f index_in: %d index_out: %d\n", 
                   lsp[lsp_number]+1, indexes_in[lsp_number],
@@ -135,18 +135,18 @@ int test_lsp(int lsp_number, int levels, float max_error_hz) {
     for(i=0; i<LPC_ORD; i++)
        indexes[i] = 0;
     indexes[lsp_number] = 0;
-    decode_lsps(lsp, indexes, LPC_ORD);
+    decode_lsps_scalar(lsp, indexes, LPC_ORD);
     lowf = lsp[lsp_number];
     indexes[lsp_number] = levels - 1;
-    decode_lsps(lsp, indexes, LPC_ORD);
+    decode_lsps_scalar(lsp, indexes, LPC_ORD);
     highf = lsp[lsp_number];
     sprintf(s,"lsp%d_err.txt", lsp_number+1);
     flsp = fopen(s, "wt");
 
     for(f=lowf; f<highf; f +=(highf-lowf)/1000.0) {
        lsp[lsp_number] = f;
-       encode_lsps(indexes, lsp, LPC_ORD);
-       decode_lsps(lsp, indexes, LPC_ORD);
+       encode_lsps_scalar(indexes, lsp, LPC_ORD);
+       decode_lsps_scalar(lsp, indexes, LPC_ORD);
        error = f - lsp[lsp_number];
        fprintf(flsp, "%f\n", error);
        if (fabs(error) > max_error_rads) {
index a3f5b51bd9ac4d25a22ff0a6c07a4740a265aad7..7461008baba0f0f04bb3253dcc5cd6c8ebd756e6 100755 (executable)
@@ -35,7 +35,7 @@
 #include <math.h>
 
 #define MIN(a,b) ((a)<(b)?(a):(b))
-#define COEF 0.70f
+#define COEF 0.00f
 #define MAX_ENTRIES 16384
 
 void compute_weights(const float *x, float *w, int ndim)
@@ -52,20 +52,21 @@ void compute_weights(const float *x, float *w, int ndim)
   w[1]*=2;
 }
 
-int find_nearest(const float *codebook, int nb_entries, float *x, int ndim)
+int find_nearest(const float *codebook, int nb_entries, float *x, int ndim, float *min_dist)
 {
   int i, j;
-  float min_dist = 1e15;
   int nearest = 0;
   
+  *min_dist = 1E15;
+  
   for (i=0;i<nb_entries;i++)
   {
     float dist=0;
     for (j=0;j<ndim;j++)
       dist += (x[j]-codebook[i*ndim+j])*(x[j]-codebook[i*ndim+j]);
-    if (dist<min_dist)
+    if (dist<*min_dist)
     {
-      min_dist = dist;
+      *min_dist = dist;
       nearest = i;
     }
   }
@@ -97,7 +98,7 @@ int quantize_lsp(const float *x, const float *codebook1, const float *codebook2,
 {
   int i, n1, n2, n3;
   float err[ndim], err2[ndim], err3[ndim];
-  float w[ndim], w2[ndim], w3[ndim];
+  float w[ndim], w2[ndim], w3[ndim], min_dist;
   
   w[0] = MIN(x[0], x[1]-x[0]);
   for (i=1;i<ndim-1;i++)
@@ -113,7 +114,7 @@ int quantize_lsp(const float *x, const float *codebook1, const float *codebook2,
   
   for (i=0;i<ndim;i++)
     err[i] = x[i]-COEF*xq[i];
-  n1 = find_nearest(codebook1, nb_entries, err, ndim);
+  n1 = find_nearest(codebook1, nb_entries, err, ndim, &min_dist);
   
   for (i=0;i<ndim;i++)
   {
@@ -157,13 +158,16 @@ void update(float *data, int nb_vectors, float *codebook, int nb_entries, int nd
   int i,j;
   int count[nb_entries];
   int nearest[nb_vectors];
-  
+  float min_dist;
+  float total_min_dist = 0;
+
   for (i=0;i<nb_entries;i++)
     count[i] = 0;
   
   for (i=0;i<nb_vectors;i++)
   {
-    nearest[i] = find_nearest(codebook, nb_entries, data+i*ndim, ndim);
+      nearest[i] = find_nearest(codebook, nb_entries, data+i*ndim, ndim, &min_dist);
+      total_min_dist += min_dist;
   }
   for (i=0;i<nb_entries*ndim;i++)
     codebook[i] = 0;
@@ -183,7 +187,7 @@ void update(float *data, int nb_vectors, float *codebook, int nb_entries, int nd
       codebook[i*ndim+j] *= (1./count[i]);
     w2 += (count[i]/(float)nb_vectors)*(count[i]/(float)nb_vectors);
   }
-  fprintf(stderr, "%f / %d\n", 1./w2, nb_entries);
+  fprintf(stderr, "%f / %d var = %f\n", 1./w2, nb_entries, total_min_dist/nb_vectors );
 }
 
 void update_weighted(float *data, float *weight, int nb_vectors, float *codebook, int nb_entries, int ndim)
@@ -228,6 +232,7 @@ void vq_train(float *data, int nb_vectors, float *codebook, int nb_entries, int
 {
   int i, j, e;
   e = 1;
+
   for (j=0;j<ndim;j++)
     codebook[j] = 0;
   for (i=0;i<nb_vectors;i++)
@@ -235,8 +240,7 @@ void vq_train(float *data, int nb_vectors, float *codebook, int nb_entries, int
       codebook[j] += data[i*ndim+j];
   for (j=0;j<ndim;j++)
     codebook[j] *= (1./nb_vectors);
-  
-  
+    
   while (e< nb_entries)
   {
     split(codebook, e, ndim);
@@ -278,7 +282,7 @@ int main(int argc, char **argv)
   float *data, *pred, *codebook, *codebook2, *codebook3;
   float *weight, *weight2, *weight3;
   float *delta, *delta2;
-  float tmp, err;
+  float tmp, err, min_dist, total_min_dist;
   int ret;
 
   printf("Jean-Marc Valin's Split VQ training program....\n");
@@ -303,12 +307,14 @@ int main(int argc, char **argv)
     {
        ret = fscanf(ftrain, "%f ", &tmp);
     }
-    printf("\r%d lines",nb_vectors++);
+    nb_vectors++;
+    if ((nb_vectors % 1000) == 0)
+       printf("\r%d lines",nb_vectors);
   }
 
   rewind(ftrain);
 
-  printf("ndim %d nb_vectors %d nb_entries %d\n", ndim, nb_vectors, nb_entries);
+  printf("\nndim %d nb_vectors %d nb_entries %d\n", ndim, nb_vectors, nb_entries);
 
   data = malloc(nb_vectors*ndim*sizeof(*data));
   weight = malloc(nb_vectors*ndim*sizeof(*weight));
@@ -343,10 +349,11 @@ int main(int argc, char **argv)
     }
   }
 
-  /* initial predictor state */
+  /* 20ms (two frame gaps) initial predictor state */
 
-  for (i=0;i<ndim;i++)
-    pred[i] = data[i] - M_PI*(i+1)/(ndim+1);
+  for (i=0;i<ndim;i++) {
+    pred[i+ndim] = pred[i] = data[i] - M_PI*(i+1)/(ndim+1);
+  }
 
   /* generate predicted data for training */
 
@@ -364,9 +371,11 @@ int main(int argc, char **argv)
   
   delta = malloc(nb_vectors*ndim*sizeof(*data));
   err = 0;
+  total_min_dist = 0;
   for (i=0;i<nb_vectors;i++)
   {
-    int nearest = find_nearest(codebook, nb_entries, &pred[i*ndim], ndim);
+      int nearest = find_nearest(codebook, nb_entries, &pred[i*ndim], ndim, &min_dist);
+      total_min_dist += min_dist;
     for (j=0;j<ndim;j++)
     {
       //delta[i*ndim+j] = data[i*ndim+j] - codebook[nearest*ndim+j];
@@ -378,8 +387,9 @@ int main(int argc, char **argv)
     }
     //printf("\n");
   }
-  fprintf(stderr, "LSP RMS error: %f\n", sqrt(err/nb_vectors/ndim));
-
+  fprintf(stderr, "Stage 1 LSP RMS error: %f\n", sqrt(err/nb_vectors/ndim));
+  fprintf(stderr, "Stage 1 LSP variance.: %f\n", total_min_dist/nb_vectors);
+  
 #if 1
   vq_train(delta, nb_vectors, codebook2, nb_entries, ndim/2);
   vq_train(delta+ndim*nb_vectors/2, nb_vectors, codebook3, nb_entries, ndim/2);
@@ -387,28 +397,33 @@ int main(int argc, char **argv)
   vq_train_weighted(delta, weight2, nb_vectors, codebook2, nb_entries, ndim/2);
   vq_train_weighted(delta+ndim*nb_vectors/2, weight3, nb_vectors, codebook3, nb_entries, ndim/2);
 #endif
+
   err = 0;
-  
+  total_min_dist = 0; 
   delta2 = delta + nb_vectors*ndim/2;
 
   for (i=0;i<nb_vectors;i++)
   {
     int n1, n2;
-    n1 = find_nearest(codebook2, nb_entries, &delta[i*ndim/2], ndim/2);
+    n1 = find_nearest(codebook2, nb_entries, &delta[i*ndim/2], ndim/2, &min_dist);
     for (j=0;j<ndim/2;j++)
     {
       delta[i*ndim/2+j] = delta[i*ndim/2+j] - codebook2[n1*ndim/2+j];
       err += (delta[i*ndim/2+j])*(delta[i*ndim/2+j]);
     }
+    total_min_dist += min_dist;
 
-    n2 = find_nearest(codebook3, nb_entries, &delta2[i*ndim/2], ndim/2);
+    n2 = find_nearest(codebook3, nb_entries, &delta2[i*ndim/2], ndim/2, &min_dist);
     for (j=0;j<ndim/2;j++)
     {
       delta[i*ndim/2+j] = delta[i*ndim/2+j] - codebook2[n2*ndim/2+j];
       err += (delta2[i*ndim/2+j])*(delta2[i*ndim/2+j]);
     }
+    total_min_dist += min_dist;
   }
-  fprintf(stderr, "LSP RMS error stage 2: %f\n", sqrt(err/nb_vectors/ndim));
+  fprintf(stderr, "Stage 2 LSP RMS error: %f\n", sqrt(err/nb_vectors/ndim));
+  fprintf(stderr, "Stage 2 LSP Variance.: %f\n", total_min_dist/nb_vectors);
   
   float xq[ndim];
   for (i=0;i<ndim;i++)
@@ -423,6 +438,9 @@ int main(int argc, char **argv)
     printf("\n");*/
   }
   
+  /* save output tables to text files */
+
+  exit(0);
   for (i=0;i<nb_entries;i++)
   {
     for (j=0;j<ndim;j++)