X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Facelp_vectors.c;h=6a544a912dfde7c50c3a73fdd47cca64e743f2f3;hb=a129622390fca8a298c3b121f42b2d15910b9b22;hp=a44ab8cfe693e529ff89644f232e701db7d545f8;hpb=988f585fcb1cfb40fe4b706c32b31594b536bba0;p=ffmpeg diff --git a/libavcodec/acelp_vectors.c b/libavcodec/acelp_vectors.c index a44ab8cfe69..6a544a912df 100644 --- a/libavcodec/acelp_vectors.c +++ b/libavcodec/acelp_vectors.c @@ -237,11 +237,12 @@ void ff_set_fixed_vector(float *out, const AMRFixed *in, float scale, int size) int x = in->x[i], repeats = !((in->no_repeat_mask >> i) & 1); float y = in->y[i] * scale; - do { - out[x] += y; - y *= in->pitch_fac; - x += in->pitch_lag; - } while (x < size && repeats); + if (in->pitch_lag > 0) + do { + out[x] += y; + y *= in->pitch_fac; + x += in->pitch_lag; + } while (x < size && repeats); } } @@ -252,9 +253,10 @@ void ff_clear_fixed_vector(float *out, const AMRFixed *in, int size) for (i=0; i < in->n; i++) { int x = in->x[i], repeats = !((in->no_repeat_mask >> i) & 1); - do { - out[x] = 0.0; - x += in->pitch_lag; - } while (x < size && repeats); + if (in->pitch_lag > 0) + do { + out[x] = 0.0; + x += in->pitch_lag; + } while (x < size && repeats); } }