dither lpc cpeffs
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 13 Jul 2006 11:41:52 +0000 (11:41 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 13 Jul 2006 11:41:52 +0000 (11:41 +0000)
Originally committed as revision 5727 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/flacenc.c

index 6d4e1d0..e21326d 100644 (file)
@@ -661,7 +661,7 @@ static void quantize_lpc_coefs(double *lpc_in, int order, int precision,
                                int32_t *lpc_out, int *shift)
 {
     int i;
-    double cmax;
+    double cmax, error;
     int32_t qmax;
     int sh;
 
@@ -697,8 +697,11 @@ static void quantize_lpc_coefs(double *lpc_in, int order, int precision,
     }
 
     /* output quantized coefficients and level shift */
+    error=0;
     for(i=0; i<order; i++) {
-        lpc_out[i] = (int32_t)(lpc_in[i] * (1 << sh));
+        error += lpc_in[i] * (1 << sh);
+        lpc_out[i] = clip(lrintf(error), -qmax, qmax);
+        error -= lpc_out[i];
     }
     *shift = sh;
 }