PipeWire  0.3.34
PipeWire Context

The PipeWire context object manages all locally available resources. More...

Data Structures

struct  pw_context_events
 context events emitted by the context object added with pw_context_add_listener More...
 
struct  pw_export_type
 data for registering export functions More...
 

Functions

struct pw_context * pw_context_new (struct pw_loop *main_loop, struct pw_properties *props, size_t user_data_size)
 Make a new context object for a given main_loop. More...
 
void pw_context_destroy (struct pw_context *context)
 destroy a context object, all resources except the main_loop will be destroyed More...
 
void * pw_context_get_user_data (struct pw_context *context)
 Get the context user data. More...
 
void pw_context_add_listener (struct pw_context *context, struct spa_hook *listener, const struct pw_context_events *events, void *data)
 Add a new event listener to a context. More...
 
const struct pw_propertiespw_context_get_properties (struct pw_context *context)
 Get the context properties. More...
 
int pw_context_update_properties (struct pw_context *context, const struct spa_dict *dict)
 Update the context properties. More...
 
const char * pw_context_get_conf_section (struct pw_context *context, const char *section)
 Get a config section for this context. More...
 
const struct spa_supportpw_context_get_support (struct pw_context *context, uint32_t *n_support)
 Get the context support objects. More...
 
struct pw_looppw_context_get_main_loop (struct pw_context *context)
 get the context main loop More...
 
struct pw_work_queue * pw_context_get_work_queue (struct pw_context *context)
 Get the work queue from the context: Since 0.3.26. More...
 
int pw_context_for_each_global (struct pw_context *context, int(*callback)(void *data, struct pw_global *global), void *data)
 Iterate the globals of the context. More...
 
struct pw_global * pw_context_find_global (struct pw_context *context, uint32_t id)
 Find a context global by id. More...
 
int pw_context_add_spa_lib (struct pw_context *context, const char *factory_regex, const char *lib)
 add a spa library for the given factory_name regex More...
 
const char * pw_context_find_spa_lib (struct pw_context *context, const char *factory_name)
 find the library name for a spa factory More...
 
struct spa_handlepw_context_load_spa_handle (struct pw_context *context, const char *factory_name, const struct spa_dict *info)
 
int pw_context_register_export_type (struct pw_context *context, struct pw_export_type *type)
 register a type that can be exported on a context_proxy. More...
 
const struct pw_export_typepw_context_find_export_type (struct pw_context *context, const char *type)
 find information about registered export type More...
 
int pw_context_set_object (struct pw_context *context, const char *type, void *value)
 add an object to the context More...
 
void * pw_context_get_object (struct pw_context *context, const char *type)
 get an object from the context More...
 
struct pw_impl_factory * pw_context_find_factory (struct pw_context *context, const char *name)
 Find a factory by name. More...
 

Detailed Description

The PipeWire context object manages all locally available resources.

It is used by both clients and servers.

The context is used to:

Function Documentation

◆ pw_context_add_listener()

void pw_context_add_listener ( struct pw_context *  context,
struct spa_hook listener,
const struct pw_context_events events,
void *  data 
)

Add a new event listener to a context.

References spa_hook_list_append().

Referenced by pipewire__module_init().

◆ pw_context_add_spa_lib()

int pw_context_add_spa_lib ( struct pw_context *  context,
const char *  factory_regex,
const char *  lib 
)

add a spa library for the given factory_name regex

◆ pw_context_destroy()

void pw_context_destroy ( struct pw_context *  context)

◆ pw_context_find_export_type()

const struct pw_export_type* pw_context_find_export_type ( struct pw_context *  context,
const char *  type 
)

find information about registered export type

References spa_list_for_each, spa_streq(), and pw_export_type::type.

Referenced by pw_context_register_export_type(), and pw_core_export().

◆ pw_context_find_factory()

struct pw_impl_factory* pw_context_find_factory ( struct pw_context *  context,
const char *  name 
)

Find a factory by name.

