summaryrefslogtreecommitdiff
path: root/libavcodec/aaccoder.c
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/aaccoder.c
parent144c5e3dd248dcd621644499f8f5e6168993ae62 (diff)
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/aaccoder.c')
-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++) {