graph: improve API a little

Node allow linking to multiple inputs when there is a mixer.
This commit is contained in:
Wim Taymans 2017-06-29 09:31:50 +02:00
parent 9ee0cd7d8d
commit 83e65c31ab
6 changed files with 79 additions and 49 deletions

View file

@ -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

View file

@ -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;

View file

@ -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));
}
}