mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-01 22:58:50 -04:00
graph: improve API a little
Node allow linking to multiple inputs when there is a mixer.
This commit is contained in:
parent
9ee0cd7d8d
commit
83e65c31ab
6 changed files with 79 additions and 49 deletions
|
|
@ -229,10 +229,9 @@ static void on_sink_need_input(struct spa_node *node, void *user_data)
|
|||
{
|
||||
struct data *data = user_data;
|
||||
|
||||
data->sink_node.action = SPA_GRAPH_ACTION_CHECK;
|
||||
data->sink_node.state = SPA_RESULT_NEED_BUFFER;
|
||||
spa_graph_node_pull(&data->graph, &data->sink_node);
|
||||
|
||||
spa_graph_node_schedule(&data->graph, &data->sink_node);
|
||||
while (spa_graph_node_iterate(&data->graph));
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
#include <spa/format-utils.h>
|
||||
#include <spa/format-builder.h>
|
||||
|
||||
#undef USE_GRAPH
|
||||
#define USE_GRAPH
|
||||
|
||||
static SPA_TYPE_MAP_IMPL(default_map, 4096);
|
||||
static SPA_LOG_IMPL(default_log);
|
||||
|
|
@ -240,10 +240,9 @@ static void on_sink_need_input(struct spa_node *node, void *user_data)
|
|||
{
|
||||
struct data *data = user_data;
|
||||
#ifdef USE_GRAPH
|
||||
data->sink_node.action = PROCESS_CHECK;
|
||||
data->sink_node.state = SPA_RESULT_NEED_BUFFER;
|
||||
spa_graph_node_pull(&data->graph, &data->sink_node);
|
||||
while (spa_graph_node_iterate(&data->graph));
|
||||
|
||||
spa_graph_node_schedule(&data->graph, &data->sink_node);
|
||||
#else
|
||||
int res;
|
||||
|
||||
|
|
|
|||
|
|
@ -223,8 +223,8 @@ static void on_sink_pull(struct data *data)
|
|||
spa_node_process_output(data->source);
|
||||
spa_node_process_input(data->sink);
|
||||
} else {
|
||||
data->sink_node.action = SPA_GRAPH_ACTION_CHECK;
|
||||
spa_graph_node_schedule(&data->graph, &data->sink_node);
|
||||
spa_graph_node_pull(&data->graph, &data->sink_node);
|
||||
while (spa_graph_node_iterate(&data->graph));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -235,8 +235,8 @@ static void on_source_push(struct data *data)
|
|||
spa_node_process_output(data->source);
|
||||
spa_node_process_input(data->sink);
|
||||
} else {
|
||||
data->source_node.action = SPA_GRAPH_ACTION_OUT;
|
||||
spa_graph_node_schedule(&data->graph, &data->source_node);
|
||||
spa_graph_node_push(&data->graph, &data->source_node);
|
||||
while (spa_graph_node_iterate(&data->graph));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue