|
@@ -1132,7 +1132,12 @@ static void sbr_dequant(SpectralBandReplication *sbr, int id_aac) |
|
|
for (k = 0; k < sbr->n[sbr->data[0].bs_freq_res[e]]; k++) { |
|
|
for (k = 0; k < sbr->n[sbr->data[0].bs_freq_res[e]]; k++) { |
|
|
float temp1 = exp2f(sbr->data[0].env_facs[e][k] * alpha + 7.0f); |
|
|
float temp1 = exp2f(sbr->data[0].env_facs[e][k] * alpha + 7.0f); |
|
|
float temp2 = exp2f((pan_offset - sbr->data[1].env_facs[e][k]) * alpha); |
|
|
float temp2 = exp2f((pan_offset - sbr->data[1].env_facs[e][k]) * alpha); |
|
|
float fac = temp1 / (1.0f + temp2); |
|
|
|
|
|
|
|
|
float fac; |
|
|
|
|
|
if (temp1 > 1E20) { |
|
|
|
|
|
av_log(NULL, AV_LOG_ERROR, "envelope scalefactor overflow in dequant\n"); |
|
|
|
|
|
temp1 = 1; |
|
|
|
|
|
} |
|
|
|
|
|
fac = temp1 / (1.0f + temp2); |
|
|
sbr->data[0].env_facs[e][k] = fac; |
|
|
sbr->data[0].env_facs[e][k] = fac; |
|
|
sbr->data[1].env_facs[e][k] = fac * temp2; |
|
|
sbr->data[1].env_facs[e][k] = fac * temp2; |
|
|
} |
|
|
} |
|
@@ -1141,7 +1146,12 @@ static void sbr_dequant(SpectralBandReplication *sbr, int id_aac) |
|
|
for (k = 0; k < sbr->n_q; k++) { |
|
|
for (k = 0; k < sbr->n_q; k++) { |
|
|
float temp1 = exp2f(NOISE_FLOOR_OFFSET - sbr->data[0].noise_facs[e][k] + 1); |
|
|
float temp1 = exp2f(NOISE_FLOOR_OFFSET - sbr->data[0].noise_facs[e][k] + 1); |
|
|
float temp2 = exp2f(12 - sbr->data[1].noise_facs[e][k]); |
|
|
float temp2 = exp2f(12 - sbr->data[1].noise_facs[e][k]); |
|
|
float fac = temp1 / (1.0f + temp2); |
|
|
|
|
|
|
|
|
float fac; |
|
|
|
|
|
if (temp1 > 1E20) { |
|
|
|
|
|
av_log(NULL, AV_LOG_ERROR, "envelope scalefactor overflow in dequant\n"); |
|
|
|
|
|
temp1 = 1; |
|
|
|
|
|
} |
|
|
|
|
|
fac = temp1 / (1.0f + temp2); |
|
|
sbr->data[0].noise_facs[e][k] = fac; |
|
|
sbr->data[0].noise_facs[e][k] = fac; |
|
|
sbr->data[1].noise_facs[e][k] = fac * temp2; |
|
|
sbr->data[1].noise_facs[e][k] = fac * temp2; |
|
|
} |
|
|
} |
|
@@ -1150,9 +1160,15 @@ static void sbr_dequant(SpectralBandReplication *sbr, int id_aac) |
|
|
for (ch = 0; ch < (id_aac == TYPE_CPE) + 1; ch++) { |
|
|
for (ch = 0; ch < (id_aac == TYPE_CPE) + 1; ch++) { |
|
|
float alpha = sbr->data[ch].bs_amp_res ? 1.0f : 0.5f; |
|
|
float alpha = sbr->data[ch].bs_amp_res ? 1.0f : 0.5f; |
|
|
for (e = 1; e <= sbr->data[ch].bs_num_env; e++) |
|
|
for (e = 1; e <= sbr->data[ch].bs_num_env; e++) |
|
|
for (k = 0; k < sbr->n[sbr->data[ch].bs_freq_res[e]]; k++) |
|
|
|
|
|
|
|
|
for (k = 0; k < sbr->n[sbr->data[ch].bs_freq_res[e]]; k++){ |
|
|
sbr->data[ch].env_facs[e][k] = |
|
|
sbr->data[ch].env_facs[e][k] = |
|
|
exp2f(alpha * sbr->data[ch].env_facs[e][k] + 6.0f); |
|
|
exp2f(alpha * sbr->data[ch].env_facs[e][k] + 6.0f); |
|
|
|
|
|
if (sbr->data[ch].env_facs[e][k] > 1E20) { |
|
|
|
|
|
av_log(NULL, AV_LOG_ERROR, "envelope scalefactor overflow in dequant\n"); |
|
|
|
|
|
sbr->data[ch].env_facs[e][k] = 1; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
for (e = 1; e <= sbr->data[ch].bs_num_noise; e++) |
|
|
for (e = 1; e <= sbr->data[ch].bs_num_noise; e++) |
|
|
for (k = 0; k < sbr->n_q; k++) |
|
|
for (k = 0; k < sbr->n_q; k++) |
|
|
sbr->data[ch].noise_facs[e][k] = |
|
|
sbr->data[ch].noise_facs[e][k] = |
|
|