...
authorjmvalin <jmvalin@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Fri, 20 Sep 2002 17:14:11 +0000 (17:14 +0000)
committerjmvalin <jmvalin@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Fri, 20 Sep 2002 17:14:11 +0000 (17:14 +0000)
git-svn-id: http://svn.xiph.org/trunk/speex@3933 0101bb08-14d6-0310-b084-bc0e0c8e3800

TODO
doc/manual.lyx
libspeex/nb_celp.c
libspeex/nb_celp.h

diff --git a/TODO b/TODO
index eb38bfc..d3f20c9 100644 (file)
--- a/TODO
+++ b/TODO
@@ -3,7 +3,10 @@ Codec
 - Wideband VBR
 - Improve VAD
 - Improve narrowband vocoder
+
 Bit-stream
+- support for TTY/DTMF
+
 API
 - Add bit-stream request handling and encoder/decoder pairing
 - Add callbacks for user-defined inf
index 79a8589..4d56b2b 100644 (file)
@@ -1960,7 +1960,7 @@ N/A
 
 \layout Standard
 
-DTMF and TTY
+(Tones/DTMF to be implemented)
 \end_inset 
 </cell>
 </row>
index 3f69255..20921a9 100644 (file)
@@ -129,6 +129,7 @@ void *nb_encoder_init(SpeexMode *m)
 
    st->mem_sp = speex_alloc(st->lpcSize*sizeof(float));
    st->mem_sw = speex_alloc(st->lpcSize*sizeof(float));
+   st->mem_sw_whole = speex_alloc(st->lpcSize*sizeof(float));
    st->mem_exc = speex_alloc(st->lpcSize*sizeof(float));
 
    st->pi_gain = speex_alloc(st->nbSubframes*sizeof(float));
@@ -179,6 +180,7 @@ void nb_encoder_destroy(void *state)
 
    speex_free(st->mem_sp);
    speex_free(st->mem_sw);
+   speex_free(st->mem_sw_whole);
    speex_free(st->mem_exc);
    speex_free(st->pi_gain);
    speex_free(st->pitch);
@@ -252,11 +254,15 @@ void nb_encode(void *state, float *in, SpeexBits *bits)
          st->old_lsp[i] = st->lsp[i];
    }
 
+   if (0) {
+      float dd=0;
+      for (i=0;i<st->lpcSize;i++)
+         dd += fabs(st->old_lsp[i] - st->lsp[i]);
+      printf ("lspdist = %f\n", dd);
+   }
 
    /* Whole frame analysis (open-loop estimation of pitch and excitation gain) */
    {
-      /*FIXME: stack alloc*/
-      static float mem[10];
       for (i=0;i<st->lpcSize;i++)
          st->interp_lsp[i] = .5*st->old_lsp[i] + .5*st->lsp[i];
 
@@ -270,9 +276,7 @@ void nb_encode(void *state, float *in, SpeexBits *bits)
       bw_lpc(st->gamma1, st->interp_lpc, st->bw_lpc1, st->lpcSize);
       bw_lpc(st->gamma2, st->interp_lpc, st->bw_lpc2, st->lpcSize);
 
-      for (i=0;i<st->lpcSize;i++)
-         mem[i]=st->mem_sw[i];
-      filter_mem2(st->frame, st->bw_lpc1, st->bw_lpc2, st->sw, st->frameSize, st->lpcSize, mem);
+      filter_mem2(st->frame, st->bw_lpc1, st->bw_lpc2, st->sw, st->frameSize, st->lpcSize, st->mem_sw_whole);
 
       /*Open-loop pitch*/
       {
index 7753012..6ef5ded 100644 (file)
@@ -78,7 +78,8 @@ typedef struct EncState {
    float *rc;             /**< Reflection coefficients */
    float *mem_sp;         /**< Filter memory for signal synthesis */
    float *mem_sw;         /**< Filter memory for perceptually-weighted signal */
-   float *mem_exc;        /**< Filter memory for excitation */
+   float *mem_sw_whole;   /**< Filter memory for perceptually-weighted signal (whole frame)*/
+   float *mem_exc;        /**< Filter memory for excitation (whole frame) */
    float *pi_gain;        /**< Gain of LPC filter at theta=pi (fe/2) */
 
    VBRState *vbr;         /**< State of the VBR data */