shithub: opus

Download patch

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);
--