graph: new scheduling model

Make explicit links between elements that are used to activate the
next element in the graph.
Make subgraphs a special regular node. Make a link from the
subgraph children to the parent so that the subgraph completes when
all the children completed.
Implement a single process function in plugins
Remove many messages in the client node
This commit is contained in:
Wim Taymans 2018-03-20 11:37:11 +01:00
parent 9b0a880afb
commit 33a322b96e
36 changed files with 401 additions and 750 deletions

View file

@ -35,7 +35,7 @@
#include <spa/param/audio/format-utils.h>
#include <spa/param/format-utils.h>
#include <spa/graph/graph.h>
#include <spa/graph/graph-scheduler1.h>
#include <spa/graph/graph-scheduler2.h>
static SPA_TYPE_MAP_IMPL(default_map, 4096);
static SPA_LOG_IMPL(default_log);
@ -63,6 +63,7 @@ struct data {
int writers;
struct version version;
struct spa_graph graph[2];
struct spa_graph_state graph_state[2];
struct spa_graph_node source_node[2];
struct spa_graph_port source_out[2];
@ -229,8 +230,8 @@ int main(int argc, char *argv[])
struct data data = { NULL };
const char *str;
spa_graph_init(&data.graph[0]);
spa_graph_init(&data.graph[1]);
spa_graph_init(&data.graph[0], &data.graph_state[0]);
spa_graph_init(&data.graph[1], &data.graph_state[1]);
data.map = &default_map.map;
data.log = &default_log.log;