mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-01 22:58:50 -04:00
link: fix param enumeration
When the input port param enumeration has no result, use the NULL filter to still enumerate the output port parameters instead of returning nothing. Fix the offset in the gst element.
This commit is contained in:
parent
263a017c4b
commit
e2c49199f6
2 changed files with 13 additions and 3 deletions
|
|
@ -467,6 +467,7 @@ on_new_buffer (void *_data,
|
|||
GstMemory *mem = gst_buffer_peek_memory (buf, i);
|
||||
mem->offset = SPA_MIN(d->chunk->offset, d->maxsize);
|
||||
mem->size = SPA_MIN(d->chunk->size, d->maxsize - mem->offset);
|
||||
mem->offset += data->offset;
|
||||
}
|
||||
|
||||
if (pwsrc->always_copy)
|
||||
|
|
|
|||
|
|
@ -464,15 +464,22 @@ param_filter(struct pw_link *this,
|
|||
struct spa_pod_builder ib = { 0 };
|
||||
struct spa_pod *oparam, *iparam;
|
||||
uint32_t iidx, oidx, num = 0;
|
||||
int res;
|
||||
|
||||
for (iidx = 0;;) {
|
||||
spa_pod_builder_init(&ib, ibuf, sizeof(ibuf));
|
||||
pw_log_debug("iparam %d", iidx);
|
||||
if (spa_node_port_enum_params(in_port->node->node, in_port->direction, in_port->port_id,
|
||||
id, &iidx, NULL, &iparam, &ib) <= 0)
|
||||
if ((res = spa_node_port_enum_params(in_port->node->node,
|
||||
in_port->direction, in_port->port_id,
|
||||
id, &iidx, NULL, &iparam, &ib)) < 0)
|
||||
break;
|
||||
|
||||
if (pw_log_level_enabled(SPA_LOG_LEVEL_DEBUG))
|
||||
if (res == 0 && num > 0)
|
||||
break;
|
||||
else
|
||||
iparam = NULL;
|
||||
|
||||
if (pw_log_level_enabled(SPA_LOG_LEVEL_DEBUG) && iparam != NULL)
|
||||
spa_debug_pod(iparam, 0);
|
||||
|
||||
for (oidx = 0;;) {
|
||||
|
|
@ -488,6 +495,8 @@ param_filter(struct pw_link *this,
|
|||
|
||||
num++;
|
||||
}
|
||||
if (iparam == NULL && num == 0)
|
||||
break;
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue