Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-15-SP7:Update
pipewire.16602
0019-buffers-increase-max-datas-and-metadata-in...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0019-buffers-increase-max-datas-and-metadata-in-buffers.patch of Package pipewire.16602
From dfd3bd84b466a03c9e5d31a2944fdd911ae77a8d Mon Sep 17 00:00:00 2001 From: Wim Taymans <wtaymans@redhat.com> Date: Wed, 1 Jul 2020 11:40:13 +0200 Subject: [PATCH] buffers: increase max datas and metadata in buffers --- src/modules/module-client-node/client-node.c | 15 +++++++++------ src/pipewire/buffers.c | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/modules/module-client-node/client-node.c b/src/modules/module-client-node/client-node.c index 4415fab9..c39cee9b 100644 --- a/src/modules/module-client-node/client-node.c +++ b/src/modules/module-client-node/client-node.c @@ -50,6 +50,8 @@ #define MAX_OUTPUTS 64 #define MAX_BUFFERS 64 +#define MAX_METAS 16u +#define MAX_DATAS 64u #define MAX_AREAS 1024 #define MAX_MIX 128 @@ -72,8 +74,8 @@ struct buffer { struct spa_buffer *outbuf; struct spa_buffer buffer; - struct spa_meta metas[4]; - struct spa_data datas[4]; + struct spa_meta metas[MAX_METAS]; + struct spa_data datas[MAX_DATAS]; struct pw_memblock *mem; }; @@ -814,11 +816,12 @@ do_port_use_buffers(struct impl *impl, spa_log_debug(this->log, NAME" %p: buffer %d %d %d %d", this, i, mb[i].mem_id, mb[i].offset, mb[i].size); - for (j = 0; j < buffers[i]->n_metas; j++) + b->buffer.n_metas = SPA_MIN(buffers[i]->n_metas, MAX_METAS); + for (j = 0; j < b->buffer.n_metas; j++) memcpy(&b->buffer.metas[j], &buffers[i]->metas[j], sizeof(struct spa_meta)); - b->buffer.n_metas = j; - for (j = 0; j < buffers[i]->n_datas; j++) { + b->buffer.n_datas = SPA_MIN(buffers[i]->n_datas, MAX_DATAS); + for (j = 0; j < b->buffer.n_datas; j++) { struct spa_data *d = &buffers[i]->datas[j]; memcpy(&b->datas[j], d, sizeof(struct spa_data)); @@ -1070,7 +1073,7 @@ static int client_node_port_buffers(void *data, if (oldbuf->n_datas != newbuf->n_datas) return -EINVAL; - for (j = 0; j < newbuf->n_datas; j++) { + for (j = 0; j < b->buffer.n_datas; j++) { struct spa_chunk *oldchunk = oldbuf->datas[j].chunk; struct spa_data *d = &newbuf->datas[j]; diff --git a/src/pipewire/buffers.c b/src/pipewire/buffers.c index e95dfe38..08bf2236 100644 --- a/src/pipewire/buffers.c +++ b/src/pipewire/buffers.c @@ -39,7 +39,7 @@ #define NAME "buffers" #define MAX_ALIGN 32 -#define MAX_BLOCKS 4u +#define MAX_BLOCKS 64u struct port { struct spa_node *node;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor