Tristan Matthews | 0a329cc | 2013-07-17 13:20:14 -0400 | [diff] [blame] | 1 | |
| 2 | /****************************************************************** |
| 3 | |
| 4 | iLBC Speech Coder ANSI-C Source Code |
| 5 | |
| 6 | helpfun.h |
| 7 | |
| 8 | Copyright (C) The Internet Society (2004). |
| 9 | All Rights Reserved. |
| 10 | |
| 11 | ******************************************************************/ |
| 12 | |
| 13 | #ifndef __iLBC_HELPFUN_H |
| 14 | #define __iLBC_HELPFUN_H |
| 15 | |
| 16 | void autocorr( |
| 17 | float *r, /* (o) autocorrelation vector */ |
| 18 | const float *x, /* (i) data vector */ |
| 19 | int N, /* (i) length of data vector */ |
| 20 | int order /* largest lag for calculated |
| 21 | autocorrelations */ |
| 22 | ); |
| 23 | |
| 24 | void window( |
| 25 | float *z, /* (o) the windowed data */ |
| 26 | const float *x, /* (i) the original data vector */ |
| 27 | const float *y, /* (i) the window */ |
| 28 | int N /* (i) length of all vectors */ |
| 29 | ); |
| 30 | |
| 31 | void levdurb( |
| 32 | float *a, /* (o) lpc coefficient vector starting |
| 33 | with 1.0 */ |
| 34 | float *k, /* (o) reflection coefficients */ |
| 35 | float *r, /* (i) autocorrelation vector */ |
| 36 | int order /* (i) order of lpc filter */ |
| 37 | ); |
| 38 | |
| 39 | void interpolate( |
| 40 | |
| 41 | |
| 42 | |
| 43 | |
| 44 | |
| 45 | float *out, /* (o) the interpolated vector */ |
| 46 | float *in1, /* (i) the first vector for the |
| 47 | interpolation */ |
| 48 | float *in2, /* (i) the second vector for the |
| 49 | interpolation */ |
| 50 | float coef, /* (i) interpolation weights */ |
| 51 | int length /* (i) length of all vectors */ |
| 52 | ); |
| 53 | |
| 54 | void bwexpand( |
| 55 | float *out, /* (o) the bandwidth expanded lpc |
| 56 | coefficients */ |
| 57 | float *in, /* (i) the lpc coefficients before bandwidth |
| 58 | expansion */ |
| 59 | float coef, /* (i) the bandwidth expansion factor */ |
| 60 | int length /* (i) the length of lpc coefficient vectors */ |
| 61 | ); |
| 62 | |
| 63 | void vq( |
| 64 | float *Xq, /* (o) the quantized vector */ |
| 65 | int *index, /* (o) the quantization index */ |
| 66 | const float *CB,/* (i) the vector quantization codebook */ |
| 67 | float *X, /* (i) the vector to quantize */ |
| 68 | int n_cb, /* (i) the number of vectors in the codebook */ |
| 69 | int dim /* (i) the dimension of all vectors */ |
| 70 | ); |
| 71 | |
| 72 | void SplitVQ( |
| 73 | float *qX, /* (o) the quantized vector */ |
| 74 | int *index, /* (o) a vector of indexes for all vector |
| 75 | codebooks in the split */ |
| 76 | float *X, /* (i) the vector to quantize */ |
| 77 | const float *CB,/* (i) the quantizer codebook */ |
| 78 | int nsplit, /* the number of vector splits */ |
| 79 | const int *dim, /* the dimension of X and qX */ |
| 80 | const int *cbsize /* the number of vectors in the codebook */ |
| 81 | ); |
| 82 | |
| 83 | |
| 84 | void sort_sq( |
| 85 | float *xq, /* (o) the quantized value */ |
| 86 | int *index, /* (o) the quantization index */ |
| 87 | float x, /* (i) the value to quantize */ |
| 88 | const float *cb,/* (i) the quantization codebook */ |
| 89 | int cb_size /* (i) the size of the quantization codebook */ |
| 90 | ); |
| 91 | |
| 92 | int LSF_check( /* (o) 1 for stable lsf vectors and 0 for |
| 93 | |
| 94 | |
| 95 | |
| 96 | |
| 97 | |
| 98 | nonstable ones */ |
| 99 | float *lsf, /* (i) a table of lsf vectors */ |
| 100 | int dim, /* (i) the dimension of each lsf vector */ |
| 101 | int NoAn /* (i) the number of lsf vectors in the |
| 102 | table */ |
| 103 | ); |
| 104 | |
| 105 | #endif |
| 106 | |