mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-01 22:58:50 -04:00
client-stream: fix capture case
Setup the processing order differently for capture, we first want to schedule the converters and then the client-node.
This commit is contained in:
parent
91a10d7c9e
commit
a198943b1a
1 changed files with 25 additions and 15 deletions
|
|
@ -839,21 +839,6 @@ static void client_node_initialized(void *data)
|
|||
pw_log_debug("client-stream %p: initialized", &impl->this);
|
||||
|
||||
impl->cnode = pw_node_get_implementation(impl->client_node->node);
|
||||
props = pw_node_get_properties(impl->client_node->node);
|
||||
if (props != NULL && (str = pw_properties_get(props, PW_NODE_PROP_EXCLUSIVE)) != NULL)
|
||||
exclusive = pw_properties_parse_bool(str);
|
||||
else
|
||||
exclusive = false;
|
||||
|
||||
spa_graph_node_remove(&impl->client_node->node->rt.root);
|
||||
spa_graph_node_add(impl->this.node->rt.node.graph, &impl->client_node->node->rt.root);
|
||||
|
||||
spa_graph_link_add(&impl->client_node->node->rt.root,
|
||||
impl->this.node->rt.node.state,
|
||||
&impl->rt.link);
|
||||
impl->rt.link.signal = spa_graph_link_signal_node;
|
||||
impl->rt.link.signal_data = &impl->this.node->rt.node;
|
||||
impl->client_node->node->rt.driver = impl->this.node->rt.driver;
|
||||
|
||||
if ((res = spa_node_get_n_ports(impl->cnode,
|
||||
&n_input_ports,
|
||||
|
|
@ -867,6 +852,31 @@ static void client_node_initialized(void *data)
|
|||
else
|
||||
impl->direction = SPA_DIRECTION_OUTPUT;
|
||||
|
||||
props = pw_node_get_properties(impl->client_node->node);
|
||||
if (props != NULL && (str = pw_properties_get(props, PW_NODE_PROP_EXCLUSIVE)) != NULL)
|
||||
exclusive = pw_properties_parse_bool(str);
|
||||
else
|
||||
exclusive = false;
|
||||
|
||||
spa_graph_node_remove(&impl->client_node->node->rt.root);
|
||||
spa_graph_node_add(impl->this.node->rt.node.graph, &impl->client_node->node->rt.root);
|
||||
|
||||
if (impl->direction == SPA_DIRECTION_OUTPUT) {
|
||||
spa_graph_link_add(&impl->client_node->node->rt.root,
|
||||
impl->this.node->rt.node.state,
|
||||
&impl->rt.link);
|
||||
impl->rt.link.signal_data = &impl->this.node->rt.node;
|
||||
}
|
||||
else {
|
||||
spa_graph_link_add(&impl->this.node->rt.node,
|
||||
impl->client_node->node->rt.node.state,
|
||||
&impl->rt.link);
|
||||
impl->rt.link.signal_data = &impl->client_node->node->rt.node;
|
||||
}
|
||||
impl->rt.link.signal = spa_graph_link_signal_node;
|
||||
|
||||
impl->client_node->node->rt.driver = impl->this.node->rt.driver;
|
||||
|
||||
impl->client_port = pw_node_find_port(impl->client_node->node, impl->direction, 0);
|
||||
if (impl->client_port == NULL)
|
||||
return;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue