From b2bb2fe028f5966b40d834bcdd6a99290327bf11 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 13 Jul 2022 16:45:57 +0200 Subject: [PATCH] filter-chain: be more carefull with buffer sizes Take the min of the input buffer size as the output size. Make sure we don't process more than the output buffer maxsize as well. --- src/modules/module-filter-chain.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/modules/module-filter-chain.c b/src/modules/module-filter-chain.c index 5031aee7c..c4ba83fc8 100644 --- a/src/modules/module-filter-chain.c +++ b/src/modules/module-filter-chain.c @@ -613,16 +613,20 @@ static void capture_process(void *d) port->desc->connect_port(port->hndl, port->port, SPA_PTROFF(ds->data, offs, void)); - outsize = SPA_MAX(outsize, size); + outsize = i == 0 ? size : SPA_MIN(outsize, size); stride = SPA_MAX(stride, ds->chunk->stride); } for (i = 0; i < out->buffer->n_datas; i++) { struct spa_data *dd = &out->buffer->datas[i]; struct graph_port *port = &graph->output[i]; + + outsize = SPA_MIN(outsize, dd->maxsize); + if (port->desc) port->desc->connect_port(port->hndl, port->port, dd->data); else memset(dd->data, 0, outsize); + dd->chunk->offset = 0; dd->chunk->size = outsize; dd->chunk->stride = stride;