Author: alexc Date: Sat Dec 5 16:42:06 2009 New Revision: 5497 Log: Use the derivation of f_tablelow to remove loops from sbr_env_noise_floors.
Modified: aac-sbr/aacsbr.c Modified: aac-sbr/aacsbr.c ============================================================================== --- aac-sbr/aacsbr.c Sat Dec 5 16:42:04 2009 (r5496) +++ aac-sbr/aacsbr.c Sat Dec 5 16:42:06 2009 (r5497) @@ -937,6 +937,7 @@ static void sbr_env_noise_floors(Spectra { int delta = (ch == 1 && sbr->bs_coupling == 1) ? 2 : 1; int i, k, l; + const int temp = sbr->n[1] & 1; for (l = 0; l < ch_data->bs_num_env[1]; l++) { if (ch_data->bs_df_env[l]) { // bs_freq_res[0] == bs_freq_res[bs_num_env[1]] from prev frame @@ -944,22 +945,13 @@ static void sbr_env_noise_floors(Spectra for (k = 0; k < sbr->n[ch_data->bs_freq_res[l + 1]]; k++) sbr->env_facs[ch][l + 1][k] = sbr->env_facs[ch][l][k] + delta * ch_data->bs_data_env[l][k]; } else if (ch_data->bs_freq_res[l + 1]) { - i = 0; // optimisation : f_* are ascending freq bands so start at last i for each search for (k = 0; k < sbr->n[ch_data->bs_freq_res[l + 1]]; k++) { - // find i such that f_tablelow[i] <= f_tablehigh[k] < f_tablelow[i + 1] - for (; i < sbr->n[0]; i++) - if (sbr->f_tablelow[i] <= sbr->f_tablehigh[k] && - sbr->f_tablelow[i + 1] > sbr->f_tablehigh[k]) - break; + i = (k + temp) >> 1; // find i such that f_tablelow[i] <= f_tablehigh[k] < f_tablelow[i + 1] sbr->env_facs[ch][l + 1][k] = sbr->env_facs[ch][l][i] + delta * ch_data->bs_data_env[l][k]; } } else { - i = 0; // optimisation : f_* are ascending freq bands so start at last i for each search for (k = 0; k < sbr->n[ch_data->bs_freq_res[l + 1]]; k++) { - // find i such that f_tablehigh[i] == f_tablelow[k] - for (; i < sbr->n[1]; i++) - if (sbr->f_tablehigh[i] == sbr->f_tablelow[k]) - break; + i = k ? 2*k - temp : 0; // find i such that f_tablehigh[i] == f_tablelow[k] sbr->env_facs[ch][l + 1][k] = sbr->env_facs[ch][l][i] + delta * ch_data->bs_data_env[l][k]; } } _______________________________________________ FFmpeg-soc mailing list FFmpeg-soc@mplayerhq.hu https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-soc