.TH "libpipewire-module-client-node" 7 "1.6.4" "PipeWire" \" -*- nroff -*-
.ad l
.nh
.SH NAME
libpipewire-module-client-node \- Client Node 
.SH DESCRIPTION
.PP
Allow clients to export processing nodes to the PipeWire daemon\&.

.PP
This module creates 2 export types, one for the \fBPW_TYPE_INTERFACE_Node\fP and another for the \fBSPA_TYPE_INTERFACE_Node\fP interfaces\&.

.PP
With \fBpw_core_export()\fP, objects of these types can be exported to the PipeWire server\&. All actions performed on the node locally will be visible to connecteced clients and scheduling of the Node will be performed\&.

.PP
Objects of the \fBPW_TYPE_INTERFACE_Node\fP interface can be made with \fBpw_context_create_node()\fP, for example\&. You would manually need to create and add an object of the \fBSPA_TYPE_INTERFACE_Node\fP interface\&. Exporting a \fBSPA_TYPE_INTERFACE_Node\fP directly will first wrap it in a \fBPW_TYPE_INTERFACE_Node\fP interface\&.

.PP
Usually this module is not used directly but through the \fBStream\fP and \fBFilter\fP APIs, which provides API to implement the \fBSPA_TYPE_INTERFACE_Node\fP interface\&.

.PP
In some cases, it is possible to use this factory directly (the PipeWire JACK implementation does this)\&. With \fBpw_core_create_object()\fP on the \fRclient-node\fP factory will result in a \fBPW_TYPE_INTERFACE_ClientNode\fP proxy that can be used to control the server side created \fBNode Impl\fP\&.

.PP
Schematically, the client side \fBNode Impl\fP is wrapped in the ClientNode proxy and unwrapped by the server side resource so that all actions on the client side node are reflected on the server side node and server side actions are reflected in the client\&.

.PP
.PP
.nf
  client side proxy                            server side resource
\&.\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\&.            \&.\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\&.
| PW_TYPE_INTERFACE_ClientNode |            |  PW_TYPE_INTERFACE_Node          |
|\&.\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\&.|  IPC       |\&.\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\&.|
|| PW_TYPE_INTERFACE_Node     || \-\-\-\-\->     || SPA_TYPE_INTERFACE_Node        ||
||\&.\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\&.||            ||\&.\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\&.||
||| SPA_TYPE_INTERFACE_Node  |||            ||| PW_TYPE_INTERFACE_ClientNode |||
|||                          |||            |||                              |||
||'\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-'||            ||'\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-'||
|'\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-'|            |'\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-'|
'\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-'            '\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-'
.fi
.PP

.PP
.SH "MODULE NAME"
.PP

.PP
\fRlibpipewire-module-client-node\fP

.PP
.SH "MODULE OPTIONS"
.PP

.PP
This module has no options\&.

.PP
.SH "PROPERTIES FOR THE CREATE_OBJECT CALL"
.PP

.PP
All properties are passed directly to the \fBpw_context_create_node()\fP call\&.

.PP
.SH "EXAMPLE CONFIGURATION"
.PP

.PP
The module is usually added to the config file of the main PipeWire daemon and the clients\&.

.PP
.PP
.nf
context\&.modules = [
{ name = libpipewire\-module\-client\-node }
]
.fi
.PP

.PP
.SH "SEE ALSO"
.PP

.PP
.IP "\(bu" 2
\fRmodule-spa-node-factory\fP: make nodes from a factory 
.PP


