From 4c8093fa727cdbe41117a70460b564b3d2b88378 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 8 May 2026 13:10:30 +0200 Subject: [PATCH] combine-stream: clean up some variables Move the source offs, stride, data and size calculations out of the destination loop. We only need to clamp the size to copy to the maxsize of the destination buffer. --- src/modules/module-combine-stream.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/src/modules/module-combine-stream.c b/src/modules/module-combine-stream.c index 2a08d7f3b..81e20b0d1 100644 --- a/src/modules/module-combine-stream.c +++ b/src/modules/module-combine-stream.c @@ -1294,35 +1294,31 @@ static void combine_output_process(void *d) for (j = 0; j < in->buffer->n_datas; j++) { struct spa_data *ds, *dd; - uint32_t outsize = 0, remap; - int32_t stride = 0; + uint32_t remap, offs, ssize, stride; + void *sdata; ds = &in->buffer->datas[j]; + offs = SPA_MIN(ds->chunk->offset, ds->maxsize); + ssize = SPA_MIN(ds->chunk->size, ds->maxsize - offs); + stride = ds->chunk->stride; + sdata = SPA_PTROFF(ds->data, offs, void); remap = s->remap[j]; if (remap < out->buffer->n_datas) { - uint32_t offs, size; + uint32_t size; dd = &out->buffer->datas[remap]; - offs = SPA_MIN(ds->chunk->offset, ds->maxsize); - size = SPA_MIN(ds->chunk->size, ds->maxsize - offs); - size = SPA_MIN(size, dd->maxsize); + size = SPA_MIN(ssize, dd->maxsize); if (mix[remap]) { - ringbuffer_mix(&s->delay[j], - dd->data, SPA_PTROFF(ds->data, offs, void), size); + ringbuffer_mix(&s->delay[j], dd->data, sdata, size); } else { - ringbuffer_memcpy(&s->delay[j], - dd->data, SPA_PTROFF(ds->data, offs, void), size); + ringbuffer_memcpy(&s->delay[j], dd->data, sdata, size); mix[remap] = true; } - - outsize = SPA_MAX(outsize, size); - stride = SPA_MAX(stride, ds->chunk->stride); - dd->chunk->offset = 0; - dd->chunk->size = outsize; + dd->chunk->size = size; dd->chunk->stride = stride; } }