double var[MAX_LPC_ORDER+1], av_uninit(weight);
for(pass=0; pass<lpc_passes; pass++){
- av_init_lls(&m[pass&1], max_order);
+ avpriv_init_lls(&m[pass&1], max_order);
weight=0;
for(i=max_order; i<blocksize; i++){
if(pass){
double eval, inv, rinv;
- eval= av_evaluate_lls(&m[(pass-1)&1], var+1, max_order-1);
+ eval= avpriv_evaluate_lls(&m[(pass-1)&1], var+1, max_order-1);
eval= (512>>pass) + fabs(eval - var[0]);
inv = 1/eval;
rinv = sqrt(inv);
}else
weight++;
- av_update_lls(&m[pass&1], var, 1.0);
+ avpriv_update_lls(&m[pass&1], var, 1.0);
}
- av_solve_lls(&m[pass&1], 0.001, 0);
+ avpriv_solve_lls(&m[pass&1], 0.001, 0);
}
for(i=0; i<max_order; i++){
#include "lls.h"
-void av_init_lls(LLSModel *m, int indep_count)
+void avpriv_init_lls(LLSModel *m, int indep_count)
{
memset(m, 0, sizeof(LLSModel));
m->indep_count = indep_count;
}
-void av_update_lls(LLSModel *m, double *var, double decay)
+void avpriv_update_lls(LLSModel *m, double *var, double decay)
{
int i, j;
}
}
-void av_solve_lls(LLSModel *m, double threshold, int min_order)
+void avpriv_solve_lls(LLSModel *m, double threshold, int min_order)
{
int i, j, k;
double (*factor)[MAX_VARS + 1] = (void *) &m->covariance[1][0];
}
}
-double av_evaluate_lls(LLSModel *m, double *param, int order)
+double avpriv_evaluate_lls(LLSModel *m, double *param, int order)
{
int i;
double out = 0;
return out;
}
+#ifndef FF_API_LLS_PRIVATE
+void av_init_lls(LLSModel *m, int indep_count)
+{
+ return avpriv_init_lls(m, indep_count);
+}
+void av_update_lls(LLSModel *m, double *param, double decay)
+{
+ return avpriv_update_lls(m, param, decay);
+}
+void av_solve_lls(LLSModel *m, double threshold, int min_order)
+{
+ return avpriv_solve_lls(m, threshold, min_order);
+}
+double av_evaluate_lls(LLSModel *m, double *param, int order)
+{
+ return avpriv_evaluate_lls(m, param, order);
+}
+#endif
+
#ifdef TEST
#include <stdio.h>
AVLFG lfg;
av_lfg_init(&lfg, 1);
- av_init_lls(&m, 3);
+ avpriv_init_lls(&m, 3);
for (i = 0; i < 100; i++) {
double var[4];
var[1] = var[0] + av_lfg_get(&lfg) / (double) UINT_MAX - 0.5;
var[2] = var[1] + av_lfg_get(&lfg) / (double) UINT_MAX - 0.5;
var[3] = var[2] + av_lfg_get(&lfg) / (double) UINT_MAX - 0.5;
- av_update_lls(&m, var, 0.99);
- av_solve_lls(&m, 0.001, 0);
+ avpriv_update_lls(&m, var, 0.99);
+ avpriv_solve_lls(&m, 0.001, 0);
for (order = 0; order < 3; order++) {
- eval = av_evaluate_lls(&m, var + 1, order);
+ eval = avpriv_evaluate_lls(&m, var + 1, order);
printf("real:%9f order:%d pred:%9f var:%f coeffs:%f %9f %9f\n",
var[0], order, eval, sqrt(m.variance[order] / (i + 1)),
m.coeff[order][0], m.coeff[order][1],
int indep_count;
} LLSModel;
+void avpriv_init_lls(LLSModel *m, int indep_count);
+void avpriv_update_lls(LLSModel *m, double *param, double decay);
+void avpriv_solve_lls(LLSModel *m, double threshold, int min_order);
+double avpriv_evaluate_lls(LLSModel *m, double *param, int order);
+
+#ifndef FF_API_LLS_PRIVATE
void av_init_lls(LLSModel *m, int indep_count);
void av_update_lls(LLSModel *m, double *param, double decay);
void av_solve_lls(LLSModel *m, double threshold, int min_order);
double av_evaluate_lls(LLSModel *m, double *param, int order);
-
+#endif
#endif /* AVUTIL_LLS_H */