Mercurial > libavcodec.hg
changeset 11762:91b9bd17e79c libavcodec
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).
author | alexc |
---|---|
date | Tue, 25 May 2010 18:31:55 +0000 |
parents | 418455c7e31f |
children | 3fee94a43e64 |
files | aaccoder.c |
diffstat | 1 files changed, 3 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/aaccoder.c Tue May 25 18:28:18 2010 +0000 +++ b/aaccoder.c Tue May 25 18:31:55 2010 +0000 @@ -568,18 +568,13 @@ 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++) {