Skip to content

Commit 738c29f

Browse files
committed
Fix numerical issue in tone detector
1 parent 2169f64 commit 738c29f

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

celt/celt_encoder.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1284,9 +1284,11 @@ static int tone_lpc(const opus_val16 *x, int len, int delay, opus_val32 *lpc) {
12841284
#endif
12851285
num1 = MULT32_32_Q31(r02,r11) - MULT32_32_Q31(r01,r12);
12861286
if (num1 >= den) lpc[1] = QCONST32(1.f, 29);
1287+
else if (num1 <= -den) lpc[1] = -QCONST32(1.f, 29);
12871288
else lpc[1] = frac_div32_q29(num1, den);
12881289
num0 = MULT32_32_Q31(r00,r12) - MULT32_32_Q31(r02,r01);
1289-
if (HALF32(num0) >= den) lpc[0] = QCONST32(1.999f, 29);
1290+
if (HALF32(num0) >= den) lpc[0] = QCONST32(1.999999f, 29);
1291+
else if (HALF32(num0) <= -den) lpc[0] = -QCONST32(1.999999f, 29);
12901292
else lpc[0] = frac_div32_q29(num0, den);
12911293
/*printf("%f %f\n", lpc[0], lpc[1]);*/
12921294
return 0;

0 commit comments

Comments
 (0)