Parameters
contextthe context object
namethe name of the factory to find

Find in the list of factories registered in context for one with the given name.

Parameters
contextthe context
namethe factory name

References name, spa_list_for_each, and spa_streq().

◆ pw_context_find_global()

struct pw_global* pw_context_find_global ( struct pw_context *  context,
uint32_t  id 
)

Find a context global by id.

Parameters
contextthe context
idthe global id

Referenced by pw_impl_client_check_permissions(), and pw_impl_client_update_permissions().

◆ pw_context_find_spa_lib()

const char* pw_context_find_spa_lib ( struct pw_context *  context,
const char *  factory_name 
)

find the library name for a spa factory

References pw_array_for_each.

Referenced by pw_context_load_spa_handle().

◆ pw_context_for_each_global()

int pw_context_for_each_global ( struct pw_context *  context,
int(*)(void *data, struct pw_global *global)  callback,
void *  data 
)

Iterate the globals of the context.

The callback should return 0 to fetch the next item, any other value stops the iteration and returns the value. When all callbacks return 0, this function returns 0 when all globals are iterated.

References spa_list_for_each_safe.

◆ pw_context_get_conf_section()

const char* pw_context_get_conf_section ( struct pw_context *  context,
const char *  section 
)

Get a config section for this context.

Since 0.3.22

References pw_properties_get().

◆ pw_context_get_main_loop()

struct pw_loop* pw_context_get_main_loop ( struct pw_context *  context)

get the context main loop

Referenced by pipewire__module_init(), and sm_logind_start().

◆ pw_context_get_object()

void* pw_context_get_object ( struct pw_context *  context,
const char *  type 
)

get an object from the context

◆ pw_context_get_properties()

const struct pw_properties* pw_context_get_properties ( struct pw_context *  context)

Get the context properties.

Referenced by pipewire__module_init().

◆ pw_context_get_support()

const struct spa_support* pw_context_get_support ( struct pw_context *  context,
uint32_t *  n_support 
)

Get the context support objects.

Referenced by pipewire__module_init(), and pw_context_load_spa_handle().

◆ pw_context_get_user_data()

void* pw_context_get_user_data ( struct pw_context *  context)

Get the context user data.

◆ pw_context_get_work_queue()

struct pw_work_queue* pw_context_get_work_queue ( struct pw_context *  context)

Get the work queue from the context: Since 0.3.26.

References pw_work_queue_new().

Referenced by pipewire__module_init().

◆ pw_context_load_spa_handle()

struct spa_handle* pw_context_load_spa_handle ( struct pw_context *  context,
const char *  factory_name,
const struct spa_dict info 
)

◆ pw_context_new()

struct pw_context* pw_context_new ( struct pw_loop main_loop,
struct pw_properties properties,
size_t  user_data_size 
)

Make a new context object for a given main_loop.

Ownership of the properties is taken

Make a new context object for a given main_loop.

Parameters
main_loopthe main loop to use
propertiesextra properties for the context, ownership it taken
Returns
a newly allocated context object
Parameters
main_loopa main loop to run in
propertiesextra properties
user_data_sizeextra user data size

References NAME, pw_log_debug, SPA_PTROFF, and impl::this.

Referenced by pw_filter_new_simple(), and pw_stream_new_simple().

◆ pw_context_register_export_type()

int pw_context_register_export_type ( struct pw_context *  context,
struct pw_export_type type 
)

register a type that can be exported on a context_proxy.

This is usually used by extension modules

References pw_export_type::link, pw_context_find_export_type(), pw_log_debug, pw_log_warn, spa_list_append, and pw_export_type::type.

◆ pw_context_set_object()

int pw_context_set_object ( struct pw_context *  context,
const char *  type,
void *  value 
)

add an object to the context

◆ pw_context_update_properties()

int pw_context_update_properties ( struct pw_context *  context,
const struct spa_dict dict 
)

Update the context properties.

Update the context properties.

Parameters
contexta context
dictproperties to update

Update the context object with the given properties

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