shithub: opus

Download patch

ref: f17623f2f9c7b129ba6b27f2c32fdfed70a5736c
parent: 718b10c6282c3ef9d8052e22aee5e853700c2529
author: Marcello Caramma (mcaramma) <[email protected]>
date: Mon Feb 24 10:06:46 EST 2014

Fixes an aliasing bug in the MDCT when the frame size isn't a multiple of 4.

In that case, the yp0 and yp1 ended up aliasing for the last element,
despite being marked as restrict.

Signed-off-by: Jean-Marc Valin <[email protected]>

--- a/celt/mdct.c
+++ b/celt/mdct.c
@@ -276,8 +276,8 @@
    /* Post-rotate and de-shuffle from both ends of the buffer at once to make
       it in-place. */
    {
-      kiss_fft_scalar * OPUS_RESTRICT yp0 = out+(overlap>>1);
-      kiss_fft_scalar * OPUS_RESTRICT yp1 = out+(overlap>>1)+N2-2;
+      kiss_fft_scalar * yp0 = out+(overlap>>1);
+      kiss_fft_scalar * yp1 = out+(overlap>>1)+N2-2;
       const kiss_twiddle_scalar *t = &trig[0];
       /* Loop to (N4+1)>>1 to handle odd N4. When N4 is odd, the
          middle pair will be computed twice. */