|
|
|
@ -127,6 +127,28 @@ static void ac3_bit_alloc_calc_bap_c(int16_t *mask, int16_t *psd, |
|
|
|
|
} while (end > ff_ac3_band_start_tab[band++]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int ac3_compute_mantissa_size_c(int mant_cnt[5], uint8_t *bap, |
|
|
|
|
int nb_coefs) |
|
|
|
|
{ |
|
|
|
|
int bits, b, i; |
|
|
|
|
|
|
|
|
|
bits = 0; |
|
|
|
|
for (i = 0; i < nb_coefs; i++) { |
|
|
|
|
b = bap[i]; |
|
|
|
|
if (b <= 4) { |
|
|
|
|
// bap=1 to bap=4 will be counted in compute_mantissa_size_final
|
|
|
|
|
mant_cnt[b]++; |
|
|
|
|
} else if (b <= 13) { |
|
|
|
|
// bap=5 to bap=13 use (bap-1) bits
|
|
|
|
|
bits += b - 1; |
|
|
|
|
} else { |
|
|
|
|
// bap=14 uses 14 bits and bap=15 uses 16 bits
|
|
|
|
|
bits += (b == 14) ? 14 : 16; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return bits; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
av_cold void ff_ac3dsp_init(AC3DSPContext *c, int bit_exact) |
|
|
|
|
{ |
|
|
|
|
c->ac3_exponent_min = ac3_exponent_min_c; |
|
|
|
@ -135,6 +157,7 @@ av_cold void ff_ac3dsp_init(AC3DSPContext *c, int bit_exact) |
|
|
|
|
c->ac3_rshift_int32 = ac3_rshift_int32_c; |
|
|
|
|
c->float_to_fixed24 = float_to_fixed24_c; |
|
|
|
|
c->bit_alloc_calc_bap = ac3_bit_alloc_calc_bap_c; |
|
|
|
|
c->compute_mantissa_size = ac3_compute_mantissa_size_c; |
|
|
|
|
|
|
|
|
|
if (ARCH_ARM) |
|
|
|
|
ff_ac3dsp_init_arm(c, bit_exact); |
|
|
|
|