* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation http://www.xiph.org/ *
* *
********************************************************************
function: LPC low level routines
- last mod: $Id$
********************************************************************/
for(i=j;i<n;i++)d+=(double)data[i]*data[i-j];
aut[j]=d;
}
-
+
/* Generate lpc coefficients from autocorr values */
/* set our noise floor to about -100dB */
each iteration. */
for(j=0;j<i;j++)r-=lpc[j]*aut[i-j];
- r/=error;
+ r/=error;
/* Update LPC coefficients and total error */
-
+
lpc[i]=r;
for(j=0;j<i/2;j++){
double tmp=lpc[j];
}
done:
-
- /* slightly damp the filter */
+
+ /* slightly damp the filter */
{
double g = .99;
double damp = g;
/* we need the error value to know how big an impulse to hit the
filter with later */
-
+
return error;
}
void vorbis_lpc_predict(float *coeff,float *prime,int m,
float *data,long n){
- /* in: coeff[0...m-1] LPC coefficients
+ /* in: coeff[0...m-1] LPC coefficients
prime[0...m-1] initial values (allocated size of n+m-1)
out: data[0...n-1] data samples */
p=m;
for(j=0;j<m;j++)
y-=work[o++]*coeff[--p];
-
+
data[i]=work[o]=y;
}
}
-
-
-
-
-