diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2020-11-15 15:13:21 +0100 |
---|---|---|
committer | Andreas Eversberg <jolly@eversberg.eu> | 2020-12-21 08:38:44 +0100 |
commit | 55a5a4ea2b9060ef9488d61f48e87e50c03d929f (patch) | |
tree | 8beeb71d359bc8d977d3690e1867beb368cc3de7 | |
parent | 118b0260bcac528cb99d1b88ce57da1dd752c71a (diff) |
Initialize jitter buffer delay with half of its size
Also add a function to reset jitter buffer
-rw-r--r-- | src/libjitter/jitter.c | 12 | ||||
-rw-r--r-- | src/libjitter/jitter.h | 1 |
2 files changed, 12 insertions, 1 deletions
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); |