PulseAudio  16.0
context.h File Reference

Connection contexts for asynchronous communication with a server. More...

Go to the source code of this file.

Typedefs

typedef struct pa_context pa_context
 An opaque connection context to a daemon. More...
 
typedef void(* pa_context_notify_cb_t) (pa_context *c, void *userdata)
 Generic notification callback prototype. More...
 
typedef void(* pa_context_success_cb_t) (pa_context *c, int success, void *userdata)
 A generic callback for operation completion. More...
 
typedef void(* pa_context_event_cb_t) (pa_context *c, const char *name, pa_proplist *p, void *userdata)
 A callback for asynchronous meta/policy event messages. More...
 

Functions

pa_contextpa_context_new (pa_mainloop_api *mainloop, const char *name)
 Instantiate a new connection context with an abstract mainloop API and an application name. More...
 
pa_contextpa_context_new_with_proplist (pa_mainloop_api *mainloop, const char *name, const pa_proplist *proplist)
 Instantiate a new connection context with an abstract mainloop API and an application name, and specify the initial client property list. More...
 
void pa_context_unref (pa_context *c)
 Decrease the reference counter of the context by one. More...
 
pa_contextpa_context_ref (pa_context *c)
 Increase the reference counter of the context by one. More...
 
void pa_context_set_state_callback (pa_context *c, pa_context_notify_cb_t cb, void *userdata)
 Set a callback function that is called whenever the context status changes. More...
 
void pa_context_set_event_callback (pa_context *p, pa_context_event_cb_t cb, void *userdata)
 Set a callback function that is called whenever a meta/policy control event is received. More...
 
int pa_context_errno (const pa_context *c)
 Return the error number of the last failed operation. More...
 
int pa_context_is_pending (const pa_context *c)
 Return non-zero if some data is pending to be written to the connection. More...
 
pa_context_state_t pa_context_get_state (const pa_context *c)
 Return the current context status. More...
 
int pa_context_connect (pa_context *c, const char *server, pa_context_flags_t flags, const pa_spawn_api *api)
 Connect the context to the specified server. More...
 
void pa_context_disconnect (pa_context *c)
 Terminate the context connection immediately. More...
 
pa_operationpa_context_drain (pa_context *c, pa_context_notify_cb_t cb, void *userdata)
 Drain the context. More...
 
pa_operationpa_context_exit_daemon (pa_context *c, pa_context_success_cb_t cb, void *userdata)
 Tell the daemon to exit. More...
 
pa_operationpa_context_set_default_sink (pa_context *c, const char *name, pa_context_success_cb_t cb, void *userdata)
 Set the name of the default sink. More...
 
pa_operationpa_context_set_default_source (pa_context *c, const char *name, pa_context_success_cb_t cb, void *userdata)
 Set the name of the default source. More...
 
int pa_context_is_local (const pa_context *c)
 Returns 1 when the connection is to a local daemon. More...
 
pa_operationpa_context_set_name (pa_context *c, const char *name, pa_context_success_cb_t cb, void *userdata)
 Set a different application name for context on the server. More...
 
const char * pa_context_get_server (const pa_context *c)
 Return the server name this context is connected to. More...
 
uint32_t pa_context_get_protocol_version (const pa_context *c)
 Return the protocol version of the library. More...
 
uint32_t pa_context_get_server_protocol_version (const pa_context *c)
 Return the protocol version of the connected server. More...
 
pa_operationpa_context_proplist_update (pa_context *c, pa_update_mode_t mode, const pa_proplist *p, pa_context_success_cb_t cb, void *userdata)
 Update the property list of the client, adding new entries. More...
 
pa_operationpa_context_proplist_remove (pa_context *c, const char *const keys[], pa_context_success_cb_t cb, void *userdata)
 Update the property list of the client, remove entries. More...
 
uint32_t pa_context_get_index (const pa_context *s)
 Return the client index this context is identified in the server with. More...
 
pa_time_eventpa_context_rttime_new (const pa_context *c, pa_usec_t usec, pa_time_event_cb_t cb, void *userdata)
 Create a new timer event source for the specified time (wrapper for mainloop->time_new). More...
 
void pa_context_rttime_restart (const pa_context *c, pa_time_event *e, pa_usec_t usec)
 Restart a running or expired timer event source (wrapper for mainloop->time_restart). More...
 
size_t pa_context_get_tile_size (const pa_context *c, const pa_sample_spec *ss)
 Return the optimal block size for passing around audio buffers. More...
 
int pa_context_load_cookie_from_file (pa_context *c, const char *cookie_file_path)
 Load the authentication cookie from a file. More...
 

Detailed Description

Connection contexts for asynchronous communication with a server.

A pa_context object wraps a connection to a PulseAudio server using its native protocol.

See also Asynchronous API

Typedef Documentation

◆ pa_context

typedef struct pa_context pa_context

An opaque connection context to a daemon.

◆ pa_context_event_cb_t

typedef void(* pa_context_event_cb_t) (pa_context *c, const char *name, pa_proplist *p, void *userdata)

A callback for asynchronous meta/policy event messages.

The set of defined events can be extended at any time. Also, server modules may introduce additional message types so make sure that your callback function ignores messages it doesn't know.

Since
0.9.15

◆ pa_context_notify_cb_t

typedef void(* pa_context_notify_cb_t) (pa_context *c, void *userdata)

Generic notification callback prototype.

◆ pa_context_success_cb_t

typedef void(* pa_context_success_cb_t) (pa_context *c, int success, void *userdata)

A generic callback for operation completion.

Function Documentation

◆ pa_context_connect()

int pa_context_connect ( pa_context c,
const char *  server,
pa_context_flags_t  flags,
const pa_spawn_api api 
)

Connect the context to the specified server.

If server is NULL, connect to the default server. This routine may but will not always return synchronously on error. Use pa_context_set_state_callback() to be notified when the connection is established. If flags doesn't have PA_CONTEXT_NOAUTOSPAWN set and no specific server is specified or accessible a new daemon is spawned. If api is non-NULL, the functions specified in the structure are used when forking a new child process. Returns negative on certain errors such as invalid state or parameters.

◆ pa_context_disconnect()

void pa_context_disconnect ( pa_context c)

Terminate the context connection immediately.

◆ pa_context_drain()

pa_operation* pa_context_drain ( pa_context c,
pa_context_notify_cb_t  cb,
void *  userdata 
)

Drain the context.

If there is nothing to drain, the function returns NULL

◆ pa_context_errno()

int pa_context_errno ( const pa_context c)

Return the error number of the last failed operation.

◆ pa_context_exit_daemon()

pa_operation* pa_context_exit_daemon ( pa_context c,
pa_context_success_cb_t  cb,
void *  userdata 
)

Tell the daemon to exit.

The returned operation is unlikely to complete successfully, since the daemon probably died before returning a success notification

◆ pa_context_get_index()

uint32_t pa_context_get_index ( const pa_context s)

Return the client index this context is identified in the server with.

This is useful for usage with the introspection functions, such as pa_context_get_client_info(). Returns PA_INVALID_INDEX on error.

Since
0.9.11

◆ pa_context_get_protocol_version()

uint32_t pa_context_get_protocol_version ( const pa_context c)

Return the protocol version of the library.

◆ pa_context_get_server()

const char* pa_context_get_server ( const pa_context c)

Return the server name this context is connected to.

◆ pa_context_get_server_protocol_version()

uint32_t pa_context_get_server_protocol_version ( const pa_context c)

Return the protocol version of the connected server.

Returns PA_INVALID_INDEX on error.

◆ pa_context_get_state()

pa_context_state_t pa_context_get_state ( const pa_context c)

Return the current context status.

◆ pa_context_get_tile_size()

size_t pa_context_get_tile_size ( const pa_context c,
const pa_sample_spec ss 
)

Return the optimal block size for passing around audio buffers.

It is recommended to allocate buffers of the size returned here when writing audio data to playback streams, if the latency constraints permit this. It is not recommended writing larger blocks than this because usually they will then be split up internally into chunks of this size. It is not recommended writing smaller blocks than this (unless required due to latency demands) because this increases CPU usage. If ss is NULL you will be returned the byte-exact tile size. if ss is invalid, (size_t) -1 will be returned. If you pass a valid ss, then the tile size will be rounded down to multiple of the frame size. This is supposed to be used in a construct such as pa_context_get_tile_size(pa_stream_get_context(s), pa_stream_get_sample_spec(ss));

