tried LSP differences 1-4 plus VQ in log and linear LSP domain for LSPs4-10 but not...
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Tue, 1 Nov 2011 00:26:02 +0000 (00:26 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Tue, 1 Nov 2011 00:26:02 +0000 (00:26 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@295 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/src/Makefile.am
codec2-dev/src/Makefile.in
codec2-dev/src/quantise.c

index 93995db94f007e7e10ab7019406078f40e1ff6af..5f23697fa98001b630df5d4c3189c8a401541fd2 100644 (file)
@@ -26,7 +26,7 @@ CODEBOOKSD= \
   $D/dlsp2.txt \
   $D/dlsp3.txt \
   $D/dlsp4.txt \
-  $(top_srcdir)/unittest/lspdlog5-10_1024.txt
+  $(top_srcdir)/unittest/lsp45678910.txt
 
 # lspd VQ quantisers
 
index 0c3274c4184701352c6f85ebc3b99a6e9e9916b0..603c08bc760db03e42f10ad429d7a15782aeb32c 100644 (file)
@@ -240,7 +240,7 @@ CODEBOOKSD = \
   $D/dlsp2.txt \
   $D/dlsp3.txt \
   $D/dlsp4.txt \
-  $(top_srcdir)/unittest/lspdlog5-10_1024.txt
+  $(top_srcdir)/unittest/lsp45678910.txt
 
 
 # lspd VQ quantisers
index 1f3443fe65935be22d35fe32771b847a520d5567..c3cb7092852f835fff6bfeb1e512f64e86e9de9f 100644 (file)
@@ -135,10 +135,13 @@ void lspd_quantise(
     float lsp__hz[LPC_MAX];
     float dlsp[LPC_MAX];
     float dlsp_[LPC_MAX];
+    float lsplog[LPC_MAX];
+    float lsplog_[LPC_MAX];
     float wt[LPC_MAX];
     const float *cb;
     float se;
     int   indexes[LPC_MAX];
+    float diff1,diff2;
 
     for(i=0; i<LPC_ORD; i++) {
        wt[i] = 1.0;
@@ -175,32 +178,53 @@ void lspd_quantise(
            lsp__hz[0] = dlsp_[0];
     }
 
+#ifdef VQ
     /* VQ LSP differences 5..10 in log domain */
 
+    #define WGHT
+#ifdef WGHT
+    for(i=4; i<9; i++) {
+       diff1 = lsp[i]-lsp[i-1];
+       if (diff1 < (4000.0/PI)*200) diff1 = (PI/4000.0)*200;
+       if (diff2 < (4000.0/PI)*200) diff2 = (PI/4000.0)*200;
+       wt[i] = 2.0/diff1 + 1.0/diff2;
+       //printf("wt[%d] = %f\n", i, wt[i]);
+    }
+    wt[9] = 1.0/diff1;
+#endif
+
     ncb = 4;
     nlsp = 4;
     k = lsp_cbd[ncb].k;
     m = lsp_cbd[ncb].m;
     cb = lsp_cbd[ncb].cb;
     for(i=4; i<order; i++) {
-       dlsp[i] = log10((PI/4000.0)*dlsp[i]);
-       printf("%f ", dlsp[i]);
+       lsplog[i] = log10(lsp[i]);
+       //printf("%f ", lsp[i]);
     }
-    printf("\n");
-    index = quantise(cb, &dlsp[nlsp], &wt[nlsp], k, m, &se);
+    //printf("\n");
+    index = quantise(cb, &lsp[nlsp], &wt[nlsp], k, m, &se);
+    /*
     for(i=0; i<6; i++)
        printf("%f ", cb[i]);
     printf("\n");
     printf("index = %d\n", index);
+    */
     for(i=4; i<order; i++) {
-       dlsp_[i] = (4000.0/PI)*pow(10.0, cb[index*k+i-nlsp]);
-       printf("%f ", cb[index*k+i-nlsp]);
-       lsp__hz[i] = lsp__hz[i-1] + dlsp_[i];
+       //lsplog_[i] = pow(10.0, cb[index*k+i-nlsp]);
+       //printf("%f ", cb[index*k+i-nlsp]);
+       //lsp__hz[i] = (4000.0/PI)*lsplog_[i];
+       //lsp__hz[i] = lsp_hz[i];
+       lsp__hz[i] = (4000.0/PI)*cb[index*k+i-nlsp];
     }
+    if ((lsp__hz[4] - lsp__hz[3]) < 100.0) 
+       lsp__hz[4] = lsp__hz[3] + 100.0;
+    /*
     printf("\n");
     for(i=4; i<order; i++)
-       printf("%f ", dlsp_[i]);
+       printf("%f ", lsp__hz[i]);
     printf("\n\n");
+    */
 
     /*
     for(; i<order; i++)