[FFmpeg-soc] [soc]: r5497 - aac-sbr/aacsbr.c
alexc
subversion at mplayerhq.hu
Sat Dec 5 16:42:07 CET 2009
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];
}
}
More information about the FFmpeg-soc
mailing list