Author: alexc Date: Fri Nov 20 21:28:54 2009 New Revision: 5450 Log: Replace ceil(log() / M_LN2) with a ceil_log2[] lookup table. The result of this calculation is a number of bits to be read therefore we must be exact.
Modified: aac-sbr/aacsbr.c Modified: aac-sbr/aacsbr.c ============================================================================== --- aac-sbr/aacsbr.c Wed Nov 18 13:08:22 2009 (r5449) +++ aac-sbr/aacsbr.c Fri Nov 20 21:28:54 2009 (r5450) @@ -489,6 +489,10 @@ static int sbr_make_f_derived(AACContext return 0; } +static int8_t ceil_log2[] = { + 0, 0, 1, 2, 2, 3, 3, +}; + static int sbr_grid(AACContext *ac, SpectralBandReplication *sbr, GetBitContext *gb, SBRData *ch_data) { @@ -514,7 +518,7 @@ static int sbr_grid(AACContext *ac, Spec for (i = 0; i < ch_data->bs_num_rel[1]; i++) ch_data->bs_rel_bord[1][i] = (get_bits(gb, 2) << 1) + 2; - ch_data->bs_pointer = get_bits(gb, ceil(logf(ch_data->bs_num_env[1] + 1) / M_LN2)); + ch_data->bs_pointer = get_bits(gb, ceil_log2[ch_data->bs_num_env[1] + 1]); for (i = 0; i < ch_data->bs_num_env[1]; i++) ch_data->bs_freq_res[ch_data->bs_num_env[1] - 1 - i] = get_bits1(gb); @@ -527,7 +531,7 @@ static int sbr_grid(AACContext *ac, Spec for (i = 0; i < ch_data->bs_num_rel[0]; i++) ch_data->bs_rel_bord[0][i] = (get_bits(gb, 2) << 1) + 2; - ch_data->bs_pointer = get_bits(gb, ceil(logf(ch_data->bs_num_env[1] + 1) / M_LN2)); + ch_data->bs_pointer = get_bits(gb, ceil_log2[ch_data->bs_num_env[1] + 1]); for (i = 0; i < ch_data->bs_num_env[1]; i++) ch_data->bs_freq_res[i] = get_bits1(gb); @@ -544,7 +548,7 @@ static int sbr_grid(AACContext *ac, Spec for (i = 0; i < ch_data->bs_num_rel[1]; i++) ch_data->bs_rel_bord[1][i] = (get_bits(gb, 2) << 1) + 2; - ch_data->bs_pointer = get_bits(gb, ceil(logf(ch_data->bs_num_env[1] + 1) / M_LN2)); + ch_data->bs_pointer = get_bits(gb, ceil_log2[ch_data->bs_num_env[1] + 1]); for (i = 0; i < ch_data->bs_num_env[1]; i++) ch_data->bs_freq_res[i] = get_bits1(gb); _______________________________________________ FFmpeg-soc mailing list FFmpeg-soc@mplayerhq.hu https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-soc