PipeWire  0.3.36
The PipeWire Core Global Object

The core global object. More...

Data Structures

struct  pw_core_info
 The core information. More...
 
struct  pw_core_events
 Core events. More...
 
struct  pw_core_methods
 Core methods. More...
 

Macros

#define PW_TYPE_INTERFACE_Core   PW_TYPE_INFO_INTERFACE_BASE "Core"
 
#define PW_TYPE_INTERFACE_Registry   PW_TYPE_INFO_INTERFACE_BASE "Registry"
 
#define PW_VERSION_CORE   3
 
#define PW_VERSION_REGISTRY   3
 
#define PW_DEFAULT_REMOTE   "pipewire-0"
 The default remote name to connect to. More...
 
#define PW_ID_CORE   0
 default ID for the core object after connect More...
 
#define PW_ID_ANY   (uint32_t)(0xffffffff)
 
#define PW_CORE_EVENT_INFO   0
 Core. More...
 
#define PW_CORE_EVENT_DONE   1
 
#define PW_CORE_EVENT_PING   2
 
#define PW_CORE_EVENT_ERROR   3
 
#define PW_CORE_EVENT_REMOVE_ID   4
 
#define PW_CORE_EVENT_BOUND_ID   5
 
#define PW_CORE_EVENT_ADD_MEM   6
 
#define PW_CORE_EVENT_REMOVE_MEM   7
 
#define PW_CORE_EVENT_NUM   8
 
#define PW_CORE_METHOD_ADD_LISTENER   0
 
#define PW_CORE_METHOD_HELLO   1
 
#define PW_CORE_METHOD_SYNC   2
 
#define PW_CORE_METHOD_PONG   3
 
#define PW_CORE_METHOD_ERROR   4
 
#define PW_CORE_METHOD_GET_REGISTRY   5
 
#define PW_CORE_METHOD_CREATE_OBJECT   6
 
#define PW_CORE_METHOD_DESTROY   7
 
#define PW_CORE_METHOD_NUM   8
 
#define pw_core_method(o, method, version, ...)
 
#define pw_core_add_listener(c, ...)   pw_core_method(c,add_listener,0,__VA_ARGS__)
 
#define pw_core_hello(c, ...)   pw_core_method(c,hello,0,__VA_ARGS__)
 
#define pw_core_sync(c, ...)   pw_core_method(c,sync,0,__VA_ARGS__)
 
#define pw_core_pong(c, ...)   pw_core_method(c,pong,0,__VA_ARGS__)
 
#define pw_core_error(c, ...)   pw_core_method(c,error,0,__VA_ARGS__)
 
#define pw_core_destroy(c, ...)   pw_core_method(c,destroy,0,__VA_ARGS__)
 

Functions

struct pw_core_infopw_core_info_update (struct pw_core_info *info, const struct pw_core_info *update)
 Update an existing pw_core_info with update with reset. More...
 
struct pw_core_infopw_core_info_merge (struct pw_core_info *info, const struct pw_core_info *update, bool reset)
 Update an existing pw_core_info with update. More...
 
void pw_core_info_free (struct pw_core_info *info)
 Free a pw_core_info
More...
 
struct pw_core * pw_context_connect (struct pw_context *context, struct pw_properties *properties, size_t user_data_size)
 Connect to a PipeWire instance. More...
 
struct pw_core * pw_context_connect_fd (struct pw_context *context, int fd, struct pw_properties *properties, size_t user_data_size)
 Connect to a PipeWire instance on the given socket. More...
 
struct pw_core * pw_context_connect_self (struct pw_context *context, struct pw_properties *properties, size_t user_data_size)
 Connect to a given PipeWire instance. More...
 
int pw_core_steal_fd (struct pw_core *core)
 Steal the fd of the core connection or < 0 on error. More...
 
int pw_core_set_paused (struct pw_core *core, bool paused)
 Pause or resume the core. More...
 
int pw_core_disconnect (struct pw_core *core)
 disconnect and destroy a core More...
 
void * pw_core_get_user_data (struct pw_core *core)
 Get the user_data. More...
 
struct pw_client * pw_core_get_client (struct pw_core *core)
 Get the client proxy of the connected core. More...
 
struct pw_context * pw_core_get_context (struct pw_core *core)
 Get the context object used to created this core. More...
 
const struct pw_propertiespw_core_get_properties (struct pw_core *core)
 Get properties from the core. More...
 
int pw_core_update_properties (struct pw_core *core, const struct spa_dict *dict)
 Update the core properties. More...
 
struct pw_mempoolpw_core_get_mempool (struct pw_core *core)
 Get the core mempool object. More...
 
struct pw_proxy * pw_core_find_proxy (struct pw_core *core, uint32_t id)
 Get the proxy with the given id. More...
 
