36 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
37 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
38 20, 21, 22, 23, 24, 25, 26, 27, 28, 31,
39 34, 37, 40, 43, 46, 49, 55, 61, 67, 73,
40 79, 85, 97, 109, 121, 133, 157, 181, 205, 229, 253
48 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
49 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
50 25, 26, 27, 28, 28, 28, 29, 29, 29, 30, 30, 30,
51 31, 31, 31, 32, 32, 32, 33, 33, 33, 34, 34, 34,
52 35, 35, 35, 35, 35, 35, 36, 36, 36, 36, 36, 36,
53 37, 37, 37, 37, 37, 37, 38, 38, 38, 38, 38, 38,
54 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40,
55 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
56 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
57 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
58 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
59 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
60 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
61 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
62 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
63 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
64 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
65 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
66 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
67 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
68 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49
73 if ((
b0 + 256) ==
b1) {
85 }
else if (bin < 20) {
98 for (bin = start; bin < end; bin++) {
99 psd[bin]=(3072 - (
exp[bin] << 7));
108 for (; bin < band_end; bin++) {
111 int adr =
FFMIN(
max - ((v + psd[bin] + 1) >> 1), 255);
114 band_psd[band++] = v;
119 int start,
int end,
int fast_gain,
int is_lfe,
120 int dba_mode,
int dba_nsegs,
uint8_t *dba_offsets,
126 int band_start, band_end, begin, end1;
127 int lowcomp, fastleak, slowleak;
136 if (band_start == 0) {
138 lowcomp =
calc_lowcomp1(lowcomp, band_psd[0], band_psd[1], 384);
139 excite[0] = band_psd[0] - fast_gain - lowcomp;
140 lowcomp =
calc_lowcomp1(lowcomp, band_psd[1], band_psd[2], 384);
141 excite[1] = band_psd[1] - fast_gain - lowcomp;
143 for (band = 2; band < 7; band++) {
144 if (!(is_lfe && band == 6))
145 lowcomp =
calc_lowcomp1(lowcomp, band_psd[band], band_psd[band+1], 384);
146 fastleak = band_psd[band] - fast_gain;
147 slowleak = band_psd[band] -
s->slow_gain;
148 excite[band] = fastleak - lowcomp;
149 if (!(is_lfe && band == 6)) {
150 if (band_psd[band] <= band_psd[band+1]) {
157 end1 =
FFMIN(band_end, 22);
158 for (band = begin; band < end1; band++) {
159 if (!(is_lfe && band == 6))
160 lowcomp =
calc_lowcomp(lowcomp, band_psd[band], band_psd[band+1], band);
161 fastleak =
FFMAX(fastleak -
s->fast_decay, band_psd[band] - fast_gain);
162 slowleak =
FFMAX(slowleak -
s->slow_decay, band_psd[band] -
s->slow_gain);
163 excite[band] =
FFMAX(fastleak - lowcomp, slowleak);
169 fastleak = (
s->cpl_fast_leak << 8) + 768;
170 slowleak = (
s->cpl_slow_leak << 8) + 768;
173 for (band = begin; band < band_end; band++) {
174 fastleak =
FFMAX(fastleak -
s->fast_decay, band_psd[band] - fast_gain);
175 slowleak =
FFMAX(slowleak -
s->slow_decay, band_psd[band] -
s->slow_gain);
176 excite[band] =
FFMAX(fastleak, slowleak);
181 for (band = band_start; band < band_end; band++) {
182 int tmp =
s->db_per_bit - band_psd[band];
184 excite[band] +=
tmp >> 2;
196 for (seg = 0; seg < dba_nsegs; seg++) {
197 band += dba_offsets[seg];
200 if (dba_values[seg] >= 4) {
201 delta = (dba_values[seg] - 3) * 128;
203 delta = (dba_values[seg] - 4) * 128;
205 for (
i = 0;
i < dba_lengths[seg];
i++) {