removed lpc_correction bit, as I think simplified lpc-correction algorithm works...
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Thu, 18 Nov 2010 19:35:59 +0000 (19:35 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Thu, 18 Nov 2010 19:35:59 +0000 (19:35 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@246 01035d8c-6547-0410-b346-abe4f91aad63

codec2/src/c2sim.c
codec2/src/codec2.c
codec2/src/codec2.h
codec2/src/quantise.c
codec2/src/quantise.h
codec2/unittest/Makefile.am
codec2/unittest/Makefile.in
codec2/unittest/tcodec2.c

index 5cece50b302fc7719b18186246c3bcda5b26d77f..5b64489dca2341d7478eb44c2b6b39fde6fabe17 100644 (file)
@@ -121,7 +121,6 @@ int main(int argc, char *argv[])
   float lsps[LPC_ORD];
   float prev_lsps[LPC_ORD];
   float e, prev_e;
-  int lpc_correction;
   float ak_interp[LPC_MAX];
 
   void *nlp_states;
@@ -330,7 +329,7 @@ int main(int argc, char *argv[])
        model.Wo = decode_Wo(encode_Wo(model.Wo));
 
        aks_to_M2(ak, order, &model, e, &snr, 1); 
-       apply_lpc_correction(&model, lpc_correction);
+       apply_lpc_correction(&model);
        sum_snr += snr;
 #ifdef DUMP
         dump_quantised_model(&model);
@@ -361,7 +360,7 @@ int main(int argc, char *argv[])
            #else
            interpolate_lsp(&interp_model, &prev_model, &model,
                            prev_lsps, prev_e, lsps, e, ak_interp);
-           apply_lpc_correction(&interp_model, lpc_correction);
+           apply_lpc_correction(&interp_model);
            #endif
            
            if (phase0)
index 3025a03b59d50c41a12af9e4676e01c112ac38d8..1578767389f2f9c79a9511974666ac2364567cfa 100644 (file)
@@ -181,7 +181,6 @@ void codec2_encode(void *codec2_state, unsigned char * bits, short speech[])
     MODEL   model;
     int     voiced1, voiced2;
     int     lsp_indexes[LPC_ORD];
-    int     lpc_correction;
     int     energy_index;
     int     Wo_index;
     int     i;
@@ -202,7 +201,6 @@ void codec2_encode(void *codec2_state, unsigned char * bits, short speech[])
     
     Wo_index = encode_Wo(model.Wo);
     encode_amplitudes(lsp_indexes, 
-                     &lpc_correction, 
                      &energy_index,
                      &model, 
                       c2->Sn, 
@@ -212,7 +210,6 @@ void codec2_encode(void *codec2_state, unsigned char * bits, short speech[])
     for(i=0; i<LPC_ORD; i++) {
        pack(bits, &nbit, lsp_indexes[i], lsp_bits(i));
     }
-    pack(bits, &nbit, lpc_correction, 1);
     pack(bits, &nbit, energy_index, E_BITS);
     pack(bits, &nbit, voiced1, 1);
     pack(bits, &nbit, voiced2, 1);
@@ -238,7 +235,6 @@ void codec2_decode(void *codec2_state, short speech[],
     int     voiced1, voiced2;
     int     lsp_indexes[LPC_ORD];
     float   lsps[LPC_ORD];
-    int     lpc_correction;
     int     energy_index;
     float   energy;
     int     Wo_index;
@@ -257,7 +253,6 @@ void codec2_decode(void *codec2_state, short speech[],
     for(i=0; i<LPC_ORD; i++) {
        lsp_indexes[i] = unpack(bits, &nbit, lsp_bits(i));
     }
-    lpc_correction = unpack(bits, &nbit, 1);
     energy_index = unpack(bits, &nbit, E_BITS);
     voiced1 = unpack(bits, &nbit, 1);
     voiced2 = unpack(bits, &nbit, 1);
@@ -271,7 +266,6 @@ void codec2_decode(void *codec2_state, short speech[],
     decode_amplitudes(&model, 
                      ak,
                      lsp_indexes,
-                     lpc_correction, 
                      energy_index,
                      lsps,
                      &energy);
@@ -285,7 +279,7 @@ void codec2_decode(void *codec2_state, short speech[],
 
     interpolate_lsp(&model_interp, &c2->prev_model, &model,
                    c2->prev_lsps, c2->prev_energy, lsps, energy, ak_interp);
-    apply_lpc_correction(&model_interp, lpc_correction);
+    apply_lpc_correction(&model_interp);
 
     /* synthesis two 10ms frames */
 
index 5d8e1e645fcf6f041beecbbf986f4f352fbeec34..946dedca5ef24349d63fbd00d846195d4bc6e93f 100644 (file)
@@ -30,7 +30,7 @@
 #define  __CODEC2__
 
 #define CODEC2_SAMPLES_PER_FRAME 160
-#define CODEC2_BITS_PER_FRAME     51
+#define CODEC2_BITS_PER_FRAME     50
 
 void *codec2_create();
 void codec2_destroy(void *codec2_state);
index c8b25296039f771a35956e3f2bebd91a8661ffe2..1c8e65a27a6852d173f163a35aa7dc3684191977 100644 (file)
@@ -637,7 +637,7 @@ void bw_expand_lsps(float lsp[],
 
 \*---------------------------------------------------------------------------*/
 
-void apply_lpc_correction(MODEL *model, int lpc_correction)
+void apply_lpc_correction(MODEL *model)
 {
     if (model->Wo < (PI*150.0/4000)) {
        model->A[1] *= 0.032;
@@ -708,7 +708,6 @@ float decode_energy(int index)
 \*---------------------------------------------------------------------------*/
 
 void encode_amplitudes(int    lsp_indexes[], 
-                      int   *lpc_correction,
                       int   *energy_index,
                       MODEL *model, 
                       float  Sn[], 
@@ -720,7 +719,6 @@ void encode_amplitudes(int    lsp_indexes[],
 
     e = speech_to_uq_lsps(lsps, ak, Sn, w, LPC_ORD);
     encode_lsps(lsp_indexes, lsps, LPC_ORD);
-    *lpc_correction = need_lpc_correction(model, ak, e, LPC_ORD);
     *energy_index = encode_energy(e);
 }
 
@@ -738,7 +736,6 @@ void encode_amplitudes(int    lsp_indexes[],
 float decode_amplitudes(MODEL *model, 
                        float  ak[],
                        int    lsp_indexes[], 
-                       int    lpc_correction,
                        int    energy_index,
                        float  lsps[],
                        float *e
@@ -751,7 +748,7 @@ float decode_amplitudes(MODEL *model,
     lsp_to_lpc(lsps, ak, LPC_ORD);
     *e = decode_energy(energy_index);
     aks_to_M2(ak, LPC_ORD, model, *e, &snr, 1); 
-    apply_lpc_correction(model, lpc_correction);
+    apply_lpc_correction(model);
 
     return snr;
 }
index 0f49cf70e16a3827531576a5e4cf27e750d124ae..ba2349529d7c1f2fc5baec974fe22e53733d9a28 100644 (file)
@@ -50,7 +50,6 @@ int encode_energy(float e);
 float decode_energy(int index);
 
 void encode_amplitudes(int    lsp_indexes[], 
-                      int   *lpc_correction, 
                       int   *energy_index,
                       MODEL *model, 
                       float  Sn[], 
@@ -59,7 +58,6 @@ void encode_amplitudes(int    lsp_indexes[],
 float decode_amplitudes(MODEL *model,
                        float  ak[],
                        int lsp_indexes[],
-                       int lpc_correction, 
                        int energy_index,
                        float  lsps[],
                        float *e);
@@ -69,8 +67,7 @@ int  unpack(const unsigned char * bits, unsigned int *nbit, unsigned int index_b
 
 int lsp_bits(int i);
 
-int need_lpc_correction(MODEL *model, float ak[], float E, int order);
-void apply_lpc_correction(MODEL *model, int lpc_correction);
+void apply_lpc_correction(MODEL *model);
 float speech_to_uq_lsps(float lsp[],
                        float ak[],
                        float Sn[], 
index 5030f63f9148059db865f1948073651f75c5f5cb..0db67d5ca29d6e90fb2dad559b6ce69d0d74132b 100644 (file)
@@ -26,17 +26,17 @@ tnlp_SOURCES = tnlp.c ../src/sine.c ../src/nlp.c ../src/four1.c ../src/dump.c
 tnlp_LDADD = $(lib_LTLIBRARIES) 
 tnlp_LDFLAGS = $(LIBS)
 
-tinterp_SOURCES = tinterp.c ../src/sine.c ../src/four1.c ../src/interp.c ../src/lpc.c ../src/lsp.c ../src/quantise.c ../src/codebook.c ../src/dump.c
+tinterp_SOURCES = tinterp.c ../src/sine.c ../src/four1.c ../src/interp.c ../src/lpc.c ../src/lsp.c ../src/quantise.c ../src/codebook.c ../src/codebookd.c ../src/dump.c
 tinterp_LDADD = $(lib_LTLIBRARIES) 
 tinterp_LDFLAGS = $(LIBS)
 
-tquant_SOURCES = tquant.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/four1.c ../src/codebook.c
+tquant_SOURCES = tquant.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/four1.c ../src/codebook.c ../src/codebookd.c 
 tquant_LDADD = $(lib_LTLIBRARIES) 
 tquant_LDFLAGS = $(LIBS)
 
 tcodec2_SOURCES = tcodec2.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/four1.c \
 ../src/codec2.c ../src/sine.c ../src/nlp.c ../src/postfilter.c ../src/phase.c ../src/interp.c \
-../src/codebook.c ../src/pack.c
+../src/codebook.c ../src/codebookd.c ../src/pack.c
 tcodec2_LDADD = $(lib_LTLIBRARIES) 
 tcodec2_LDFLAGS = $(LIBS)
 
index a213991ad48afbf2a0e63c84d01525d75c7e8599..d12b44c669aee9d70126fe3dc28f6d1d69806858 100644 (file)
@@ -63,12 +63,13 @@ am_tcodec2_OBJECTS = tcodec2.$(OBJEXT) quantise.$(OBJEXT) \
        lpc.$(OBJEXT) lsp.$(OBJEXT) dump.$(OBJEXT) four1.$(OBJEXT) \
        codec2.$(OBJEXT) sine.$(OBJEXT) nlp.$(OBJEXT) \
        postfilter.$(OBJEXT) phase.$(OBJEXT) interp.$(OBJEXT) \
-       codebook.$(OBJEXT) pack.$(OBJEXT)
+       codebook.$(OBJEXT) codebookd.$(OBJEXT) pack.$(OBJEXT)
 tcodec2_OBJECTS = $(am_tcodec2_OBJECTS)
 tcodec2_DEPENDENCIES =
 am_tinterp_OBJECTS = tinterp.$(OBJEXT) sine.$(OBJEXT) four1.$(OBJEXT) \
        interp.$(OBJEXT) lpc.$(OBJEXT) lsp.$(OBJEXT) \
-       quantise.$(OBJEXT) codebook.$(OBJEXT) dump.$(OBJEXT)
+       quantise.$(OBJEXT) codebook.$(OBJEXT) codebookd.$(OBJEXT) \
+       dump.$(OBJEXT)
 tinterp_OBJECTS = $(am_tinterp_OBJECTS)
 tinterp_DEPENDENCIES =
 am_tnlp_OBJECTS = tnlp.$(OBJEXT) sine.$(OBJEXT) nlp.$(OBJEXT) \
@@ -77,7 +78,7 @@ tnlp_OBJECTS = $(am_tnlp_OBJECTS)
 tnlp_DEPENDENCIES =
 am_tquant_OBJECTS = tquant.$(OBJEXT) quantise.$(OBJEXT) lpc.$(OBJEXT) \
        lsp.$(OBJEXT) dump.$(OBJEXT) four1.$(OBJEXT) \
-       codebook.$(OBJEXT)
+       codebook.$(OBJEXT) codebookd.$(OBJEXT)
 tquant_OBJECTS = $(am_tquant_OBJECTS)
 tquant_DEPENDENCIES =
 am_vqtrain_OBJECTS = vqtrain.$(OBJEXT)
@@ -226,15 +227,15 @@ vqtrain_LDFLAGS = $(LIBS)
 tnlp_SOURCES = tnlp.c ../src/sine.c ../src/nlp.c ../src/four1.c ../src/dump.c
 tnlp_LDADD = $(lib_LTLIBRARIES) 
 tnlp_LDFLAGS = $(LIBS)
-tinterp_SOURCES = tinterp.c ../src/sine.c ../src/four1.c ../src/interp.c ../src/lpc.c ../src/lsp.c ../src/quantise.c ../src/codebook.c ../src/dump.c
+tinterp_SOURCES = tinterp.c ../src/sine.c ../src/four1.c ../src/interp.c ../src/lpc.c ../src/lsp.c ../src/quantise.c ../src/codebook.c ../src/codebookd.c ../src/dump.c
 tinterp_LDADD = $(lib_LTLIBRARIES) 
 tinterp_LDFLAGS = $(LIBS)
-tquant_SOURCES = tquant.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/four1.c ../src/codebook.c
+tquant_SOURCES = tquant.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/four1.c ../src/codebook.c ../src/codebookd.c 
 tquant_LDADD = $(lib_LTLIBRARIES) 
 tquant_LDFLAGS = $(LIBS)
 tcodec2_SOURCES = tcodec2.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/four1.c \
 ../src/codec2.c ../src/sine.c ../src/nlp.c ../src/postfilter.c ../src/phase.c ../src/interp.c \
-../src/codebook.c ../src/pack.c
+../src/codebook.c ../src/codebookd.c ../src/pack.c
 
 tcodec2_LDADD = $(lib_LTLIBRARIES) 
 tcodec2_LDFLAGS = $(LIBS)
@@ -331,6 +332,7 @@ distclean-compile:
        -rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codebook.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codebookd.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@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract.Po@am__quote@
@@ -541,6 +543,20 @@ codebook.obj: ../src/codebook.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 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`
+
 pack.o: ../src/pack.c
 @am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT pack.o -MD -MP -MF "$(DEPDIR)/pack.Tpo" -c -o pack.o `test -f '../src/pack.c' || echo '$(srcdir)/'`../src/pack.c; \
 @am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/pack.Tpo" "$(DEPDIR)/pack.Po"; else rm -f "$(DEPDIR)/pack.Tpo"; exit 1; fi
index dc1eda5734f0bcd758a7dd574658bec02734bb1c..4f057723e900653f5882f617b67c0c1c06ff488b 100644 (file)
@@ -96,13 +96,14 @@ int test2()
     float   ak[LPC_ORD+1];
     int     voiced1, voiced2;
     int     lsp_indexes[LPC_ORD];
-    int     lpc_correction;
     int     energy_index;
     int     Wo_index;
     char    bits[CODEC2_BITS_PER_FRAME];
     int     nbit;
     int     i;
-
+    float   lsps[LPC_ORD];
+    float   e;
+       
     c2 = codec2_create();
     c3 = (CODEC2*)c2;
 
@@ -124,7 +125,6 @@ int test2()
     
        Wo_index = encode_Wo(model.Wo);
        encode_amplitudes(lsp_indexes, 
-                         &lpc_correction, 
                          &energy_index,
                          &model, 
                          c3->Sn, 
@@ -134,7 +134,6 @@ int test2()
        for(i=0; i<LPC_ORD; i++) {
            pack(bits, &nbit, lsp_indexes[i], lsp_bits(i));
        }
-       pack(bits, &nbit, lpc_correction, 1);
        pack(bits, &nbit, energy_index, E_BITS);
        pack(bits, &nbit, voiced1, 1);
        pack(bits, &nbit, voiced2, 1);
@@ -144,7 +143,6 @@ int test2()
        for(i=0; i<LPC_ORD; i++) {
            lsp_indexes[i] = unpack(bits, &nbit, lsp_bits(i));
        }
-       lpc_correction = unpack(bits, &nbit, 1);
        energy_index = unpack(bits, &nbit, E_BITS);
        voiced1 = unpack(bits, &nbit, 1);
        voiced2 = unpack(bits, &nbit, 1);
@@ -154,8 +152,9 @@ int test2()
        decode_amplitudes(&model, 
                          ak,
                          lsp_indexes,
-                         lpc_correction, 
-                         energy_index);
+                         energy_index,
+                         lsps,
+                         &e);
 
        model.voiced = voiced2;
        model_interp.voiced = voiced1;