/** * Backward synthesis filter. Find the LPC coefficients from past speech data. */ static void backward_filter(RA288Context *ractx) { float temp1[37]; // RTMP in the spec float temp2[11]; // GPTPMP in the spec do_hybrid_window(36, 40, 35, ractx->sp_block+1, temp1, ractx->sp_hist, ractx->sp_rec, syn_window); if (!eval_lpc_coeffs(temp1, ractx->sp_lpc, 36)) colmult(ractx->sp_lpc, ractx->sp_lpc, syn_bw_tab, 36); do_hybrid_window(10, 8, 20, ractx->gain_block+2, temp2, ractx->gain_hist, ractx->gain_rec, gain_window); if (!eval_lpc_coeffs(temp2, ractx->gain_lpc, 10)) colmult(ractx->gain_lpc, ractx->gain_lpc, gain_bw_tab, 10); }
/** * 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) { float temp[order+1]; do_hybrid_window(order, n, non_rec, temp, hist, rec, window); if (!compute_lpc_coefs(temp, order, lpc, 0, 1, 1)) apply_window(lpc, lpc, tab, order); memmove(hist, hist + n, move_size*sizeof(*hist)); }
/** * Backward synthesis filter, find the LPC coefficients from past speech data. */ static void backward_filter(RA288Context *ractx, float *hist, float *rec, const float *window, float *lpc, const float *tab, int order, int n, int non_rec, int move_size) { float temp[MAX_BACKWARD_FILTER_ORDER+1]; do_hybrid_window(ractx, order, n, non_rec, temp, hist, rec, window); if (!compute_lpc_coefs(temp, order, lpc, 0, 1, 1)) ractx->fdsp->vector_fmul(lpc, lpc, tab, FFALIGN(order, 16)); memmove(hist, hist + n, move_size*sizeof(*hist)); }
/** * 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) { #if __STDC_VERSION__ >= 199901L float temp[order+1]; #else float *temp = _alloca((order + 1) * sizeof(float)); #endif do_hybrid_window(order, n, non_rec, temp, hist, rec, window); if (!compute_lpc_coefs(temp, order, lpc, 0, 1, 1)) apply_window(lpc, lpc, tab, order); memmove(hist, hist + n, move_size*sizeof(*hist)); }
/** * 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) { #ifndef _MSC_VER float temp[order+1]; #else float *temp = av_malloc_items(order + 1, float); #endif do_hybrid_window(order, n, non_rec, temp, hist, rec, window); if (!compute_lpc_coefs(temp, order, lpc, 0, 1, 1)) apply_window(lpc, lpc, tab, order); memmove(hist, hist + n, move_size*sizeof(*hist)); #ifdef _MSC_VER av_free(temp); #endif }