mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-10-29 05:40:27 -04:00 
			
		
		
		
	Rework node and ports
Rework the node and port API so that other implementations can be used than the spa_node. The plan is to morph this into the stream and context API. Rework the graph API a little so that init + add is separated.
This commit is contained in:
		
							parent
							
								
									b0f5d34cf7
								
							
						
					
					
						commit
						0738f7fcf5
					
				
					 28 changed files with 1585 additions and 857 deletions
				
			
		|  | @ -418,35 +418,37 @@ static int make_nodes(struct data *data, const char *device) | |||
| 	spa_node_port_set_io(data->sink, SPA_DIRECTION_INPUT, 0, &data->mix_sink_io[0]); | ||||
| 
 | ||||
| #ifdef USE_GRAPH | ||||
| 	spa_graph_node_add(&data->graph, &data->source1_node, spa_graph_scheduler_default, | ||||
| 			   data->source1); | ||||
| 	spa_graph_port_add(&data->graph, &data->source1_node, &data->source1_out, | ||||
| 			   SPA_DIRECTION_OUTPUT, 0, 0, &data->source1_mix_io[0]); | ||||
| 	spa_graph_node_init(&data->source1_node, &spa_graph_scheduler_default, data->source1); | ||||
| 	spa_graph_port_init(&data->source1_out, SPA_DIRECTION_OUTPUT, 0, 0, &data->source1_mix_io[0]); | ||||
| 	spa_graph_port_add(&data->source1_node, &data->source1_out); | ||||
| 	spa_graph_node_add(&data->graph, &data->source1_node); | ||||
| 
 | ||||
| 	spa_graph_node_add(&data->graph, &data->source2_node, spa_graph_scheduler_default, | ||||
| 			   data->source2); | ||||
| 	spa_graph_port_add(&data->graph, &data->source2_node, &data->source2_out, | ||||
| 			   SPA_DIRECTION_OUTPUT, 0, 0, &data->source2_mix_io[0]); | ||||
| 	spa_graph_node_init(&data->source2_node, &spa_graph_scheduler_default, data->source2); | ||||
| 	spa_graph_port_init(&data->source2_out, SPA_DIRECTION_OUTPUT, 0, 0, &data->source2_mix_io[0]); | ||||
| 	spa_graph_port_add(&data->source2_node, &data->source2_out); | ||||
| 	spa_graph_node_add(&data->graph, &data->source2_node); | ||||
| 
 | ||||
| 	spa_graph_node_add(&data->graph, &data->mix_node, spa_graph_scheduler_default, | ||||
| 			   data->mix); | ||||
| 	spa_graph_port_add(&data->graph, &data->mix_node, &data->mix_in[0], SPA_DIRECTION_INPUT, | ||||
| 			   data->mix_ports[0], 0, &data->source1_mix_io[0]); | ||||
| 	spa_graph_port_add(&data->graph, &data->mix_node, &data->mix_in[1], SPA_DIRECTION_INPUT, | ||||
| 	spa_graph_node_init(&data->mix_node, &spa_graph_scheduler_default, data->mix); | ||||
| 	spa_graph_port_init(&data->mix_in[0], SPA_DIRECTION_INPUT, | ||||
| 			    data->mix_ports[0], 0, &data->source1_mix_io[0]); | ||||
| 	spa_graph_port_add(&data->mix_node, &data->mix_in[0]); | ||||
| 	spa_graph_port_init(&data->mix_in[1], SPA_DIRECTION_INPUT, | ||||
| 			   data->mix_ports[1], 0, &data->source2_mix_io[0]); | ||||
| 	spa_graph_port_add(&data->mix_node, &data->mix_in[1]); | ||||
| 	spa_graph_node_add(&data->graph, &data->mix_node); | ||||
| 
 | ||||
| 	spa_graph_port_link(&data->graph, &data->source1_out, &data->mix_in[0]); | ||||
| 	spa_graph_port_link(&data->graph, &data->source2_out, &data->mix_in[1]); | ||||
| 	spa_graph_port_link(&data->source1_out, &data->mix_in[0]); | ||||
| 	spa_graph_port_link(&data->source2_out, &data->mix_in[1]); | ||||
| 
 | ||||
| 	spa_graph_port_add(&data->graph, &data->mix_node, | ||||
| 			   &data->mix_out, SPA_DIRECTION_OUTPUT, 0, 0, &data->mix_sink_io[0]); | ||||
| 	spa_graph_port_init(&data->mix_out, SPA_DIRECTION_OUTPUT, 0, 0, &data->mix_sink_io[0]); | ||||
| 	spa_graph_port_add(&data->mix_node, &data->mix_out); | ||||
| 
 | ||||
| 	spa_graph_node_add(&data->graph, &data->sink_node, spa_graph_scheduler_default, | ||||
| 			   data->sink); | ||||
| 	spa_graph_port_add(&data->graph, &data->sink_node, &data->sink_in, SPA_DIRECTION_INPUT, 0, | ||||
| 			   0, &data->mix_sink_io[0]); | ||||
| 	spa_graph_node_init(&data->sink_node, &spa_graph_scheduler_default, data->sink); | ||||
| 	spa_graph_port_init(&data->sink_in, SPA_DIRECTION_INPUT, 0, 0, &data->mix_sink_io[0]); | ||||
| 	spa_graph_port_add(&data->sink_node, &data->sink_in); | ||||
| 	spa_graph_node_add(&data->graph, &data->sink_node); | ||||
| 
 | ||||
| 	spa_graph_port_link(&data->graph, &data->mix_out, &data->sink_in); | ||||
| 	spa_graph_port_link(&data->mix_out, &data->sink_in); | ||||
| #endif | ||||
| 
 | ||||
| 	return res; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Wim Taymans
						Wim Taymans