Since
0.9.20

◆ pa_context_is_local()

int pa_context_is_local ( const pa_context c)

Returns 1 when the connection is to a local daemon.

Returns negative when no connection has been made yet.

◆ pa_context_is_pending()

int pa_context_is_pending ( const pa_context c)

Return non-zero if some data is pending to be written to the connection.

◆ pa_context_load_cookie_from_file()

int pa_context_load_cookie_from_file ( pa_context c,
const char *  cookie_file_path 
)

Load the authentication cookie from a file.

This function is primarily meant for PulseAudio's own tunnel modules, which need to load the cookie from a custom location. Applications don't usually need to care about the cookie at all, but if it happens that you know what the authentication cookie is and your application needs to load it from a non-standard location, feel free to use this function.

Since
5.0

◆ pa_context_new()

pa_context* pa_context_new ( pa_mainloop_api mainloop,
const char *  name 
)

Instantiate a new connection context with an abstract mainloop API and an application name.

It is recommended to use pa_context_new_with_proplist() instead and specify some initial properties.

◆ pa_context_new_with_proplist()

pa_context* pa_context_new_with_proplist ( pa_mainloop_api mainloop,
const char *  name,
const pa_proplist proplist 
)

Instantiate a new connection context with an abstract mainloop API and an application name, and specify the initial client property list.

Since
0.9.11

◆ pa_context_proplist_remove()

pa_operation* pa_context_proplist_remove ( pa_context c,
const char *const  keys[],
pa_context_success_cb_t  cb,
void *  userdata 
)

Update the property list of the client, remove entries.

Since
0.9.11

◆ pa_context_proplist_update()

pa_operation* pa_context_proplist_update ( pa_context c,
pa_update_mode_t  mode,
const pa_proplist p,
pa_context_success_cb_t  cb,
void *  userdata 
)

Update the property list of the client, adding new entries.

Please note that it is highly recommended to set as many properties initially via pa_context_new_with_proplist() as possible instead a posteriori with this function, since that information may then be used to route streams of the client to the right device.

Since
0.9.11

◆ pa_context_ref()

pa_context* pa_context_ref ( pa_context c)

Increase the reference counter of the context by one.

◆ pa_context_rttime_new()

pa_time_event* pa_context_rttime_new ( const pa_context c,
pa_usec_t  usec,
pa_time_event_cb_t  cb,
void *  userdata 
)

Create a new timer event source for the specified time (wrapper for mainloop->time_new).

Since
0.9.16

◆ pa_context_rttime_restart()

void pa_context_rttime_restart ( const pa_context c,
pa_time_event e,
pa_usec_t  usec 
)

Restart a running or expired timer event source (wrapper for mainloop->time_restart).

Since
0.9.16

◆ pa_context_set_default_sink()

pa_operation* pa_context_set_default_sink ( pa_context c,
const char *  name,
pa_context_success_cb_t  cb,
void *  userdata 
)

Set the name of the default sink.

◆ pa_context_set_default_source()

pa_operation* pa_context_set_default_source ( pa_context c,
const char *  name,
pa_context_success_cb_t  cb,
void *  userdata 
)

Set the name of the default source.

◆ pa_context_set_event_callback()

void pa_context_set_event_callback ( pa_context p,
pa_context_event_cb_t  cb,
void *  userdata 
)

Set a callback function that is called whenever a meta/policy control event is received.

Since
0.9.15

◆ pa_context_set_name()

pa_operation* pa_context_set_name ( pa_context c,
const char *  name,
pa_context_success_cb_t  cb,
void *  userdata 
)

Set a different application name for context on the server.

◆ pa_context_set_state_callback()

void pa_context_set_state_callback ( pa_context c,
pa_context_notify_cb_t  cb,
void *  userdata 
)

Set a callback function that is called whenever the context status changes.

◆ pa_context_unref()

void pa_context_unref ( pa_context c)

Decrease the reference counter of the context by one.