X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Flpc.c;h=bada368580976aa965824c350be45217fbea7baf;hb=3d8c80b611aa1e2f800dd9c8d8f350407f95c042;hp=cc3ce447256cda935e3fb20191be365895112b2a;hpb=4b0e0f31bf0f618a634dcfdca45e72cdfb0b48b5;p=ffmpeg diff --git a/libavcodec/lpc.c b/libavcodec/lpc.c index cc3ce447256..bada3685809 100644 --- a/libavcodec/lpc.c +++ b/libavcodec/lpc.c @@ -148,6 +148,18 @@ static int estimate_best_order(double *ref, int min_order, int max_order) return est; } +int ff_lpc_calc_ref_coefs(LPCContext *s, + const int32_t *samples, int order, double *ref) +{ + double autoc[MAX_LPC_ORDER + 1]; + + s->lpc_apply_welch_window(samples, s->blocksize, s->windowed_samples); + s->lpc_compute_autocorr(s->windowed_samples, s->blocksize, order, autoc); + compute_ref_coefs(autoc, order, ref, NULL); + + return order; +} + /** * Calculate LPC coefficients for multiple orders * @@ -191,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); @@ -210,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; ilpc_apply_welch_window = lpc_apply_welch_window_c; s->lpc_compute_autocorr = lpc_compute_autocorr_c; - if (HAVE_MMX) + if (ARCH_X86) ff_lpc_init_x86(s); return 0;