Some early decoder stuff
authorjmvalin <jmvalin@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Fri, 1 Mar 2002 20:54:29 +0000 (20:54 +0000)
committerjmvalin <jmvalin@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Fri, 1 Mar 2002 20:54:29 +0000 (20:54 +0000)
git-svn-id: http://svn.xiph.org/trunk/speex@3120 0101bb08-14d6-0310-b084-bc0e0c8e3800

libspeex/speex.c
libspeex/speex.h

index 5d09695..34da341 100644 (file)
@@ -375,10 +375,32 @@ void encode(EncState *st, float *in, FrameBits *bits)
 
 void decoder_init(DecState *st, SpeexMode *mode)
 {
+   int i;
+   /* Codec parameters, should eventually have several "modes"*/
+   st->frameSize = mode->frameSize;
+   st->windowSize = mode->windowSize;
+   st->nbSubframes=mode->frameSize/mode->subframeSize;
+   st->subframeSize=mode->subframeSize;
+   st->lpcSize = mode->lpcSize;
+   st->bufSize = mode->bufSize;
+   st->gamma1=mode->gamma1;
+   st->gamma2=mode->gamma2;
+
+
+   st->inBuf = malloc(st->bufSize*sizeof(float));
+   st->frame = st->inBuf + st->bufSize - st->windowSize;
+   st->excBuf = malloc(st->bufSize*sizeof(float));
+   st->exc = st->excBuf + st->bufSize - st->windowSize;
+   for (i=0;i<st->bufSize;i++)
+      st->inBuf[i]=0;
+   for (i=0;i<st->bufSize;i++)
+      st->excBuf[i]=0;
 }
 
 void decoder_destroy(DecState *st)
 {
+   free(st->inBuf);
+   free(st->excBuf);
 }
 
 void decode(DecState *st, FrameBits *bits, float *out)
index 79f14b4..a77daf5 100644 (file)
@@ -73,6 +73,8 @@ typedef struct DecState {
    int    windowSize;     /* Analysis (LPC) window length */
    int    lpcSize;        /* LPC order */
    int    bufSize;        /* Buffer size */
+   float  gamma1;         /* Perceptual filter: A(z/gamma1) */
+   float  gamma2;         /* Perceptual filter: A(z/gamma2) */
    float *inBuf;          /* Input buffer (original signal) */
    float *frame;          /* Start of original frame */
    float *excBuf;         /* Excitation buffer */
@@ -86,13 +88,21 @@ typedef struct DecState {
 
 /**Initializes encoder state*/
 void encoder_init(EncState *st, SpeexMode *mode);
+
 /**De-allocates encoder state resources*/
 void encoder_destroy(EncState *st);
+
 /**Encodes one frame*/
 void encode(EncState *st, float *in, FrameBits *bits);
 
+
+/**Initializes decoder state*/
 void decoder_init(DecState *st, SpeexMode *mode);
+
+/**De-allocates decoder state resources*/
 void decoder_destroy(DecState *st);
+
+/**Decodes one frame*/
 void decode(DecState *st, FrameBits *bits, float *out);