Initialize jitter buffer delay with half of its size

Also add a function to reset jitter buffer
This commit is contained in:
Andreas Eversberg 2020-11-15 15:13:21 +01:00
parent 118b0260bc
commit 55a5a4ea2b
2 changed files with 12 additions and 1 deletions

View File

@ -30,16 +30,26 @@
int jitter_create(jitter_t *jitter, int length) int jitter_create(jitter_t *jitter, int length)
{ {
memset(jitter, 0, sizeof(*jitter)); memset(jitter, 0, sizeof(*jitter));
jitter->spl = calloc(length * sizeof(sample_t), 1); jitter->spl = malloc(length * sizeof(sample_t));
if (!jitter->spl) { if (!jitter->spl) {
PDEBUG(DDSP, DEBUG_ERROR, "No memory for jitter buffer.\n"); PDEBUG(DDSP, DEBUG_ERROR, "No memory for jitter buffer.\n");
return -ENOMEM; return -ENOMEM;
} }
jitter->len = length; jitter->len = length;
jitter_reset(jitter);
return 0; 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) void jitter_destroy(jitter_t *jitter)
{ {
if (jitter->spl) { if (jitter->spl) {

View File

@ -6,6 +6,7 @@ typedef struct jitter {
} jitter_t; } jitter_t;
int jitter_create(jitter_t *jitter, int length); int jitter_create(jitter_t *jitter, int length);
void jitter_reset(jitter_t *jitter);
void jitter_destroy(jitter_t *jitter); void jitter_destroy(jitter_t *jitter);
void jitter_save(jitter_t *jb, sample_t *samples, int length); void jitter_save(jitter_t *jb, sample_t *samples, int length);
void jitter_load(jitter_t *jb, sample_t *samples, int length); void jitter_load(jitter_t *jb, sample_t *samples, int length);