diff --git a/src/libjitter/jitter.c b/src/libjitter/jitter.c index 978e2ad..c3af715 100644 --- a/src/libjitter/jitter.c +++ b/src/libjitter/jitter.c @@ -30,16 +30,26 @@ int jitter_create(jitter_t *jitter, int length) { memset(jitter, 0, sizeof(*jitter)); - jitter->spl = calloc(length * sizeof(sample_t), 1); + jitter->spl = malloc(length * sizeof(sample_t)); if (!jitter->spl) { PDEBUG(DDSP, DEBUG_ERROR, "No memory for jitter buffer.\n"); return -ENOMEM; } jitter->len = length; + jitter_reset(jitter); + return 0; } +void jitter_reset(jitter_t *jitter) +{ + memset(jitter->spl, 0, jitter->len * sizeof(sample_t)); + + /* put write pointer ahead by half of the buffer length */ + jitter->inptr = jitter->len / 2; +} + void jitter_destroy(jitter_t *jitter) { if (jitter->spl) { diff --git a/src/libjitter/jitter.h b/src/libjitter/jitter.h index 658da19..e344d8a 100644 --- a/src/libjitter/jitter.h +++ b/src/libjitter/jitter.h @@ -6,6 +6,7 @@ typedef struct jitter { } jitter_t; int jitter_create(jitter_t *jitter, int length); +void jitter_reset(jitter_t *jitter); void jitter_destroy(jitter_t *jitter); void jitter_save(jitter_t *jb, sample_t *samples, int length); void jitter_load(jitter_t *jb, sample_t *samples, int length);