From: drowe67 Date: Thu, 18 Nov 2010 05:22:50 +0000 (+0000) Subject: experimental dLSP quantiser, sounds OK at 32 bits/frame X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=a151e69463bd3e8a77047774ad0b68ca2f71f115;p=freetel-svn-tracking.git experimental dLSP quantiser, sounds OK at 32 bits/frame git-svn-id: https://svn.code.sf.net/p/freetel/code@243 01035d8c-6547-0410-b346-abe4f91aad63 --- diff --git a/codec2/src/Makefile.am b/codec2/src/Makefile.am index 6a937891..1aec25ca 100644 --- a/codec2/src/Makefile.am +++ b/codec2/src/Makefile.am @@ -4,6 +4,9 @@ NAME = codec2 AM_CPPFLAGS = $(AM_CFLAGS) D=codebook + +# lsp quantisers + CODEBOOKS= \ $D/lsp1.txt \ $D/lsp2.txt \ @@ -16,17 +19,35 @@ CODEBOOKS= \ $D/lsp9.txt \ $D/lsp10.txt +# lspd quantisers + +CODEBOOKSD= \ + $D/dlsp1.txt \ + $D/dlsp2.txt \ + $D/dlsp3.txt \ + $D/dlsp4.txt \ + $D/dlsp5.txt \ + $D/dlsp6.txt \ + $D/dlsp7.txt \ + $D/dlsp8.txt \ + $D/dlsp9.txt \ + $D/dlsp10.txt + noinst_PROGRAMS = generate_codebook codebook.$(OBJEXT): codebook.c +codebookd.$(OBJEXT): codebookd.c codebook.lo: codebook.c codebook.c: generate_codebook $(CODEBOOKS) - ./generate_codebook $(CODEBOOKS) > codebook.c + ./generate_codebook lsp_cb $(CODEBOOKS) > codebook.c + +codebookd.c: generate_codebook $(CODEBOOKSD) + ./generate_codebook lsp_cbd $(CODEBOOKSD) > codebookd.c clean-local: - -rm -f codebook.c + -rm -f codebook.c codebookd.c lib_LTLIBRARIES = libcodec2.la libcodec2_la_SOURCES = dump.c \ @@ -41,7 +62,8 @@ lsp.c \ phase.c \ quantise.c \ pack.c \ -codebook.c +codebook.c \ +codebookd.c libcodec2_la_CFLAGS = $(AM_CFLAGS) libcodec2_la_LDFLAGS = $(LIBS) diff --git a/codec2/src/Makefile.in b/codec2/src/Makefile.in index b1d51071..1efebb03 100644 --- a/codec2/src/Makefile.in +++ b/codec2/src/Makefile.in @@ -67,7 +67,7 @@ am_libcodec2_la_OBJECTS = libcodec2_la-dump.lo libcodec2_la-lpc.lo \ libcodec2_la-four1.lo libcodec2_la-interp.lo \ libcodec2_la-lsp.lo libcodec2_la-phase.lo \ libcodec2_la-quantise.lo libcodec2_la-pack.lo \ - libcodec2_la-codebook.lo + libcodec2_la-codebook.lo libcodec2_la-codebookd.lo libcodec2_la_OBJECTS = $(am_libcodec2_la_OBJECTS) binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) @@ -217,6 +217,8 @@ AUTOMAKE_OPTS = gnu NAME = codec2 AM_CPPFLAGS = $(AM_CFLAGS) D = codebook + +# lsp quantisers CODEBOOKS = \ $D/lsp1.txt \ $D/lsp2.txt \ @@ -229,6 +231,20 @@ CODEBOOKS = \ $D/lsp9.txt \ $D/lsp10.txt + +# lspd quantisers +CODEBOOKSD = \ + $D/dlsp1.txt \ + $D/dlsp2.txt \ + $D/dlsp3.txt \ + $D/dlsp4.txt \ + $D/dlsp5.txt \ + $D/dlsp6.txt \ + $D/dlsp7.txt \ + $D/dlsp8.txt \ + $D/dlsp9.txt \ + $D/dlsp10.txt + lib_LTLIBRARIES = libcodec2.la libcodec2_la_SOURCES = dump.c \ lpc.c \ @@ -242,7 +258,8 @@ lsp.c \ phase.c \ quantise.c \ pack.c \ -codebook.c +codebook.c \ +codebookd.c libcodec2_la_CFLAGS = $(AM_CFLAGS) libcodec2_la_LDFLAGS = $(LIBS) @@ -398,6 +415,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c2sim.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/generate_codebook.Po@am__quote@ @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-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-four1.Plo@am__quote@ @@ -523,6 +541,13 @@ libcodec2_la-codebook.lo: codebook.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-codebook.lo `test -f 'codebook.c' || echo '$(srcdir)/'`codebook.c +libcodec2_la-codebookd.lo: codebookd.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-codebookd.lo -MD -MP -MF "$(DEPDIR)/libcodec2_la-codebookd.Tpo" -c -o libcodec2_la-codebookd.lo `test -f 'codebookd.c' || echo '$(srcdir)/'`codebookd.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libcodec2_la-codebookd.Tpo" "$(DEPDIR)/libcodec2_la-codebookd.Plo"; else rm -f "$(DEPDIR)/libcodec2_la-codebookd.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='codebookd.c' object='libcodec2_la-codebookd.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-codebookd.lo `test -f 'codebookd.c' || echo '$(srcdir)/'`codebookd.c + mostlyclean-libtool: -rm -f *.lo @@ -727,14 +752,18 @@ uninstall-am: uninstall-binPROGRAMS uninstall-info-am \ codebook.$(OBJEXT): codebook.c +codebookd.$(OBJEXT): codebookd.c codebook.lo: codebook.c codebook.c: generate_codebook $(CODEBOOKS) - ./generate_codebook $(CODEBOOKS) > codebook.c + ./generate_codebook lsp_cb $(CODEBOOKS) > codebook.c + +codebookd.c: generate_codebook $(CODEBOOKSD) + ./generate_codebook lsp_cbd $(CODEBOOKSD) > codebookd.c clean-local: - -rm -f codebook.c + -rm -f codebook.c codebookd.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/src/c2sim.c b/codec2/src/c2sim.c index 2ed87de3..ae320e95 100644 --- a/codec2/src/c2sim.c +++ b/codec2/src/c2sim.c @@ -100,7 +100,7 @@ int main(int argc, char *argv[]) float sum_snr; int lpc_model, order = 0; - int lsp, lsp_quantiser; + int lsp, dlsp, lsp_quantiser; float ak[LPC_MAX]; COMP Sw_[FFT_ENC]; COMP Ew[FFT_ENC]; @@ -157,6 +157,7 @@ int main(int argc, char *argv[]) "usage: %s InputFile [-o OutputFile]\n" "\t[--lpc Order]\n" "\t[--lsp]\n" + "\t[--dlsp]\n" "\t[--phase0]\n" "\t[--postfilter]\n" "\t[--hand_voicing]\n" @@ -206,6 +207,12 @@ int main(int argc, char *argv[]) lsp = switch_present("--lsp",argc,argv); lsp_quantiser = 0; + if (lsp) + assert(order == LPC_ORD); + + dlsp = switch_present("--dlsp",argc,argv); + if (dlsp) + assert(order == LPC_ORD); phase0 = switch_present("--phase0",argc,argv); if (phase0) { @@ -262,7 +269,7 @@ int main(int argc, char *argv[]) if (phase0) { float Wn[M]; /* windowed speech samples */ - float Rk[LPC_ORD+1]; /* autocorrelation coeffs */ + float Rk[LPC_MAX+1]; /* autocorrelation coeffs */ #ifdef DUMP dump_phase(&model.phi[0], model.L); @@ -272,11 +279,8 @@ int main(int argc, char *argv[]) for(i=0; i static const char usage[] = -"Usage: %s filename [filename ...]\n" +"Usage: %s filename array_name [filename ...]\n" "\tCreate C code for codebook tables.\n"; static const char format[] = @@ -145,27 +145,27 @@ main(int argc, char * * argv) exit(1); } - for ( i = 0; i < argc - 1; i++ ) { - FILE * in = fopen(argv[i + 1], "r"); + for ( i = 0; i < argc - 2; i++ ) { + FILE * in = fopen(argv[i + 2], "r"); if ( in == NULL ) { - perror(argv[i + 1]); + perror(argv[i + 2]); exit(1); } - cb[i] = load(in, argv[i + 1]); + cb[i] = load(in, argv[i + 2]); fclose(in); } printf(header); - for ( i = 0; i < argc - 1; i++ ) { - printf(" /* %s */\n", argv[i + 1]); + for ( i = 0; i < argc - 2; i++ ) { + printf(" /* %s */\n", argv[i + 2]); dump_array(cb[i], i); } - printf("\nconst struct lsp_codebook lsp_cb[] = {\n"); - for ( i = 0; i < argc - 1; i++ ) { - printf(" /* %s */\n", argv[i + 1]); + printf("\nconst struct lsp_codebook %s[] = {\n", argv[1]); + for ( i = 0; i < argc - 2; i++ ) { + printf(" /* %s */\n", argv[i + 2]); dump_structure(cb[i], i); printf(",\n"); } diff --git a/codec2/src/quantise.c b/codec2/src/quantise.c index f4646e69..4b6e5eaf 100644 --- a/codec2/src/quantise.c +++ b/codec2/src/quantise.c @@ -89,37 +89,6 @@ void quantise_uniform(float *val, float min, float max, int bits) printf("index %d val_: %f\n", index, val[0]); } -/*---------------------------------------------------------------------------*\ - - lspd_quantise - - Simulates differential lsp quantiser - -\*---------------------------------------------------------------------------*/ - -void lsp_quantise( - float lsp[], - float lsp_[], - int order -) -{ - int i; - float dlsp[LPC_MAX]; - float dlsp_[LPC_MAX]; - - dlsp[0] = lsp[0]; - for(i=1; i