# HG changeset patch # User reimar # Date 1400431414 0 # Node ID a88581872033868c0426dd51da0d22715ea3f58f # Parent 3c5c93a30fb7bd5f0c0efdf991fcc95310d51c87 scaletempo: add hack for smoother speed changes. diff -r 3c5c93a30fb7 -r a88581872033 libaf/af_scaletempo.c --- a/libaf/af_scaletempo.c Sat May 17 01:38:00 2014 +0000 +++ b/libaf/af_scaletempo.c Sun May 18 16:43:34 2014 +0000 @@ -333,6 +333,7 @@ s->samples_standing = s->bytes_standing / bps; s->output_overlap = NULL; } else { + int old_overlap = s->bytes_overlap; s->samples_overlap = frames_overlap * nch; s->bytes_overlap = frames_overlap * nch * bps; s->bytes_standing = s->bytes_stride - s->bytes_overlap; @@ -343,7 +344,10 @@ mp_msg(MSGT_AFILTER, MSGL_FATAL, "[scaletempo] Out of memory\n"); return AF_ERROR; } - memset(s->buf_overlap, 0, s->bytes_overlap); + // not necessarily correct, but keeping old data if possible + // avoids clicks when changing speed. + if (s->bytes_overlap != old_overlap) + memset(s->buf_overlap, 0, s->bytes_overlap); if (use_int) { int32_t* pb = s->table_blend; int64_t blend = 0;