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;