aboutsummaryrefslogtreecommitdiff
path: root/encoder/ixheaace_sbr_tran_det.c
diff options
context:
space:
mode:
Diffstat (limited to 'encoder/ixheaace_sbr_tran_det.c')
-rw-r--r--encoder/ixheaace_sbr_tran_det.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/encoder/ixheaace_sbr_tran_det.c b/encoder/ixheaace_sbr_tran_det.c
index cf9bce4..a18ba9e 100644
--- a/encoder/ixheaace_sbr_tran_det.c
+++ b/encoder/ixheaace_sbr_tran_det.c
@@ -52,7 +52,7 @@ static IA_ERRORCODE ixheaace_spectral_change(FLOAT32 *ptr_energies[16], FLOAT32
FLOAT32 pos_wt = (0.5f - (FLOAT32)len1 / (FLOAT32)(len1 + len2));
pos_wt = 1.0f - 4.0f * pos_wt * pos_wt;
- if ((is_ld_sbr) && (total_energy == 0.0f)) {
+ if (total_energy < SBR_EPS) {
*ptr_delta = 0.0f;
return IA_NO_ERROR;
}
@@ -72,8 +72,14 @@ static IA_ERRORCODE ixheaace_spectral_change(FLOAT32 *ptr_energies[16], FLOAT32
for (i = border; i < stop; i++) {
energy_2[j] += ptr_energies[i][j];
}
- delta = (float)fabs(log(energy_2[j] / energy_1[j] * len_ratio));
- delta_sum += (float)(sqrt((energy_1[j] + energy_2[j]) / total_energy) * delta);
+ if (energy_1[j] <= EPS) {
+ energy_1[j] = (FLOAT32)len1;
+ }
+ if (energy_2[j] <= EPS) {
+ energy_2[j] = (FLOAT32)len2;
+ }
+ delta = (FLOAT32)fabs(log((energy_2[j] / energy_1[j]) * len_ratio));
+ delta_sum += (FLOAT32)(sqrt((energy_1[j] + energy_2[j]) / total_energy) * delta);
}
*ptr_delta = delta_sum * pos_wt;