Commit 76f8d3c8 authored by Michael Niedermayer's avatar Michael Niedermayer

Merge commit '9d4da474'

* commit '9d4da474':
  lls: move to the private namespace

Conflicts:
	libavutil/version.h
Merged-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parents fb4b1607 9d4da474
...@@ -207,7 +207,7 @@ int ff_lpc_calc_coefs(LPCContext *s, ...@@ -207,7 +207,7 @@ int ff_lpc_calc_coefs(LPCContext *s,
lpc_passes = 2; lpc_passes = 2;
for(pass=0; pass<lpc_passes; pass++){ 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; weight=0;
for(i=max_order; i<blocksize; i++){ for(i=max_order; i<blocksize; i++){
...@@ -216,7 +216,7 @@ int ff_lpc_calc_coefs(LPCContext *s, ...@@ -216,7 +216,7 @@ int ff_lpc_calc_coefs(LPCContext *s,
if(pass){ if(pass){
double eval, inv, rinv; 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]); eval= (512>>pass) + fabs(eval - var[0]);
inv = 1/eval; inv = 1/eval;
rinv = sqrt(inv); rinv = sqrt(inv);
...@@ -226,9 +226,9 @@ int ff_lpc_calc_coefs(LPCContext *s, ...@@ -226,9 +226,9 @@ int ff_lpc_calc_coefs(LPCContext *s,
}else }else
weight++; 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++){ for(i=0; i<max_order; i++){
......
...@@ -30,13 +30,13 @@ ...@@ -30,13 +30,13 @@
#include "lls.h" #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)); memset(m, 0, sizeof(LLSModel));
m->indep_count = indep_count; 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; int i, j;
...@@ -48,7 +48,7 @@ void av_update_lls(LLSModel *m, double *var, double decay) ...@@ -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; int i, j, k;
double (*factor)[MAX_VARS + 1] = (void *) &m->covariance[1][0]; 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) ...@@ -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; int i;
double out = 0; double out = 0;
...@@ -116,6 +116,25 @@ double av_evaluate_lls(LLSModel *m, double *param, int order) ...@@ -116,6 +116,25 @@ double av_evaluate_lls(LLSModel *m, double *param, int order)
return out; 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 #ifdef TEST
#include <stdio.h> #include <stdio.h>
...@@ -129,7 +148,7 @@ int main(void) ...@@ -129,7 +148,7 @@ int main(void)
AVLFG lfg; AVLFG lfg;
av_lfg_init(&lfg, 1); av_lfg_init(&lfg, 1);
av_init_lls(&m, 3); avpriv_init_lls(&m, 3);
for (i = 0; i < 100; i++) { for (i = 0; i < 100; i++) {
double var[4]; double var[4];
...@@ -139,10 +158,10 @@ int main(void) ...@@ -139,10 +158,10 @@ int main(void)
var[1] = var[0] + av_lfg_get(&lfg) / (double) UINT_MAX - 0.5; 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[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; var[3] = var[2] + av_lfg_get(&lfg) / (double) UINT_MAX - 0.5;
av_update_lls(&m, var, 0.99); avpriv_update_lls(&m, var, 0.99);
av_solve_lls(&m, 0.001, 0); avpriv_solve_lls(&m, 0.001, 0);
for (order = 0; order < 3; order++) { 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", printf("real:%9f order:%d pred:%9f var:%f coeffs:%f %9f %9f\n",
var[0], order, eval, sqrt(m.variance[order] / (i + 1)), var[0], order, eval, sqrt(m.variance[order] / (i + 1)),
m.coeff[order][0], m.coeff[order][1], m.coeff[order][0], m.coeff[order][1],
......
...@@ -37,9 +37,15 @@ typedef struct LLSModel { ...@@ -37,9 +37,15 @@ typedef struct LLSModel {
int indep_count; int indep_count;
} LLSModel; } 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_init_lls(LLSModel *m, int indep_count);
void av_update_lls(LLSModel *m, double *param, double decay); void av_update_lls(LLSModel *m, double *param, double decay);
void av_solve_lls(LLSModel *m, double threshold, int min_order); void av_solve_lls(LLSModel *m, double threshold, int min_order);
double av_evaluate_lls(LLSModel *m, double *param, int order); double av_evaluate_lls(LLSModel *m, double *param, int order);
#endif
#endif /* AVUTIL_LLS_H */ #endif /* AVUTIL_LLS_H */
...@@ -129,6 +129,10 @@ ...@@ -129,6 +129,10 @@
#ifndef FF_API_SAMPLES_UTILS_RETURN_ZERO #ifndef FF_API_SAMPLES_UTILS_RETURN_ZERO
#define FF_API_SAMPLES_UTILS_RETURN_ZERO (LIBAVUTIL_VERSION_MAJOR < 53) #define FF_API_SAMPLES_UTILS_RETURN_ZERO (LIBAVUTIL_VERSION_MAJOR < 53)
#endif #endif
#ifndef FF_API_LLS_PRIVATE
#define FF_API_LLS_PRIVATE (LIBAVUTIL_VERSION_MAJOR < 53)
#endif
/** /**
* @} * @}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment