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
42 #if CONFIG_HARDCODED_TABLES 49 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
50 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
51 25, 26, 27, 28, 28, 28, 29, 29, 29, 30, 30, 30,
52 31, 31, 31, 32, 32, 32, 33, 33, 33, 34, 34, 34,
53 35, 35, 35, 35, 35, 35, 36, 36, 36, 36, 36, 36,
54 37, 37, 37, 37, 37, 37, 38, 38, 38, 38, 38, 38,
55 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40,
56 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
57 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
58 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
59 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
60 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
61 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
62 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
63 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
64 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
65 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
66 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
67 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
68 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
69 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49
78 if ((b0 + 256) == b1) {
90 }
else if (bin < 20) {
93 return FFMAX(a - 128, 0);
103 for (bin = start; bin <
end; bin++) {
104 psd[bin]=(3072 - (exp[bin] << 7));
113 for (; bin < band_end; bin++) {
116 int adr =
FFMIN(max - ((v + psd[bin] + 1) >> 1), 255);
119 band_psd[band++] =
v;
124 int start,
int end,
int fast_gain,
int is_lfe,
125 int dba_mode,
int dba_nsegs,
uint8_t *dba_offsets,
131 int band_start, band_end, begin, end1;
132 int lowcomp, fastleak, slowleak;
138 if (band_start == 0) {
140 lowcomp =
calc_lowcomp1(lowcomp, band_psd[0], band_psd[1], 384);
141 excite[0] = band_psd[0] - fast_gain - lowcomp;
142 lowcomp =
calc_lowcomp1(lowcomp, band_psd[1], band_psd[2], 384);
143 excite[1] = band_psd[1] - fast_gain - lowcomp;
145 for (band = 2; band < 7; band++) {
146 if (!(is_lfe && band == 6))
147 lowcomp =
calc_lowcomp1(lowcomp, band_psd[band], band_psd[band+1], 384);
148 fastleak = band_psd[
band] - fast_gain;
150 excite[
band] = fastleak - lowcomp;
151 if (!(is_lfe && band == 6)) {
152 if (band_psd[band] <= band_psd[band+1]) {
159 end1 =
FFMIN(band_end, 22);
160 for (band = begin; band < end1; band++) {
161 if (!(is_lfe && band == 6))
162 lowcomp =
calc_lowcomp(lowcomp, band_psd[band], band_psd[band+1], band);
163 fastleak =
FFMAX(fastleak - s->
fast_decay, band_psd[band] - fast_gain);
165 excite[
band] =
FFMAX(fastleak - lowcomp, slowleak);
175 for (band = begin; band < band_end; band++) {
176 fastleak =
FFMAX(fastleak - s->
fast_decay, band_psd[band] - fast_gain);
178 excite[
band] =
FFMAX(fastleak, slowleak);
183 for (band = band_start; band < band_end; band++) {
186 excite[
band] += tmp >> 2;
198 for (seg = 0; seg < dba_nsegs; seg++) {
199 band += dba_offsets[seg];
202 if (dba_values[seg] >= 4) {
203 delta = (dba_values[seg] - 3) << 7;
205 delta = (dba_values[seg] - 4) << 7;
207 for (i = 0; i < dba_lengths[seg]; i++) {
208 mask[band++] +=
delta;
222 #if !CONFIG_HARDCODED_TABLES 227 while (bin < band_end)
uint8_t ff_ac3_bin_to_band_tab[253]
if max(w)>1 w=0.9 *w/max(w)
av_cold void ff_ac3_common_init(void)
Initialize some tables.
const uint16_t ff_ac3_hearing_threshold_tab[AC3_CRITICAL_BANDS][3]
bitstream reader API header.
static const uint16_t mask[17]
int ff_ac3_bit_alloc_calc_mask(AC3BitAllocParameters *s, int16_t *band_psd, int start, int end, int fast_gain, int is_lfe, int dba_mode, int dba_nsegs, uint8_t *dba_offsets, uint8_t *dba_lengths, uint8_t *dba_values, int16_t *mask)
Calculate the masking curve.
const uint8_t ff_ac3_band_start_tab[AC3_CRITICAL_BANDS+1]
Starting frequency coefficient bin for each critical band.
static int calc_lowcomp(int a, int b0, int b1, int bin)
static int calc_lowcomp1(int a, int b0, int b1, int c)
const uint8_t ff_ac3_log_add_tab[260]
#define AC3_CRITICAL_BANDS
synthesis window for stochastic i
void ff_ac3_bit_alloc_calc_psd(int8_t *exp, int start, int end, int16_t *psd, int16_t *band_psd)
Calculate the log power-spectral density of the input signal.
Common code between the AC-3 encoder and decoder.