aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libjitter/jitter.c12
-rw-r--r--src/libjitter/jitter.h1
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);