PipeWire Object
-
struct WpPipewireObject
An interface for standard PipeWire objects.
The common characteristic of all objects that implement this interface is the presence of an “info” structure that contains additional properties for this object (in the form of a spa_dict / pw_properties) and optionally also some parameters that can be enumerated and set on the object.
GObject Properties
- properties
-
The properties of the pipewire object
WpProperties *
G_PARAM_READABLE
- param-info
-
The param info of the object
GVariant * (a{ss})
G_PARAM_READABLE
- native-info
-
The native info structure
gpointer
G_PARAM_READABLE
GObject Signals
- params-changed
params_changed_callback (WpPipewireObject * self, const gchar *id, gpointer user_data)
Emitted when the params for id have changed. On proxies that cache params from a remote object, this is emitted after the cached values have changed.
You can expect this to be emitted only when the relevant WP_PIPEWIRE_OBJECT_FEATURE_PARAM_* has been activated.
Parameters:
id
- the parameter id as a string (ex “Props”, “EnumRoute”)
Flags: G_SIGNAL_RUN_FIRST
-
struct _WpPipewireObjectInterface
Public Members
-
GTypeInterface parent_iface
-
gconstpointer (*get_native_info)(WpPipewireObject *self)
-
WpProperties *(*get_properties)(WpPipewireObject *self)
-
GVariant *(*get_param_info)(WpPipewireObject *self)
-
void (*enum_params)(WpPipewireObject *self, const gchar *id, WpSpaPod *filter, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
-
WpIterator *(*enum_params_finish)(WpPipewireObject *self, GAsyncResult *res, GError **error)
-
WpIterator *(*enum_params_sync)(WpPipewireObject *self, const gchar *id, WpSpaPod *filter)
-
gboolean (*set_param)(WpPipewireObject *self, const gchar *id, guint32 flags, WpSpaPod *param)
-
GTypeInterface parent_iface
-
gconstpointer wp_pipewire_object_get_native_info(WpPipewireObject *self)
Retrieves the native infor structure of this object (pw_node_info, pw_port_info, etc…)
Remark
Requires WP_PIPEWIRE_OBJECT_FEATURE_INFO
- Parameters:
self – the pipewire object
- Returns:
(nullable): the native pipewire info structure of this object
-
WpProperties *wp_pipewire_object_get_properties(WpPipewireObject *self)
Retrieves the PipeWire properties of this object.
Remark
Requires WP_PIPEWIRE_OBJECT_FEATURE_INFO
- Parameters:
self – the pipewire object
- Returns:
(transfer full): the pipewire properties of this object; normally these are the properties that are part of the info structure
-
WpIterator *wp_pipewire_object_new_properties_iterator(WpPipewireObject *self)
Iterates over the object’s PipeWire properties.
Remark
Requires WP_PIPEWIRE_OBJECT_FEATURE_INFO
- Parameters:
self – the pipewire object
- Returns:
(transfer full): an iterator that iterates over the pipewire properties of this object. Use wp_properties_iterator_item_get_key() and wp_properties_iterator_item_get_value() to parse the items returned by this iterator.
-
const gchar *wp_pipewire_object_get_property(WpPipewireObject *self, const gchar *key)
Returns the value of a single pipewire property.
This is the same as getting the whole properties structure with wp_pipewire_object_get_properties() and accessing a single property with wp_properties_get(), but saves one call and having to clean up the WpProperties reference count afterwards.
The value is owned by the proxy, but it is guaranteed to stay alive until execution returns back to the event loop.
Remark
Requires WP_PIPEWIRE_OBJECT_FEATURE_INFO
- Parameters:
self – the pipewire object
key – the property name
- Returns:
(transfer none) (nullable): the value of the pipewire property key or NULL if the property doesn’t exist
-
GVariant *wp_pipewire_object_get_param_info(WpPipewireObject *self)
Returns the available parameters of this pipewire object.
The return value is a GVariant of type
a{ss}
, where the key of each map entry is a spa param type id (the same ids that you can pass in wp_pipewire_object_enum_params()) and the value is a string that can contain the following letters, each of them representing a flag:r
: the param is readable (SPA_PARAM_INFO_READ
)w
: the param is writable (SPA_PARAM_INFO_WRITE
)
For params that are readable, you can query them with wp_pipewire_object_enum_params()
Params that are writable can be set with wp_pipewire_object_set_param()
Remark
Requires WP_PIPEWIRE_OBJECT_FEATURE_INFO
- Parameters:
self – the pipewire object
- Returns:
(transfer full) (nullable): a variant of type
a{ss}
or NULL if the object does not support params at all
-
void wp_pipewire_object_enum_params(WpPipewireObject *self, const gchar *id, WpSpaPod *filter, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
Enumerate object parameters.
This will asynchronously return the result, or an error, by calling the given callback. The result is going to be a WpIterator containing WpSpaPod objects, which can be retrieved with wp_pipewire_object_enum_params_finish().
- Parameters:
self – the pipewire object
id – (nullable): the parameter id to enumerate or NULL for all parameters
filter – (nullable): a param filter or NULL
cancellable – (nullable): a cancellable for the async operation
callback – (scope async): a callback to call with the result
user_data – (closure): data to pass to callback
-
WpIterator *wp_pipewire_object_enum_params_finish(WpPipewireObject *self, GAsyncResult *res, GError **error)
Finishes an asynchronous parameter enumeration operation.
- Parameters:
self – the pipewire object
res – the async result
error – (out) (optional): the reported error of the operation, if any
- Returns:
(transfer full) (nullable): an iterator to iterate over the collected params, or NULL if the operation resulted in error; the items in the iterator are WpSpaPod
-
WpIterator *wp_pipewire_object_enum_params_sync(WpPipewireObject *self, const gchar *id, WpSpaPod *filter)
This method can be used to retrieve object parameters in a synchronous way (in contrast with wp_pipewire_object_enum_params(), which is async).
The
WP_PIPEWIRE_OBJECT_FEATURE_PARAM_<something>
feature that corresponds to the specified id must have been activated earlier. These features enable monitoring and caching of params underneath, so that they are always available for retrieval with this method.Note, however, that cached params may be out-of-date if they have changed very recently on the remote object and the caching mechanism hasn’t been able to update them yet, so if you really need up-to-date information you should only rely on wp_pipewire_object_enum_params() instead.
- Parameters:
self – the pipewire object
id – the parameter id to enumerate
filter – (nullable): a param filter or NULL
- Returns:
(transfer full) (nullable): an iterator to iterate over cached parameters, or NULL if parameters for this id are not cached; the items in the iterator are WpSpaPod
-
gboolean wp_pipewire_object_set_param(WpPipewireObject *self, const gchar *id, guint32 flags, WpSpaPod *param)
Sets a parameter on the object.
- Parameters:
self – the pipewire object
id – the parameter id to set
flags – optional flags or 0
param – (transfer full): the parameter to set
- Returns:
TRUE on success, FALSE if setting the param failed
-
WP_TYPE_PIPEWIRE_OBJECT (wp_pipewire_object_get_type ())
The WpPipewireObject GType.