mirror of
https://github.com/ittiam-systems/libxaac.git
synced 2026-04-02 20:30:47 +07:00
Fix for the Divide-by-zero in iusace_tcx_fac_encode
These changes handle the Divide-by-zero runtime error reported by correcting the TCX pre-shaping and shaping related parameters. Bug: ossFuzz:61899 Test: poc in bug
This commit is contained in:
parent
29d968bd4c
commit
a00a8d3c2c
1 changed files with 7 additions and 7 deletions
|
|
@ -157,18 +157,18 @@ UWORD32 iusace_rounded_sqrt(UWORD32 pos_num) {
|
|||
return value;
|
||||
}
|
||||
|
||||
static VOID iusace_noise_shaping(FLOAT32 *rr, WORD32 lg, FLOAT32 *gain1, FLOAT32 *gain2) {
|
||||
static VOID iusace_noise_shaping(FLOAT32 *rr, WORD32 lg, WORD32 M, FLOAT32 *gain1,
|
||||
FLOAT32 *gain2) {
|
||||
WORD32 i, k;
|
||||
FLOAT32 r, r_prev, g1, g2, a = 0, b = 0;
|
||||
|
||||
k = lg / FDNS_RESOLUTION;
|
||||
k = lg/M;
|
||||
|
||||
r_prev = 0;
|
||||
for (i = 0; i < lg; i++) {
|
||||
if ((i % k) == 0) {
|
||||
g1 = gain1[i / k];
|
||||
g2 = gain2[i / k];
|
||||
|
||||
a = 2.0f * g1 * g2 / (g1 + g2);
|
||||
b = (g2 - g1) / (g1 + g2);
|
||||
}
|
||||
|
|
@ -182,11 +182,11 @@ static VOID iusace_noise_shaping(FLOAT32 *rr, WORD32 lg, FLOAT32 *gain1, FLOAT32
|
|||
return;
|
||||
}
|
||||
|
||||
static VOID iusace_pre_shaping(FLOAT32 *rr, WORD32 lg, FLOAT32 *gain1, FLOAT32 *gain2) {
|
||||
static VOID iusace_pre_shaping(FLOAT32 *rr, WORD32 lg, WORD32 M, FLOAT32 *gain1, FLOAT32 *gain2) {
|
||||
WORD32 i, k;
|
||||
FLOAT32 r, r_prev, g1, g2, a = 0, b = 0;
|
||||
|
||||
k = lg / FDNS_RESOLUTION;
|
||||
k = lg / M;
|
||||
|
||||
r_prev = 0;
|
||||
for (i = 0; i < lg; i++) {
|
||||
|
|
@ -439,7 +439,7 @@ VOID iusace_tcx_fac_encode(ia_usac_data_struct *usac_data, FLOAT32 *lpc_coeffs,
|
|||
iusace_lpc_mdct(lp_flt_coeffs, gain2, ((FDNS_RESOLUTION * len_subfrm) / LEN_FRAME) << 1,
|
||||
pstr_scratch);
|
||||
|
||||
iusace_pre_shaping(x, lg, gain1, gain2);
|
||||
iusace_pre_shaping(x, lg, ((FDNS_RESOLUTION * len_subfrm) / LEN_FRAME), gain1, gain2);
|
||||
|
||||
for (i = 0; i < lg; i++) {
|
||||
x_tmp[i] = x[i];
|
||||
|
|
@ -584,7 +584,7 @@ VOID iusace_tcx_fac_encode(ia_usac_data_struct *usac_data, FLOAT32 *lpc_coeffs,
|
|||
|
||||
params[0] = index;
|
||||
|
||||
iusace_noise_shaping(x, lg, gain1, gain2);
|
||||
iusace_noise_shaping(x, lg, ((FDNS_RESOLUTION * len_subfrm) / LEN_FRAME), gain1, gain2);
|
||||
|
||||
iusace_tcx_imdct(x, xn_buf, (2 * fac_length), frame_len - (2 * fac_length), (2 * fac_length),
|
||||
pstr_scratch);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue