From 1b37db8add5cefb9cfa6bde9003bfaefe7af8ac3 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 8 Jun 2018 12:27:19 +0200 Subject: [PATCH] resample: fix resample length Don't use output sizes as input size for the next channel. --- spa/plugins/audioconvert/resample.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/spa/plugins/audioconvert/resample.c b/spa/plugins/audioconvert/resample.c index 163b2f135..0ac17f377 100644 --- a/spa/plugins/audioconvert/resample.c +++ b/spa/plugins/audioconvert/resample.c @@ -740,7 +740,7 @@ static int impl_node_process(struct spa_node *node) struct spa_io_buffers *outio, *inio; struct buffer *sbuf, *dbuf; struct spa_buffer *sb, *db; - uint32_t i, size, in_len, out_len, maxsize; + uint32_t i, size, in_len, out_len, pin_len, pout_len, maxsize; int res = 0; spa_return_val_if_fail(node != NULL, -EINVAL); @@ -784,10 +784,13 @@ static int impl_node_process(struct spa_node *node) size = sb->datas[0].chunk->size; maxsize = db->datas[0].maxsize; - in_len = (size - inport->offset) / sizeof(float); - out_len = (maxsize - outport->offset) / sizeof(float); + pin_len = in_len = (size - inport->offset) / sizeof(float); + pout_len = out_len = (maxsize - outport->offset) / sizeof(float); for (i = 0; i < sb->n_datas; i++) { + in_len = pin_len; + out_len = pout_len; + speex_resampler_process_float(this->state, i, SPA_MEMBER(sb->datas[i].data, inport->offset, void), &in_len, SPA_MEMBER(db->datas[i].data, outport->offset, void), &out_len);