-static void co(int n, int i, int j, float *in, float *out, float *st1,
- float *st2, const float *table)
-{
- int a, b, c;
- unsigned int x;
- float *fp;
- float buffer1[37];
- float buffer2[37];
- float work[111];
-
- /* rotate and multiply */
- c = (b = (a = n + i) + j) - i;
- fp = st1 + i;
- for (x=0; x < b; x++) {
- if (x == c)
- fp=in;
- work[x] = *(table++) * (*(st1++) = *(fp++));
- }
-
- prodsum(buffer1, work + n, i, n);
- prodsum(buffer2, work + a, j, n);
-
- for (x=0;x<=n;x++) {
- *st2 = *st2 * (0.5625) + buffer1[x];
- out[x] = *(st2++) + buffer2[x];
- }
- *out *= 1.00390625; /* to prevent clipping */
-}
-
-static void update(Real288_internal *glob)
+/**
+ * Backward synthesis filter, find the LPC coefficients from past speech data.
+ */
+static void backward_filter(float *hist, float *rec, const float *window,
+ float *lpc, const float *tab,
+ int order, int n, int non_rec, int move_size)