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. */