summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavcodec/flacenc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/libavcodec/flacenc.c b/libavcodec/flacenc.c
index 6d4e1d0dca..e21326de5e 100644
--- a/libavcodec/flacenc.c
+++ b/libavcodec/flacenc.c
@@ -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;
}