ref: 03e0d3a6a3860a1ef9ca91b9e979de4eed9dc92e
parent: 030074f9ed7ba84179d967cb98a65263375d55d5
author: Jean-Marc Valin <jeanmarcv@google.com>
date: Thu Feb 27 10:50:16 EST 2025
Fix MDCT headroom calculation from 38e535a1
--- a/celt/mdct.c
+++ b/celt/mdct.c
@@ -215,12 +215,12 @@
yc.r = S_MUL2(yc.r, scale);
yc.i = S_MUL2(yc.i, scale);
#ifdef FIXED_POINT
- maxval = MAX32(maxval, MAX32(yc.r, yc.i));
+ maxval = MAX32(maxval, MAX32(ABS32(yc.r), ABS32(yc.i)));
#endif
f2[st->bitrev[i]] = yc;
}
#ifdef FIXED_POINT
- headroom = IMAX(0, IMIN(scale_shift-1, 28-celt_ilog2(maxval)));
+ headroom = IMAX(0, IMIN(scale_shift, 28-celt_ilog2(maxval)));
for(i=0;i<N4;i++)
{
f2[i].r = PSHR32(f2[i].r, scale_shift-headroom);
--
⑨