diff --git a/libavcodec/lpc.c b/libavcodec/lpc.c index 2093e7e802..bada368580 100644 --- a/libavcodec/lpc.c +++ b/libavcodec/lpc.c @@ -203,7 +203,7 @@ int ff_lpc_calc_coefs(LPCContext *s, double var[MAX_LPC_ORDER+1], av_uninit(weight); for(pass=0; pass>pass) + fabs(eval - var[0]); inv = 1/eval; rinv = sqrt(inv); @@ -222,9 +222,9 @@ int ff_lpc_calc_coefs(LPCContext *s, }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; iindep_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; @@ -48,7 +48,7 @@ void av_update_lls(LLSModel *m, double *var, double decay) } } -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]; @@ -105,7 +105,7 @@ void av_solve_lls(LLSModel *m, double threshold, int min_order) } } -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; @@ -116,6 +116,25 @@ double av_evaluate_lls(LLSModel *m, double *param, int order) 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 @@ -129,7 +148,7 @@ int main(void) 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]; @@ -139,10 +158,10 @@ int main(void) 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], diff --git a/libavutil/lls.h b/libavutil/lls.h index 5c51b7446f..4b197985a8 100644 --- a/libavutil/lls.h +++ b/libavutil/lls.h @@ -37,9 +37,15 @@ typedef struct LLSModel { 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 */ diff --git a/libavutil/version.h b/libavutil/version.h index a23fdd2e47..8d7e378994 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -79,6 +79,10 @@ #ifndef FF_API_CPU_FLAG_MMX2 #define FF_API_CPU_FLAG_MMX2 (LIBAVUTIL_VERSION_MAJOR < 53) #endif +#ifndef FF_API_LLS_PRIVATE +#define FF_API_LLS_PRIVATE (LIBAVUTIL_VERSION_MAJOR < 53) +#endif + /** * @}