struct pw_proxy * pw_core_export (struct pw_core *core, const char *type, const struct spa_dict *props, void *object, size_t user_data_size)
 Export an object into the PipeWire instance associated with core. More...
 

Detailed Description

The core global object.

This is a special singleton object. It is used for internal PipeWire protocol features. Connecting to a PipeWire instance returns one core object, the caller should then register event listeners using pw_core_add_listener.

Updates to the core object are then provided through the pw_core_events interface. See Tutorial - Part 2: Enumerating objects for an example.

Macro Definition Documentation

◆ pw_core_add_listener

#define pw_core_add_listener (   c,
  ... 
)    pw_core_method(c,add_listener,0,__VA_ARGS__)

◆ pw_core_destroy

#define pw_core_destroy (   c,
  ... 
)    pw_core_method(c,destroy,0,__VA_ARGS__)

◆ pw_core_error

#define pw_core_error (   c,
  ... 
)    pw_core_method(c,error,0,__VA_ARGS__)

◆ PW_CORE_EVENT_ADD_MEM

#define PW_CORE_EVENT_ADD_MEM   6

◆ PW_CORE_EVENT_BOUND_ID

#define PW_CORE_EVENT_BOUND_ID   5

◆ PW_CORE_EVENT_DONE

#define PW_CORE_EVENT_DONE   1

◆ PW_CORE_EVENT_ERROR

#define PW_CORE_EVENT_ERROR   3

◆ PW_CORE_EVENT_INFO

#define PW_CORE_EVENT_INFO   0

Core.

◆ PW_CORE_EVENT_NUM

#define PW_CORE_EVENT_NUM   8

◆ PW_CORE_EVENT_PING

#define PW_CORE_EVENT_PING   2

◆ PW_CORE_EVENT_REMOVE_ID

#define PW_CORE_EVENT_REMOVE_ID   4

◆ PW_CORE_EVENT_REMOVE_MEM

#define PW_CORE_EVENT_REMOVE_MEM   7

◆ pw_core_hello

#define pw_core_hello (   c,
  ... 
)    pw_core_method(c,hello,0,__VA_ARGS__)

◆ pw_core_method

#define pw_core_method (   o,
  method,
  version,
  ... 
)
Value:
({ \
int _res = -ENOTSUP; \
spa_interface_call_res((struct spa_interface*)o, \
struct pw_core_methods, _res, \
method, version, ##__VA_ARGS__); \
_res; \
})
Core methods.
Definition: core.h:232
Definition: hook.h:146

◆ PW_CORE_METHOD_ADD_LISTENER

#define PW_CORE_METHOD_ADD_LISTENER   0

◆ PW_CORE_METHOD_CREATE_OBJECT

#define PW_CORE_METHOD_CREATE_OBJECT   6

◆ PW_CORE_METHOD_DESTROY

#define PW_CORE_METHOD_DESTROY   7

◆ PW_CORE_METHOD_ERROR

#define PW_CORE_METHOD_ERROR   4

◆ PW_CORE_METHOD_GET_REGISTRY

#define PW_CORE_METHOD_GET_REGISTRY   5

◆ PW_CORE_METHOD_HELLO

#define PW_CORE_METHOD_HELLO   1

◆ PW_CORE_METHOD_NUM

#define PW_CORE_METHOD_NUM   8

◆ PW_CORE_METHOD_PONG

#define PW_CORE_METHOD_PONG   3

◆ PW_CORE_METHOD_SYNC

#define PW_CORE_METHOD_SYNC   2

◆ pw_core_pong

#define pw_core_pong (   c,
  ... 
)    pw_core_method(c,pong,0,__VA_ARGS__)

◆ pw_core_sync

#define pw_core_sync (   c,
  ... 
)    pw_core_method(c,sync,0,__VA_ARGS__)

◆ PW_DEFAULT_REMOTE

#define PW_DEFAULT_REMOTE   "pipewire-0"

The default remote name to connect to.

◆ PW_ID_ANY

#define PW_ID_ANY   (uint32_t)(0xffffffff)

◆ PW_ID_CORE

#define PW_ID_CORE   0

default ID for the core object after connect

◆ PW_TYPE_INTERFACE_Core

#define PW_TYPE_INTERFACE_Core   PW_TYPE_INFO_INTERFACE_BASE "Core"

◆ PW_TYPE_INTERFACE_Registry

#define PW_TYPE_INTERFACE_Registry   PW_TYPE_INFO_INTERFACE_BASE "Registry"

◆ PW_VERSION_CORE

#define PW_VERSION_CORE   3

◆ PW_VERSION_REGISTRY

#define PW_VERSION_REGISTRY   3

