shithub: opus

Download patch

ref: 7a7c42a7166bba35084f44436b1f43078b806c8c
parent: 065dafdc3e6259093c49f984a39b3a16a299e44a
author: Jean-Marc Valin <[email protected]>
date: Wed Nov 25 15:38:52 EST 2009

Fixing a few memory errors

--- a/libcelt/celt.c
+++ b/libcelt/celt.c
@@ -1234,11 +1234,11 @@
    
    if (st->loss_count == 0)
    {
-      celt_word16 pitch_buf[MAX_PERIOD];
+      celt_word16 pitch_buf[MAX_PERIOD>>1];
       celt_word32 tmp=0;
       /*find_spectral_pitch(st->mode, st->mode->fft, &st->mode->psy, st->out_mem+MAX_PERIOD-len, st->out_mem, st->mode->window, NULL, len, MAX_PERIOD-len-100, &pitch_index, C);*/
       /* FIXME: Should do a bit of interpolation while decimating */
-      for (i=0;i<MAX_PERIOD;i++)
+      for (i=0;i<MAX_PERIOD>>1;i++)
          pitch_buf[i] = EXTRACT16(SHR32(st->out_mem[2*i], SIG_SHIFT));
       find_temporal_pitch(st->mode, st->out_mem+MAX_PERIOD-len, pitch_buf, len, MAX_PERIOD-len-100, &pitch_index, C, &tmp);
 
--- a/libcelt/pitch.c
+++ b/libcelt/pitch.c
@@ -199,7 +199,7 @@
    }
    *pitch = 2*best_pitch[0]-offset;
 
-   CELT_COPY(y, y+(N>>1), (lag-N)>>1);
+   CELT_MOVE(y, y+(N>>1), (lag-N)>>1);
    CELT_COPY(y+((lag-N)>>1), x_lp, N>>1);
 
    RESTORE_STACK;