mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	Separate various autogen files from the documentation .dox files. Rename .dox files to match the intended tree structure.
		
			
				
	
	
		
			90 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
/** \page page_api PipeWire API
 | 
						|
 | 
						|
The PipeWire API consists of several parts:
 | 
						|
 | 
						|
- The \ref pw_stream for a convenient way to send and receive data streams from/to PipeWire.
 | 
						|
 | 
						|
- The \ref pw_filter for a convenient way to implement processing filters.
 | 
						|
 | 
						|
- The \ref api_pw_core to access a PipeWire instance. This API is used
 | 
						|
by all clients that need to communicate with the \ref page_daemon and provides
 | 
						|
the necessary structs to interface with the daemon.
 | 
						|
 | 
						|
- The \ref api_pw_impl is primarily used by the \ref page_daemon itself but also by the
 | 
						|
\ref page_session_manager and modules/extensions that need to build objects in
 | 
						|
the graph.
 | 
						|
 | 
						|
- The \ref api_pw_util containing various utility functions and structures.
 | 
						|
 | 
						|
- The \ref api_pw_ext for interfacing with certain extension modules.
 | 
						|
 | 
						|
The APIs work through proxy objects, so that calling a method on an object
 | 
						|
invokes that same method on the remote side. Marshalling and de-marshalling is
 | 
						|
handled transparently by the \ref page_module_protocol_native.
 | 
						|
The below graph illustrates this approach:
 | 
						|
 | 
						|
\dot
 | 
						|
digraph API {
 | 
						|
  compound=true;
 | 
						|
  node [shape="box"];
 | 
						|
  rankdir="RL";
 | 
						|
 | 
						|
  subgraph cluster_daemon {
 | 
						|
       rankdir="TB";
 | 
						|
       label="PipeWire daemon";
 | 
						|
       style="dashed";
 | 
						|
 | 
						|
       impl_core [label="Core Impl. Object"];
 | 
						|
       impl_device [label="Device Impl. Object"];
 | 
						|
       impl_node [label="Node Impl. Object"];
 | 
						|
  }
 | 
						|
 | 
						|
  subgraph cluster_client {
 | 
						|
       rankdir="TB";
 | 
						|
       label="PipeWire client";
 | 
						|
       style="dashed";
 | 
						|
 | 
						|
       obj_core [label="Core Object"];
 | 
						|
       obj_device [label="Device Object"];
 | 
						|
       obj_node [label="Node Object"];
 | 
						|
  }
 | 
						|
 | 
						|
  obj_core -> impl_core;
 | 
						|
  obj_device -> impl_device;
 | 
						|
  obj_node -> impl_node;
 | 
						|
 | 
						|
}
 | 
						|
\enddot
 | 
						|
 | 
						|
It is common for clients to use both the \ref api_pw_core and the \ref api_pw_impl
 | 
						|
and both APIs are provided by the same library.
 | 
						|
 | 
						|
- \subpage page_spa
 | 
						|
- \subpage page_client_impl
 | 
						|
- \subpage page_proxy
 | 
						|
- \subpage page_streams
 | 
						|
- \subpage page_thread_loop
 | 
						|
 | 
						|
 | 
						|
\addtogroup api_pw_core Core API
 | 
						|
 | 
						|
The Core API to access a PipeWire instance. This API is used by all
 | 
						|
clients to communicate with the \ref page_daemon.
 | 
						|
 | 
						|
If you are familiar with Wayland implementation, the Core API is
 | 
						|
roughly equivalent to libwayland-client.
 | 
						|
 | 
						|
See: \ref page_api
 | 
						|
 | 
						|
 | 
						|
\addtogroup api_pw_impl Implementation API
 | 
						|
 | 
						|
The implementation API provides the tools to build new objects and
 | 
						|
modules.
 | 
						|
 | 
						|
If you are familiar with Wayland implementation, the Implementation API is
 | 
						|
roughly equivalent to libwayland-server.
 | 
						|
 | 
						|
See: \ref page_api
 | 
						|
 | 
						|
*/
 |