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