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++) {
114 int max =
FFMAX(v, psd[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;
141 if (band_start == 0) {
143 lowcomp =
calc_lowcomp1(lowcomp, band_psd[0], band_psd[1], 384);
144 excite[0] = band_psd[0] - fast_gain - lowcomp;
145 lowcomp =
calc_lowcomp1(lowcomp, band_psd[1], band_psd[2], 384);
146 excite[1] = band_psd[1] - fast_gain - lowcomp;
148 for (band = 2; band < 7; band++) {
149 if (!(is_lfe && band == 6))
150 lowcomp =
calc_lowcomp1(lowcomp, band_psd[band], band_psd[band+1], 384);
151 fastleak = band_psd[
band] - fast_gain;
153 excite[
band] = fastleak - lowcomp;
154 if (!(is_lfe && band == 6)) {
155 if (band_psd[band] <= band_psd[band+1]) {
162 end1 =
FFMIN(band_end, 22);
163 for (band = begin; band < end1; band++) {
164 if (!(is_lfe && band == 6))
165 lowcomp =
calc_lowcomp(lowcomp, band_psd[band], band_psd[band+1], band);
166 fastleak =
FFMAX(fastleak - s->
fast_decay, band_psd[band] - fast_gain);
168 excite[
band] =
FFMAX(fastleak - lowcomp, slowleak);
178 for (band = begin; band < band_end; band++) {
179 fastleak =
FFMAX(fastleak - s->
fast_decay, band_psd[band] - fast_gain);
181 excite[
band] =
FFMAX(fastleak, slowleak);
186 for (band = band_start; band < band_end; band++) {
189 excite[
band] += tmp >> 2;
201 for (seg = 0; seg < dba_nsegs; seg++) {
202 band += dba_offsets[seg];
205 if (dba_values[seg] >= 4) {
206 delta = (dba_values[seg] - 3) * 128;
208 delta = (dba_values[seg] - 4) * 128;
210 for (i = 0; i < dba_lengths[seg]; i++) {
211 mask[band++] +=
delta;
225 #if !CONFIG_HARDCODED_TABLES
230 while (bin < band_end)
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
uint8_t ff_ac3_bin_to_band_tab[253]
av_cold void ff_ac3_common_init(void)
Initialize some tables.
const uint16_t ff_ac3_hearing_threshold_tab[AC3_CRITICAL_BANDS][3]
static av_cold int end(AVCodecContext *avctx)
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.
Libavcodec external API header.
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
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.