
   /******************************************************************

       iLBC Speech Coder ANSI-C Source Code

       helpfun.h

       Copyright (C) The Internet Society (2004).
       All Rights Reserved.

   ******************************************************************/

#ifndef __iLBC_HELPFUN_H
#define __iLBC_HELPFUN_H

void autocorr(float *r,         /* (o) autocorrelation vector */
  const float *x,               /* (i) data vector */
  int N,                        /* (i) length of data vector */
  int order                     /* largest lag for calculated
                                   autocorrelations */
  );

void window(float *z,           /* (o) the windowed data */
  const float *x,               /* (i) the original data vector */
  const float *y,               /* (i) the window */
  int N                         /* (i) length of all vectors */
  );

void levdurb(float *a,          /* (o) lpc coefficient vector starting
                                   with 1.0 */
  float *k,                     /* (o) reflection coefficients */
  float *r,                     /* (i) autocorrelation vector */
  int order                     /* (i) order of lpc filter */
  );

void interpolate(float *out,    /* (o) the interpolated vector */
  float *in1,                   /* (i) the first vector for the
                                   interpolation */
  float *in2,                   /* (i) the second vector for the
                                   interpolation */
  float coef,                   /* (i) interpolation weights */
  int length                    /* (i) length of all vectors */
  );

void bwexpand(float *out,       /* (o) the bandwidth expanded lpc
                                   coefficients */
  float *in,                    /* (i) the lpc coefficients before bandwidth
                                   expansion */
  float coef,                   /* (i) the bandwidth expansion factor */
  int length                    /* (i) the length of lpc coefficient vectors */
  );

void vq(float *Xq,              /* (o) the quantized vector */
  int *index,                   /* (o) the quantization index */
  const float *CB,              /* (i) the vector quantization codebook */
  float *X,                     /* (i) the vector to quantize */
  int n_cb,                     /* (i) the number of vectors in the codebook */
  int dim                       /* (i) the dimension of all vectors */
  );

void SplitVQ(float *qX,         /* (o) the quantized vector */
  int *index,                   /* (o) a vector of indexes for all vector
                                   codebooks in the split */
  float *X,                     /* (i) the vector to quantize */
  const float *CB,              /* (i) the quantizer codebook */
  int nsplit,                   /* the number of vector splits */
  const int *dim,               /* the dimension of X and qX */
  const int *cbsize             /* the number of vectors in the codebook */
  );


void sort_sq(float *xq,         /* (o) the quantized value */
  int *index,                   /* (o) the quantization index */
  float x,                      /* (i) the value to quantize */
  const float *cb,              /* (i) the quantization codebook */
  int cb_size                   /* (i) the size of the quantization codebook */
  );

int LSF_check(                  /* (o) 1 for stable lsf vectors and 0 for





                                   nonstable ones */
  float *lsf,                   /* (i) a table of lsf vectors */
  int dim,                      /* (i) the dimension of each lsf vector */
  int NoAn                      /* (i) the number of lsf vectors in the
                                   table */
  );

#endif
