mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-07 13:30:09 -05:00
graph: provide in and out counters
Make it possible to have input and output counters to see when a node can be scheduled.
This commit is contained in:
parent
e641914c2f
commit
26e9daf6b7
6 changed files with 42 additions and 38 deletions
|
|
@ -299,7 +299,7 @@ static int driver_process_output(struct spa_node *node)
|
|||
out->outbuf->datas[0].chunk->size = ctrl->buffer_size * sizeof(int16_t) * 2;
|
||||
|
||||
spa_hook_list_call(&nd->listener_list, struct pw_jack_node_events, push);
|
||||
gn->ready_in = gn->required_in;
|
||||
gn->ready[SPA_DIRECTION_INPUT] = gn->required[SPA_DIRECTION_OUTPUT] = 0;
|
||||
|
||||
return SPA_RESULT_HAVE_BUFFER;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -433,11 +433,11 @@ static void handle_rtnode_message(struct pw_proxy *proxy, struct pw_client_node_
|
|||
if (pn->state == SPA_RESULT_HAVE_BUFFER)
|
||||
spa_graph_have_output(data->node->rt.graph, pn);
|
||||
else {
|
||||
pn->ready_in = 0;
|
||||
pn->ready[SPA_DIRECTION_INPUT] = 0;
|
||||
spa_list_for_each(pp, &pn->ports[SPA_DIRECTION_INPUT], link) {
|
||||
if (pp->io->status == SPA_RESULT_OK &&
|
||||
!(pn->flags & SPA_GRAPH_NODE_FLAG_ASYNC))
|
||||
pn->ready_in++;
|
||||
pn->ready[SPA_DIRECTION_INPUT]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -446,8 +446,10 @@ static void handle_rtnode_message(struct pw_proxy *proxy, struct pw_client_node_
|
|||
spa_list_for_each(port, &n->ports[SPA_DIRECTION_OUTPUT], link) {
|
||||
pn = port->peer->node;
|
||||
pn->state = spa_node_process_output(pn->implementation);
|
||||
if (pn->state == SPA_RESULT_NEED_BUFFER)
|
||||
pw_log_trace("node %p: process output %d", pn->implementation, pn->state);
|
||||
if (pn->state == SPA_RESULT_NEED_BUFFER) {
|
||||
spa_graph_need_input(data->node->rt.graph, pn);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (PW_CLIENT_NODE_MESSAGE_TYPE(message) == PW_CLIENT_NODE_MESSAGE_REUSE_BUFFER) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue