Spa Device
-
struct WpSpaDevice
A WpSpaDevice allows running a
spa_device
object locally, loading the implementation from a SPA factory. This is useful to run device monitors inside the session manager and have control over creating the actual nodes that thespa_device
requests to create.To enable the spa device, call wp_object_activate() requesting WP_SPA_DEVICE_FEATURE_ENABLED.
For actual devices (not device monitors) it also possible and desirable to export the device to PipeWire, which can be done by requesting WP_PROXY_FEATURE_BOUND from wp_object_activate(). When exporting, the export should be done before enabling the device, by requesting both features at the same time.
GObject Properties
- properties
-
Properties of the spa device
WpProperties *
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY
- spa-device-handle
-
The spa device handle
gpointer
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY
GObject Signals
- create-object
void create_object_callback (WpSpaDevice * self, guint id, gchar * type, gchar * factory, WpProperties * properties, gpointer user_data)
This signal is emitted when the device is creating a managed object The handler is expected to actually construct the object using the requested SPA factory and with the given properties. The handler should then store the object with wp_spa_device_store_managed_object. The WpSpaDevice will later unref the reference stored by this function when the managed object is to be destroyed.
Parameters:
id
- the id of the managed objecttype
- the SPA type that the managed object should havefactory
- the name of the SPA factory to use to construct the managed objectproperties
- additional properties that the managed object should have
Flags: G_SIGNAL_RUN_FIRST
- object-removed
void object_removed_callback (WpSpaDevice * self, guint id, gpointer user_data)
This signal is emitted when the device has deleted a managed object. The handler may optionally release additional resources associated with this object.
It is not necessary to call wp_spa_device_store_managed_object() to remove the managed object, as this is done internally after this signal is fired.
Parameters:
id
- the id of the managed object
Flags: G_SIGNAL_RUN_FIRST
-
enum WpSpaDeviceFeatures
Flags to be used as WpObjectFeatures for WpSpaDevice.
Values:
-
enumerator WP_SPA_DEVICE_FEATURE_ENABLED = (WP_PROXY_FEATURE_CUSTOM_START << 0)
enables a spa device
-
enumerator WP_SPA_DEVICE_FEATURE_ENABLED = (WP_PROXY_FEATURE_CUSTOM_START << 0)
-
WpSpaDevice *wp_spa_device_new_wrap(WpCore *core, gpointer spa_device_handle, WpProperties *properties)
Constructs an SPA Device object from an existing device handle.
- Parameters
core – the wireplumber core
spa_device_handle – the spa device handle
properties – (nullable) (transfer full): additional properties of the device
- Returns
(transfer full): A new WpSpaDevice
-
WpSpaDevice *wp_spa_device_new_from_spa_factory(WpCore *core, const gchar *factory_name, WpProperties *properties)
Constructs a
SPA_TYPE_INTERFACE_Device
by loading the given SPA factory_name.To export this device to the PipeWire server, you need to call wp_object_activate() requesting WP_PROXY_FEATURE_BOUND and wait for the operation to complete.
- Parameters
core – the wireplumber core
factory_name – the name of the SPA factory
properties – (nullable) (transfer full): properties to be passed to device constructor
- Returns
(nullable) (transfer full): A new WpSpaDevice wrapping the device that was constructed by the factory, or NULL if the factory does not exist or was unable to construct the device
-
WpProperties *wp_spa_device_get_properties(WpSpaDevice *self)
Gets the properties of this device.
- Parameters
self – the spa device
- Returns
(transfer full): the device properties
-
GObject *wp_spa_device_get_managed_object(WpSpaDevice *self, guint id)
Gets one of the objects managed by this device.
- Parameters
self – the spa device
id – the (device-internal) id of the object to get
- Returns
(transfer full): the managed object associated with id
-
void wp_spa_device_store_managed_object(WpSpaDevice *self, guint id, GObject *object)
Stores or removes a managed object into/from a device.
- Parameters
self – the spa device
id – the (device-internal) id of the object
object – (transfer full) (nullable): the object to store or NULL to remove the managed object associated with id
-
WP_TYPE_SPA_DEVICE (wp_spa_device_get_type ())
The WpSpaDevice GType.