aacenc: Use an estimated codebook for the TLS (two loop search).
Originally committed as revision 23134 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
960323a230
commit
51cbabc792
@ -604,9 +604,26 @@ static void search_for_quantizers_twoloop(AVCodecContext *avctx,
|
||||
continue;
|
||||
}
|
||||
minscaler = FFMIN(minscaler, sce->sf_idx[w*16+g]);
|
||||
for (cb = 0; cb <= ESC_BT; cb++) {
|
||||
{
|
||||
float dist = 0.0f;
|
||||
int bb = 0;
|
||||
float maxval = 0.0f;
|
||||
float Q = ff_aac_pow2sf_tab[200 - sce->sf_idx[w*16+g] + SCALE_ONE_POS - SCALE_DIV_512];
|
||||
float Q34 = sqrtf(Q * sqrtf(Q));
|
||||
int qmaxval;
|
||||
for (w2 = 0; w2 < sce->ics.group_len[w]; w2++) {
|
||||
for (i = 0; i < sce->ics.swb_sizes[g]; i++) {
|
||||
maxval = fmaxf(maxval, scaled[w2*128+i]);
|
||||
}
|
||||
}
|
||||
qmaxval = maxval * Q34 + 0.4054;
|
||||
if (qmaxval == 0) cb = 0;
|
||||
else if (qmaxval == 1) cb = 1;
|
||||
else if (qmaxval == 2) cb = 3;
|
||||
else if (qmaxval <= 4) cb = 5;
|
||||
else if (qmaxval <= 7) cb = 7;
|
||||
else if (qmaxval <= 12) cb = 9;
|
||||
else cb = 11;
|
||||
for (w2 = 0; w2 < sce->ics.group_len[w]; w2++) {
|
||||
int b;
|
||||
dist += quantize_band_cost(s, coefs + w2*128,
|
||||
@ -619,10 +636,8 @@ static void search_for_quantizers_twoloop(AVCodecContext *avctx,
|
||||
&b);
|
||||
bb += b;
|
||||
}
|
||||
if (dist < mindist) {
|
||||
mindist = dist;
|
||||
minbits = bb;
|
||||
}
|
||||
}
|
||||
dists[w*16+g] = (mindist - minbits) / lambda;
|
||||
bits = minbits;
|
||||
|
Loading…
Reference in New Issue
Block a user