64 #define EAC3_SR_CODE_REDUCED 3
75 num_copy_sections = 0;
84 for (i = 0; i < bandsize; i += copysize) {
101 for (i = 0; i < num_copy_sections; i++) {
105 bin += copy_sizes[i];
113 for (i = 0; i < bandsize; i++) {
115 accum += coeff *
coeff;
117 rms_energy[bnd] = sqrtf(accum / bandsize);
128 coeffs[0] *= atten_tab[0];
129 coeffs[1] *= atten_tab[1];
130 coeffs[2] *= atten_tab[2];
131 coeffs[3] *= atten_tab[1];
132 coeffs[4] *= atten_tab[0];
143 float nscale = s->
spx_noise_blend[ch][bnd] * rms_energy[bnd] * (1.0f / INT32_MIN);
147 nscale *= 1.0 / (1<<23);
148 sscale *= 1.0 / (1<<23);
161 #define COEFF_0 10273905LL
164 #define COEFF_1 11863283LL
167 #define COEFF_2 3070444LL
176 int even0, even1, even2, odd0, odd1, odd2;
178 odd1 = pre_mant[1] - pre_mant[3] - pre_mant[5];
180 even2 = ( pre_mant[2] *
COEFF_0) >> 23;
181 tmp = ( pre_mant[4] *
COEFF_1) >> 23;
182 odd0 = ((pre_mant[1] + pre_mant[5]) *
COEFF_2) >> 23;
184 even0 = pre_mant[0] + (tmp >> 1);
185 even1 = pre_mant[0] - tmp;
192 odd0 = tmp + pre_mant[1] + pre_mant[3];
193 odd2 = tmp + pre_mant[5] - pre_mant[3];
195 pre_mant[0] = even0 + odd0;
196 pre_mant[1] = even1 + odd1;
197 pre_mant[2] = even2 + odd2;
198 pre_mant[3] = even2 - odd2;
199 pre_mant[4] = even1 - odd1;
200 pre_mant[5] = even0 - odd0;
206 int end_bap, gaq_mode;
211 end_bap = (gaq_mode < 2) ? 12 : 17;
218 for (bin = s->
start_freq[ch]; bin < s->end_freq[ch]; bin++) {
219 if (s->
bap[ch][bin] > 7 && s->
bap[ch][bin] < end_bap)
220 gaq_gain[gs++] =
get_bits1(gbc) << (gaq_mode-1);
225 for (bin = s->
start_freq[ch]; bin < s->end_freq[ch]; bin++) {
226 if (s->
bap[ch][bin] > 7 && s->
bap[ch][bin] < 17) {
229 if (group_code > 26) {
243 for (bin = s->
start_freq[ch]; bin < s->end_freq[ch]; bin++) {
244 int hebap = s->
bap[ch][bin];
248 for (blk = 0; blk < 6; blk++) {
251 }
else if (hebap < 8) {
254 for (blk = 0; blk < 6; blk++) {
261 log_gain = gaq_gain[gs++];
265 gbits = bits - log_gain;
267 for (blk = 0; blk < 6; blk++) {
269 if (log_gain && mant == -(1 << (gbits-1))) {
272 int mbits = bits - (2 - log_gain);
274 mant <<= (23 - (mbits - 1));
277 b = 1 << (23 - log_gain);
299 int ac3_exponent_strategy, parse_aht_info, parse_spx_atten_data;
300 int parse_transient_proc_info;
387 int mix_data_size = (
get_bits(gbc, 5) + 2) << 3;
453 for (i = 0; i < addbsil + 1; i++) {
466 ac3_exponent_strategy = 1;
471 parse_transient_proc_info =
get_bits1(gbc);
516 if (ac3_exponent_strategy) {
519 for (ch = !s->
cpl_in_use[blk]; ch <= s->fbw_channels; ch++) {
525 for (ch = !((s->
channel_mode > 1) && num_cpl_blocks); ch <= s->fbw_channels; ch++) {
527 for (blk = 0; blk < 6; blk++) {
545 if (parse_aht_info) {
551 for (ch = (num_cpl_blocks != 6); ch <= s->
channels; ch++) {
553 for (blk = 1; blk < 6; blk++) {
568 int csnroffst = (
get_bits(gbc, 6) - 15) << 4;
569 int snroffst = (csnroffst +
get_bits(gbc, 4)) << 2;
570 for (ch = 0; ch <= s->
channels; ch++)
575 if (parse_transient_proc_info) {
586 if (parse_spx_atten_data &&
get_bits1(gbc)) {