aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorAlex Converse <alex.converse@gmail.com>2010-05-25 18:31:55 +0000
committerAlex Converse <alex.converse@gmail.com>2010-05-25 18:31:55 +0000
commitacc9f51fe11b3b1771836395f0f9a74788ccab97 (patch)
tree749620fb44041ad7d78178b9a0c8e6bf3ae3b0f6 /libavcodec
parent144c5e3dd248dcd621644499f8f5e6168993ae62 (diff)
downloadffmpeg-acc9f51fe11b3b1771836395f0f9a74788ccab97.tar.gz
aacenc: Trellis over scalefactors using an estimated codebook rather than every codebook.
The minimal codebook to encode the band without clipping is used (as is done in the TLS). Originally committed as revision 23318 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/aaccoder.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/libavcodec/aaccoder.c b/libavcodec/aaccoder.c
index f67657292d..951e297d09 100644
--- a/libavcodec/aaccoder.c
+++ b/libavcodec/aaccoder.c
@@ -568,18 +568,13 @@ static void search_for_quantizers_anmr(AVCodecContext *avctx, AACEncContext *s,
minscale = av_clip(minscale - q0, 0, TRELLIS_STATES - 1);
maxscale = av_clip(maxscale - q0, 0, TRELLIS_STATES);
for (q = minscale; q < maxscale; q++) {
- float dists[12], dist;
- memset(dists, 0, sizeof(dists));
+ float dist = 0;
+ int cb = find_min_book(sce->sf_idx[w*16+g], sce->ics.group_len[w], sce->ics.swb_sizes[g], s->scoefs+start);
for (w2 = 0; w2 < sce->ics.group_len[w]; w2++) {
FFPsyBand *band = &s->psy.psy_bands[s->cur_channel*PSY_MAX_BANDS+(w+w2)*16+g];
- int cb;
- for (cb = 0; cb <= ESC_BT; cb++)
- dists[cb] += quantize_band_cost(s, coefs + w2*128, s->scoefs + start + w2*128, sce->ics.swb_sizes[g],
+ dist += quantize_band_cost(s, coefs + w2*128, s->scoefs + start + w2*128, sce->ics.swb_sizes[g],
q + q0, cb, lambda / band->threshold, INFINITY, NULL);
}
- dist = dists[0];
- for (i = 1; i <= ESC_BT; i++)
- dist = FFMIN(dist, dists[i]);
minrd = FFMIN(minrd, dist);
for (i = 0; i < q1 - q0; i++) {