From 5aba1114d8571dac0dd07040aa1e6d17f8a10ea1 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Fri, 14 Sep 2012 05:19:54 +0000 Subject: [PATCH] initial attempt at getting Anssi's multi-stage VQ integrated git-svn-id: https://svn.code.sf.net/p/freetel/code@698 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2-dev/src/Makefile.am | 18 ++++---- codec2-dev/src/Makefile.in | 32 ++++++------- codec2-dev/src/c2sim.c | 14 ++++-- codec2-dev/src/defines.h | 2 +- codec2-dev/src/quantise.c | 94 ++++++++++++++++++++++++++------------ codec2-dev/src/quantise.h | 2 +- 6 files changed, 104 insertions(+), 58 deletions(-) diff --git a/codec2-dev/src/Makefile.am b/codec2-dev/src/Makefile.am index d983de95..097f4cce 100644 --- a/codec2-dev/src/Makefile.am +++ b/codec2-dev/src/Makefile.am @@ -66,10 +66,10 @@ CODEBOOKSJVM= \ $D/lspjvm2.txt \ $D/lspjvm3.txt -CODEBOOKSVQEXP= \ - $D/lspvqexp1.txt \ - $D/lspvqexp2.txt \ - $D/lspvqexp3.txt +CODEBOOKSVQANSSI= \ + $D/lspvqanssi1.txt \ + $D/lspvqanssi2.txt \ + $D/lspvqanssi3.txt CODEBOOKSGE= \ $D/gecb.txt @@ -82,7 +82,7 @@ codebookdt.$(OBJEXT): codebookdt.c codebookvq.$(OBJEXT): codebookvq.c codebookjnd.$(OBJEXT): codebookjnd.c codebookjvm.$(OBJEXT): codebookjvm.c -codebookvqexp.$(OBJEXT): codebookvqexp.c +codebookvqanssi.$(OBJEXT): codebookvqanssi.c codebookge.$(OBJEXT): codebookge.c codebook.lo: codebook.c @@ -105,14 +105,14 @@ codebookjnd.c: generate_codebook $(CODEBOOKSJND) codebookjvm.c: generate_codebook $(CODEBOOKSJVM) ./generate_codebook lsp_cbjvm $(CODEBOOKSJVM) > codebookjvm.c -codebookvqexp.c: generate_codebook $(CODEBOOKSVQEXP) - ./generate_codebook lsp_cbvqexp $(CODEBOOKSVQEXP) > codebookvqexp.c +codebookvqanssi.c: generate_codebook $(CODEBOOKSVQEXP) + ./generate_codebook lsp_cbvqanssi $(CODEBOOKSVQANSSI) > codebookvqanssi.c codebookge.c: generate_codebook $(CODEBOOKSGE) ./generate_codebook ge_cb $(CODEBOOKSGE) > codebookge.c clean-local: - -rm -f codebook.c codebookd.c codebookdvq.c codebookjnd.c codebookdt.c codebookjvm.c codebookge.c codebookvqexp.c + -rm -f codebook.c codebookd.c codebookdvq.c codebookjnd.c codebookdt.c codebookjvm.c codebookge.c codebookvqanssi.c lib_LTLIBRARIES = libcodec2.la libcodec2_la_SOURCES = dump.c \ @@ -134,7 +134,7 @@ codebookd.c \ codebookvq.c \ codebookjnd.c \ codebookjvm.c \ -codebookvqexp.c \ +codebookvqanssi.c \ codebookdt.c \ codebookge.c diff --git a/codec2-dev/src/Makefile.in b/codec2-dev/src/Makefile.in index 1233e426..f186e93b 100644 --- a/codec2-dev/src/Makefile.in +++ b/codec2-dev/src/Makefile.in @@ -72,7 +72,7 @@ am_libcodec2_la_OBJECTS = libcodec2_la-dump.lo libcodec2_la-lpc.lo \ libcodec2_la-ampexp.lo libcodec2_la-pack.lo \ libcodec2_la-codebook.lo libcodec2_la-codebookd.lo \ libcodec2_la-codebookvq.lo libcodec2_la-codebookjnd.lo \ - libcodec2_la-codebookjvm.lo libcodec2_la-codebookvqexp.lo \ + libcodec2_la-codebookjvm.lo libcodec2_la-codebookvqanssi.lo \ libcodec2_la-codebookdt.lo libcodec2_la-codebookge.lo libcodec2_la_OBJECTS = $(am_libcodec2_la_OBJECTS) binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) @@ -312,10 +312,10 @@ CODEBOOKSJVM = \ $D/lspjvm2.txt \ $D/lspjvm3.txt -CODEBOOKSVQEXP = \ - $D/lspvqexp1.txt \ - $D/lspvqexp2.txt \ - $D/lspvqexp3.txt +CODEBOOKSVQANSSI = \ + $D/lspvqanssi1.txt \ + $D/lspvqanssi2.txt \ + $D/lspvqanssi3.txt CODEBOOKSGE = \ $D/gecb.txt @@ -340,7 +340,7 @@ codebookd.c \ codebookvq.c \ codebookjnd.c \ codebookjvm.c \ -codebookvqexp.c \ +codebookvqanssi.c \ codebookdt.c \ codebookge.c @@ -528,7 +528,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcodec2_la-codebookjnd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcodec2_la-codebookjvm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcodec2_la-codebookvq.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcodec2_la-codebookvqexp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcodec2_la-codebookvqanssi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcodec2_la-codec2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcodec2_la-dump.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcodec2_la-fdmdv.Plo@am__quote@ @@ -698,12 +698,12 @@ libcodec2_la-codebookjvm.lo: codebookjvm.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcodec2_la_CFLAGS) $(CFLAGS) -c -o libcodec2_la-codebookjvm.lo `test -f 'codebookjvm.c' || echo '$(srcdir)/'`codebookjvm.c -libcodec2_la-codebookvqexp.lo: codebookvqexp.c -@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcodec2_la_CFLAGS) $(CFLAGS) -MT libcodec2_la-codebookvqexp.lo -MD -MP -MF "$(DEPDIR)/libcodec2_la-codebookvqexp.Tpo" -c -o libcodec2_la-codebookvqexp.lo `test -f 'codebookvqexp.c' || echo '$(srcdir)/'`codebookvqexp.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcodec2_la-codebookvqexp.Tpo" "$(DEPDIR)/libcodec2_la-codebookvqexp.Plo"; else rm -f "$(DEPDIR)/libcodec2_la-codebookvqexp.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='codebookvqexp.c' object='libcodec2_la-codebookvqexp.lo' libtool=yes @AMDEPBACKSLASH@ +libcodec2_la-codebookvqanssi.lo: codebookvqanssi.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcodec2_la_CFLAGS) $(CFLAGS) -MT libcodec2_la-codebookvqanssi.lo -MD -MP -MF "$(DEPDIR)/libcodec2_la-codebookvqanssi.Tpo" -c -o libcodec2_la-codebookvqanssi.lo `test -f 'codebookvqanssi.c' || echo '$(srcdir)/'`codebookvqanssi.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcodec2_la-codebookvqanssi.Tpo" "$(DEPDIR)/libcodec2_la-codebookvqanssi.Plo"; else rm -f "$(DEPDIR)/libcodec2_la-codebookvqanssi.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='codebookvqanssi.c' object='libcodec2_la-codebookvqanssi.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcodec2_la_CFLAGS) $(CFLAGS) -c -o libcodec2_la-codebookvqexp.lo `test -f 'codebookvqexp.c' || echo '$(srcdir)/'`codebookvqexp.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcodec2_la_CFLAGS) $(CFLAGS) -c -o libcodec2_la-codebookvqanssi.lo `test -f 'codebookvqanssi.c' || echo '$(srcdir)/'`codebookvqanssi.c libcodec2_la-codebookdt.lo: codebookdt.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcodec2_la_CFLAGS) $(CFLAGS) -MT libcodec2_la-codebookdt.lo -MD -MP -MF "$(DEPDIR)/libcodec2_la-codebookdt.Tpo" -c -o libcodec2_la-codebookdt.lo `test -f 'codebookdt.c' || echo '$(srcdir)/'`codebookdt.c; \ @@ -928,7 +928,7 @@ codebookdt.$(OBJEXT): codebookdt.c codebookvq.$(OBJEXT): codebookvq.c codebookjnd.$(OBJEXT): codebookjnd.c codebookjvm.$(OBJEXT): codebookjvm.c -codebookvqexp.$(OBJEXT): codebookvqexp.c +codebookvqanssi.$(OBJEXT): codebookvqanssi.c codebookge.$(OBJEXT): codebookge.c codebook.lo: codebook.c @@ -951,14 +951,14 @@ codebookjnd.c: generate_codebook $(CODEBOOKSJND) codebookjvm.c: generate_codebook $(CODEBOOKSJVM) ./generate_codebook lsp_cbjvm $(CODEBOOKSJVM) > codebookjvm.c -codebookvqexp.c: generate_codebook $(CODEBOOKSVQEXP) - ./generate_codebook lsp_cbvqexp $(CODEBOOKSVQEXP) > codebookvqexp.c +codebookvqanssi.c: generate_codebook $(CODEBOOKSVQEXP) + ./generate_codebook lsp_cbvqanssi $(CODEBOOKSVQANSSI) > codebookvqanssi.c codebookge.c: generate_codebook $(CODEBOOKSGE) ./generate_codebook ge_cb $(CODEBOOKSGE) > codebookge.c clean-local: - -rm -f codebook.c codebookd.c codebookdvq.c codebookjnd.c codebookdt.c codebookjvm.c codebookge.c codebookvqexp.c + -rm -f codebook.c codebookd.c codebookdvq.c codebookjnd.c codebookdt.c codebookjvm.c codebookge.c codebookvqanssi.c # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/codec2-dev/src/c2sim.c b/codec2-dev/src/c2sim.c index 3e5d8c97..721631da 100644 --- a/codec2-dev/src/c2sim.c +++ b/codec2-dev/src/c2sim.c @@ -87,7 +87,7 @@ int main(int argc, char *argv[]) int lsp = 0, lspd = 0, lspvq = 0; int lspres = 0; int lspdt = 0, lspdt_mode = LSPDT_ALL; - int dt = 0, lspjvm = 0, lspjnd = 0, lspmel = 0; + int dt = 0, lspjvm = 0, lspanssi = 0, lspjnd = 0, lspmel = 0; float ak[LPC_MAX]; COMP Sw_[FFT_ENC]; COMP Ew[FFT_ENC]; @@ -138,6 +138,7 @@ int main(int argc, char *argv[]) { "lspdt", no_argument, &lspdt, 1 }, { "lspdt_mode", required_argument, NULL, 0 }, { "lspjvm", no_argument, &lspjvm, 1 }, + { "lspanssi", no_argument, &lspanssi, 1 }, { "phase0", no_argument, &phase0, 1 }, { "phaseexp", required_argument, &phaseexp, 1 }, { "ampexp", required_argument, &exp, 1 }, @@ -505,7 +506,7 @@ int main(int argc, char *argv[]) } if (lspjvm) { - /* Jean-Marc's multi-stage VQ */ + /* Jean-Marc's multi-stage, split VQ */ lspjvm_quantise(lsps, lsps_, LPC_ORD); { float lsps_bw[LPC_ORD]; @@ -515,6 +516,13 @@ int main(int argc, char *argv[]) } } + if (lspanssi) { + /* multi-stage VQ from Anssi Ramo OH3GDD */ + + lspanssi_quantise(lsps, lsps_, LPC_ORD); + lsp_to_lpc(lsps_, ak, LPC_ORD); + } + /* experimenting with non-linear LSP spacing to see if it's just noticable */ @@ -565,7 +573,7 @@ int main(int argc, char *argv[]) analysis. Re-design some time. */ - if (!lsp && !lspd && !lspvq && !lspres && !lspjvm && !lspjnd && !lspmel) + if (!lsp && !lspd && !lspvq && !lspres && !lspjvm && !lspanssi && !lspjnd && !lspmel) for(i=0; i