50 memset(a, 0,
sizeof(a));
54 for (i = 0; i < len; i++) {
55 f[i] = b[i] = samples[i];
56 Dk += 2.0 * f[i] * f[i];
59 Dk -= f[0] * f[0] + b[len-1] * b[len-1];
62 for (m = 0; m < order; m++) {
63 if (Dk <= 0.0 || (Dk < thr * Dk0))
67 for (i = 0; i < len-1 - m; i++ )
68 mu += f[i+m+1] * b[i];
71 for (i = 0; i <= (m + 1) / 2; i++ ) {
72 double t1 = a[m+1-i] + mu * a[i];
73 a[i] = a[i] + mu * a[m+1-i];
76 for (i = 0; i < len-1 - m; i++ ) {
77 double t1 = f[i+m+1] + mu * b[i];
78 b[i] = b[i] + mu * f[i+m+1];
82 Dk = (1.0 - mu*mu) * Dk - f[m+1] * f[m+1] - b[len-m-2] * b[len-m-2];
84 if (m == 0 && max_coef > 0 && len > 0) {
87 state[0] = samples[len-1];
89 for (i = 0; i < m; i++) {
90 coef[i] = (float)-a[m-i];
91 state[i] = samples[len-m+i];
SPA_API_BURG_PRED void spa_burg_pred_fit(struct spa_burg_pred *p, float *samples, uint32_t len, double threshold, float *state, float *coef, uint32_t max_coef)
Definition burg-pred.h:49