Fixing a few memory errors
authorJean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Thu, 26 Nov 2009 01:38:52 +0000 (20:38 -0500)
committerJean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Thu, 26 Nov 2009 01:38:52 +0000 (20:38 -0500)
libcelt/celt.c
libcelt/pitch.c

index 782c6c3..ab12f0e 100644 (file)
@@ -1234,11 +1234,11 @@ static void celt_decode_lost(CELTDecoder * restrict st, celt_word16 * restrict p
    
    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);
 
index 72c183d..6558bd4 100644 (file)
@@ -199,7 +199,7 @@ void find_temporal_pitch(const CELTMode *m, const celt_sig * restrict x, celt_wo
    }
    *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;