From 0bd9aa449ac21a185608e3cacb0f5db431abf217 Mon Sep 17 00:00:00 2001 From: Alex Converse Date: Mon, 21 Sep 2009 03:50:59 +0000 Subject: [PATCH] aacenc: Multiple distortion by lambda after it's summed and not each individual term before. Originally committed as revision 19945 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/aaccoder.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/libavcodec/aaccoder.c b/libavcodec/aaccoder.c index b32c854..e5a7a8e 100644 --- a/libavcodec/aaccoder.c +++ b/libavcodec/aaccoder.c @@ -121,10 +121,10 @@ static float quantize_band_cost(struct AACEncContext *s, const float *in, if (!cb) { for (i = 0; i < size; i++) - cost += in[i]*in[i]*lambda; + cost += in[i]*in[i]; if (bits) *bits = 0; - return cost; + return cost * lambda; } #ifndef USE_REALLY_FULL_SEARCH offs[0] = 1; @@ -141,10 +141,10 @@ static float quantize_band_cost(struct AACEncContext *s, const float *in, int (*quants)[2] = &s->qcoefs[i]; mincost = 0.0f; for (j = 0; j < dim; j++) - mincost += in[i+j]*in[i+j]*lambda; + mincost += in[i+j]*in[i+j]; minidx = IS_CODEBOOK_UNSIGNED(cb) ? 0 : 40; minbits = ff_aac_spectral_bits[cb-1][minidx]; - mincost += minbits; + mincost = mincost * lambda + minbits; for (j = 0; j < (1<qcoefs[i]; mincost = 0.0f; for (j = 0; j < dim; j++) - mincost += in[i+j]*in[i+j]*lambda; + mincost += in[i+j]*in[i+j]; minidx = IS_CODEBOOK_UNSIGNED(cb) ? 0 : 40; minbits = ff_aac_spectral_bits[cb-1][minidx]; - mincost += minbits; + mincost = mincost * lambda + minbits; for (j = 0; j < (1<