-static void co(int n, int i, int j, const float *in, float *out, float *st1,
- float *st2, const float *table)
-{
- unsigned int x;
- const float *fp;
- float buffer1[37];
- float buffer2[37];
- float work[111];
-
- /* rotate and multiply */
- fp = st1 + i;
- for (x=0; x < n + i + j; x++) {
- if (x == n + j)
- fp=in;
- st1[x] = *(fp++);
- work[x] = table[x] * st1[x];
- }
-
- prodsum(buffer1, work + n, i, n);
- prodsum(buffer2, work + n + i, j, n);
-
- for (x=0;x<=n;x++) {
- st2[x] = st2[x] * 0.5625 + buffer1[x];
- out[x] = st2[x] + 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)