Function Documentation

◆ pw_context_connect()

struct pw_core* pw_context_connect ( struct pw_context *  context,
struct pw_properties properties,
size_t  user_data_size 
)

Connect to a PipeWire instance.

Parameters
contexta PipeWire Context
propertiesoptional properties, ownership of the properties is taken.
user_data_sizeextra user data size
Returns
a The PipeWire Core Global Object on success or NULL with errno set on error. The core will have an id of PW_ID_CORE (0)

Referenced by pw_context_connect_self().

◆ pw_context_connect_fd()

struct pw_core* pw_context_connect_fd ( struct pw_context *  context,
int  fd,
struct pw_properties properties,
size_t  user_data_size 
)

Connect to a PipeWire instance on the given socket.

Parameters
contexta PipeWire Context
fdthe connected socket to use, the socket will be closed automatically on disconnect or error.
propertiesoptional properties, ownership of the properties is taken.
user_data_sizeextra user data size
Returns
a The PipeWire Core Global Object on success or NULL with errno set on error

◆ pw_context_connect_self()

struct pw_core* pw_context_connect_self ( struct pw_context *  context,
struct pw_properties properties,
size_t  user_data_size 
)

Connect to a given PipeWire instance.

Parameters
contexta PipeWire Context to connect to
propertiesoptional properties, ownership of the properties is taken.
user_data_sizeextra user data size
Returns
a The PipeWire Core Global Object on success or NULL with errno set on error

References pw_context_connect(), PW_KEY_REMOTE_NAME, pw_properties_new(), and pw_properties_set().

◆ pw_core_disconnect()

int pw_core_disconnect ( struct pw_core *  core)

disconnect and destroy a core

References NAME, pw_log_debug, pw_proxy_destroy(), and pw_proxy_remove().

Referenced by pw_context_destroy(), pw_filter_disconnect(), and pw_stream_disconnect().

◆ pw_core_export()

struct pw_proxy* pw_core_export ( struct pw_core *  core,
const char *  type,
const struct spa_dict props,
void *  object,
size_t  user_data_size 
)

Export an object into the PipeWire instance associated with core.

Parameters
corethe core
typethe type of object
propsextra properties
objectobject to export
user_data_sizeextra user data

References pw_export_type::func, NAME, props, pw_context_find_export_type(), pw_log_debug, pw_log_error, spa_strerror, and pw_export_type::type.

Referenced by sm_media_session_export(), sm_media_session_export_device(), and sm_media_session_export_node().

◆ pw_core_find_proxy()

struct pw_proxy* pw_core_find_proxy ( struct pw_core *  core,
uint32_t  id 
)

Get the proxy with the given id.

◆ pw_core_get_client()

struct pw_client* pw_core_get_client ( struct pw_core *  core)

Get the client proxy of the connected core.

This will have the id of PW_ID_CLIENT (1)

◆ pw_core_get_context()

struct pw_context* pw_core_get_context ( struct pw_core *  core)

Get the context object used to created this core.

◆ pw_core_get_mempool()

struct pw_mempool* pw_core_get_mempool ( struct pw_core *  core)

Get the core mempool object.

◆ pw_core_get_properties()

const struct pw_properties* pw_core_get_properties ( struct pw_core *  core)

Get properties from the core.

◆ pw_core_get_user_data()

void* pw_core_get_user_data ( struct pw_core *  core)

Get the user_data.

It is of the size specified when this object was constructed

◆ pw_core_info_free()

◆ pw_core_info_merge()

struct pw_core_info* pw_core_info_merge ( struct pw_core_info info,
const struct pw_core_info update,
bool  reset 
)

◆ pw_core_info_update()

struct pw_core_info* pw_core_info_update ( struct pw_core_info info,
const struct pw_core_info update 
)

Update an existing pw_core_info with update with reset.

References pw_core_info_merge().

◆ pw_core_set_paused()

int pw_core_set_paused ( struct pw_core *  core,
bool  paused 
)

Pause or resume the core.

When the core is paused, no new events will be dispatched until the core is resumed again.

References NAME, pw_log_debug, and pw_protocol_client_set_paused.

◆ pw_core_steal_fd()

int pw_core_steal_fd ( struct pw_core *  core)

Steal the fd of the core connection or < 0 on error.

The core will be disconnected after this call.

References NAME, pw_log_debug, and pw_protocol_client_steal_fd.

◆ pw_core_update_properties()

int pw_core_update_properties ( struct pw_core *  core,
const struct spa_dict dict 
)

Update the core properties.

This updates the properties of the associated client.

Returns
the number of properties that were updated

References pw_properties::dict, NAME, pw_client_update_properties, pw_log_debug, and pw_properties_update().