From f959df407d56fbdb48cbb3cbce13e003b9f14566 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Fri, 11 Nov 2011 00:49:16 +0000 Subject: [PATCH] used jnd codebook for lsps 5-10, gave 0.5 to 1.0 dB snr improvement for lspd & 1400 bit/s git-svn-id: https://svn.code.sf.net/p/freetel/code@304 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2-dev/src/Makefile.am | 20 +- codec2-dev/src/Makefile.in | 33 +- codec2-dev/src/c2sim.c | 29 +- codec2-dev/src/codebookjnd.c | 3496 ++++++++++++++++++++++++++++++++++ codec2-dev/src/codebookvq.c | 16 +- codec2-dev/src/defines.h | 2 +- codec2-dev/src/quantise.c | 89 +- codec2-dev/src/quantise.h | 2 +- 8 files changed, 3601 insertions(+), 86 deletions(-) create mode 100644 codec2-dev/src/codebookjnd.c diff --git a/codec2-dev/src/Makefile.am b/codec2-dev/src/Makefile.am index 24bacf9c..8bc7e448 100644 --- a/codec2-dev/src/Makefile.am +++ b/codec2-dev/src/Makefile.am @@ -37,22 +37,24 @@ CODEBOOKSVQ= \ $D/lsp4.txt \ $(top_srcdir)/unittest/lsp45678910.txt -CODEBOOKSRES= \ - $D/lspres_centre1.txt \ - $D/lspres_bw1.txt \ +CODEBOOKSJND= \ + $D/lsp1.txt \ + $D/lsp2.txt \ $D/lsp3.txt \ - $D/lsp4.txt + $D/lsp4.txt \ + $(top_srcdir)/unittest/lspjnd5-10.txt CODEBOOKSDT= \ $D/lspdt1-4.txt \ $D/lspdt5-10.txt + noinst_PROGRAMS = generate_codebook genlspdtcb codebook.$(OBJEXT): codebook.c codebookd.$(OBJEXT): codebookd.c codebookvq.$(OBJEXT): codebookvq.c -codebookres.$(OBJEXT): codebookres.c +codebookjnd.$(OBJEXT): codebookjnd.c $(CODEBOOKSDT): genlspdtcb ./genlspdtcb @@ -68,14 +70,14 @@ codebookd.c: generate_codebook $(CODEBOOKSD) codebookvq.c: generate_codebook $(CODEBOOKSVQ) ./generate_codebook lsp_cbvq $(CODEBOOKSVQ) > codebookvq.c -codebookres.c: generate_codebook $(CODEBOOKSRES) - ./generate_codebook lsp_cbres $(CODEBOOKSRES) > codebookres.c +codebookjnd.c: generate_codebook $(CODEBOOKSJND) + ./generate_codebook lsp_cbjnd $(CODEBOOKSJND) > codebookjnd.c codebookdt.c: generate_codebook $(CODEBOOKSDT) ./generate_codebook lsp_cbdt $(CODEBOOKSDT) > codebookdt.c clean-local: - -rm -f codebook.c codebookd.c codebookdvq.c codebookres.c codebookdt.c + -rm -f codebook.c codebookd.c codebookdvq.c codebookjnd.c codebookdt.c lib_LTLIBRARIES = libcodec2.la libcodec2_la_SOURCES = dump.c \ @@ -94,7 +96,7 @@ pack.c \ codebook.c \ codebookd.c \ codebookvq.c \ -codebookres.c \ +codebookjnd.c \ codebookdt.c libcodec2_la_CFLAGS = $(AM_CFLAGS) diff --git a/codec2-dev/src/Makefile.in b/codec2-dev/src/Makefile.in index 39a273cc..c07ba517 100644 --- a/codec2-dev/src/Makefile.in +++ b/codec2-dev/src/Makefile.in @@ -69,7 +69,7 @@ am_libcodec2_la_OBJECTS = libcodec2_la-dump.lo libcodec2_la-lpc.lo \ libcodec2_la-phase.lo libcodec2_la-quantise.lo \ libcodec2_la-pack.lo libcodec2_la-codebook.lo \ libcodec2_la-codebookd.lo libcodec2_la-codebookvq.lo \ - libcodec2_la-codebookres.lo libcodec2_la-codebookdt.lo + libcodec2_la-codebookjnd.lo libcodec2_la-codebookdt.lo libcodec2_la_OBJECTS = $(am_libcodec2_la_OBJECTS) binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) @@ -255,11 +255,12 @@ CODEBOOKSVQ = \ $D/lsp4.txt \ $(top_srcdir)/unittest/lsp45678910.txt -CODEBOOKSRES = \ - $D/lspres_centre1.txt \ - $D/lspres_bw1.txt \ +CODEBOOKSJND = \ + $D/lsp1.txt \ + $D/lsp2.txt \ $D/lsp3.txt \ - $D/lsp4.txt + $D/lsp4.txt \ + $(top_srcdir)/unittest/lspjnd5-10.txt CODEBOOKSDT = \ $D/lspdt1-4.txt \ @@ -282,7 +283,7 @@ pack.c \ codebook.c \ codebookd.c \ codebookvq.c \ -codebookres.c \ +codebookjnd.c \ codebookdt.c libcodec2_la_CFLAGS = $(AM_CFLAGS) @@ -447,7 +448,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcodec2_la-codebook.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcodec2_la-codebookd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcodec2_la-codebookdt.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcodec2_la-codebookres.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcodec2_la-codebookjnd.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-codec2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcodec2_la-dump.Plo@am__quote@ @@ -596,12 +597,12 @@ libcodec2_la-codebookvq.lo: codebookvq.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-codebookvq.lo `test -f 'codebookvq.c' || echo '$(srcdir)/'`codebookvq.c -libcodec2_la-codebookres.lo: codebookres.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-codebookres.lo -MD -MP -MF "$(DEPDIR)/libcodec2_la-codebookres.Tpo" -c -o libcodec2_la-codebookres.lo `test -f 'codebookres.c' || echo '$(srcdir)/'`codebookres.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcodec2_la-codebookres.Tpo" "$(DEPDIR)/libcodec2_la-codebookres.Plo"; else rm -f "$(DEPDIR)/libcodec2_la-codebookres.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='codebookres.c' object='libcodec2_la-codebookres.lo' libtool=yes @AMDEPBACKSLASH@ +libcodec2_la-codebookjnd.lo: codebookjnd.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-codebookjnd.lo -MD -MP -MF "$(DEPDIR)/libcodec2_la-codebookjnd.Tpo" -c -o libcodec2_la-codebookjnd.lo `test -f 'codebookjnd.c' || echo '$(srcdir)/'`codebookjnd.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcodec2_la-codebookjnd.Tpo" "$(DEPDIR)/libcodec2_la-codebookjnd.Plo"; else rm -f "$(DEPDIR)/libcodec2_la-codebookjnd.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='codebookjnd.c' object='libcodec2_la-codebookjnd.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-codebookres.lo `test -f 'codebookres.c' || echo '$(srcdir)/'`codebookres.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-codebookjnd.lo `test -f 'codebookjnd.c' || echo '$(srcdir)/'`codebookjnd.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; \ @@ -816,7 +817,7 @@ uninstall-am: uninstall-binPROGRAMS uninstall-info-am \ codebook.$(OBJEXT): codebook.c codebookd.$(OBJEXT): codebookd.c codebookvq.$(OBJEXT): codebookvq.c -codebookres.$(OBJEXT): codebookres.c +codebookjnd.$(OBJEXT): codebookjnd.c $(CODEBOOKSDT): genlspdtcb ./genlspdtcb @@ -832,14 +833,14 @@ codebookd.c: generate_codebook $(CODEBOOKSD) codebookvq.c: generate_codebook $(CODEBOOKSVQ) ./generate_codebook lsp_cbvq $(CODEBOOKSVQ) > codebookvq.c -codebookres.c: generate_codebook $(CODEBOOKSRES) - ./generate_codebook lsp_cbres $(CODEBOOKSRES) > codebookres.c +codebookjnd.c: generate_codebook $(CODEBOOKSJND) + ./generate_codebook lsp_cbjnd $(CODEBOOKSJND) > codebookjnd.c codebookdt.c: generate_codebook $(CODEBOOKSDT) ./generate_codebook lsp_cbdt $(CODEBOOKSDT) > codebookdt.c clean-local: - -rm -f codebook.c codebookd.c codebookdvq.c codebookres.c codebookdt.c + -rm -f codebook.c codebookd.c codebookdvq.c codebookjnd.c codebookdt.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 36155c95..e1ee1b3c 100644 --- a/codec2-dev/src/c2sim.c +++ b/codec2-dev/src/c2sim.c @@ -79,6 +79,7 @@ int main(int argc, char *argv[]) int lpc_model, order = LPC_ORD; int lsp, lspd, lspvq, lsp_quantiser, lspres, lspdt, lspdt_mode, dt; + int lspjnd; float ak[LPC_MAX]; COMP Sw_[FFT_ENC]; COMP Ew[FFT_ENC]; @@ -136,6 +137,7 @@ int main(int argc, char *argv[]) "\thttp://rowetel.com/codec2.html\n\n" "usage: %s InputFile [-o OutputFile]\n" "\t[--lpc Order]\n" + "\t[--lspjnd]\n" "\t[--lsp]\n" "\t[--lspd]\n" "\t[--lspvq]\n" @@ -147,6 +149,7 @@ int main(int argc, char *argv[]) "\t[--hand_voicing]\n" "\t[--dec]\n" "\t[--dt]\n" + "\t[--2500]\n" "\t[--1400]\n" "\t[--dump DumpFilePrefix]\n", argv[0]); exit(1); @@ -191,6 +194,8 @@ int main(int argc, char *argv[]) dump_on(argv[dump+1]); #endif + lspjnd = switch_present("--lspjnd",argc,argv); + lsp = switch_present("--lsp",argc,argv); lsp_quantiser = 0; if (lsp) @@ -240,9 +245,16 @@ int main(int argc, char *argv[]) dt = switch_present("--dt",argc,argv); + if (switch_present("--2500",argc,argv)) { + lpc_model = 1; order = 10; + lsp = 1; + phase0 = 1; + postfilt = 1; + decimate = 1; + } if (switch_present("--1400",argc,argv)) { lpc_model = 1; order = 10; - lspdt = 1; lspdt_mode = LSPDT_LOW; + lspd = 1; lspdt = 1; lspdt_mode = LSPDT_LOW; phase0 = 1; postfilt = 1; decimate = 1; @@ -337,6 +349,7 @@ int main(int argc, char *argv[]) dump_lsp(lsps); #endif + /* various LSP quantisation schemes */ if (lsp) { @@ -347,7 +360,6 @@ int main(int argc, char *argv[]) } if (lspd) { - //locate_lsps_jnd_steps(lsps, LPC_ORD); lspd_quantise(lsps, lsps_, LPC_ORD); bw_expand_lsps(lsps_, LPC_ORD); lsp_to_lpc(lsps_, ak, LPC_ORD); @@ -360,12 +372,6 @@ int main(int argc, char *argv[]) lsp_to_lpc(lsps_, ak, LPC_ORD); } - if (lspres) { - lspres_quantise(lsps, lsps_, LPC_ORD); - locate_lsps_jnd_steps(lsps_, LPC_ORD); - lsp_to_lpc(lsps_, ak, LPC_ORD); - } - /* we need lsp__prev[] for lspdt. If no other LSP quantisation is used we use original LSPs as there is no quantised version available. */ @@ -374,6 +380,13 @@ int main(int argc, char *argv[]) for(i=0; i