PipeWire: SPA Support Features

PipeWire 0.3.37

Data Structures | Macros | Typedefs | Enumerations | Functions
SPA Support Features

## Data Structures
struct | spa_cpu
struct | spa_cpu_methods
| methods More...
struct | spa_dbus
struct | spa_dbus_connection_events
struct | spa_dbus_connection
struct | spa_dbus_methods
struct | spa_i18n
struct | spa_i18n_methods
struct | spa_loop
struct | spa_loop_control
struct | spa_loop_utils
struct | spa_source
struct | spa_loop_methods
| Register sources and work items to an event loop. More...
struct | spa_loop_control_hooks
| Control hooks. More...
struct | spa_loop_control_methods
| Control an event loop. More...
struct | spa_loop_utils_methods
| Create sources for an event loop. More...
struct | spa_plugin_loader
struct | spa_plugin_loader_methods
struct | spa_system
struct | spa_poll_event
struct | spa_system_methods
struct | spa_thread_utils
struct | spa_thread_utils_methods
| thread utils More...

## Macros
#define | SPA_TYPE_INTERFACE_CPU SPA_TYPE_INFO_INTERFACE_BASE "CPU"
| The CPU features interface. More...
#define | SPA_VERSION_CPU 0
#define | SPA_CPU_FLAG_MMX (1<<0)
| standard MMX More...
#define | SPA_CPU_FLAG_MMXEXT (1<<1)
| SSE integer or AMD MMX ext. More...
#define | SPA_CPU_FLAG_3DNOW (1<<2)
| AMD 3DNOW. More...
#define | SPA_CPU_FLAG_SSE (1<<3)
| SSE. More...
#define | SPA_CPU_FLAG_SSE2 (1<<4)
| SSE2. More...
#define | SPA_CPU_FLAG_3DNOWEXT (1<<5)
| AMD 3DNowExt. More...
#define | SPA_CPU_FLAG_SSE3 (1<<6)
| Prescott SSE3. More...
#define | SPA_CPU_FLAG_SSSE3 (1<<7)
| Conroe SSSE3. More...
#define | SPA_CPU_FLAG_SSE41 (1<<8)
| Penryn SSE4.1. More...
#define | SPA_CPU_FLAG_SSE42 (1<<9)
| Nehalem SSE4.2. More...
#define | SPA_CPU_FLAG_AESNI (1<<10)
| Advanced Encryption Standard. More...
#define | SPA_CPU_FLAG_AVX (1<<11)
| AVX. More...
#define | SPA_CPU_FLAG_XOP (1<<12)
| Bulldozer XOP. More...
#define | SPA_CPU_FLAG_FMA4 (1<<13)
| Bulldozer FMA4. More...
#define | SPA_CPU_FLAG_CMOV (1<<14)
| supports cmov More...
#define | SPA_CPU_FLAG_AVX2 (1<<15)
| AVX2. More...
#define | SPA_CPU_FLAG_FMA3 (1<<16)
| Haswell FMA3. More...
#define | SPA_CPU_FLAG_BMI1 (1<<17)
| Bit Manipulation Instruction Set 1. More...
#define | SPA_CPU_FLAG_BMI2 (1<<18)
| Bit Manipulation Instruction Set 2. More...
#define | SPA_CPU_FLAG_AVX512 (1<<19)
| AVX-512. More...
#define | SPA_CPU_FLAG_SLOW_UNALIGNED (1<<20)
| unaligned loads/stores are slow More...
#define | SPA_CPU_FLAG_ALTIVEC (1<<0)
| standard More...
#define | SPA_CPU_FLAG_VSX (1<<1)
| ISA 2.06. More...
#define | SPA_CPU_FLAG_POWER8 (1<<2)
| ISA 2.07. More...
#define | SPA_CPU_FLAG_ARMV5TE (1 << 0)
#define | SPA_CPU_FLAG_ARMV6 (1 << 1)
#define | SPA_CPU_FLAG_ARMV6T2 (1 << 2)
#define | SPA_CPU_FLAG_VFP (1 << 3)
#define | SPA_CPU_FLAG_VFPV3 (1 << 4)
#define | SPA_CPU_FLAG_NEON (1 << 5)
#define | SPA_CPU_FLAG_ARMV8 (1 << 6)
#define | SPA_CPU_FORCE_AUTODETECT ((uint32_t)-1)
#define | SPA_CPU_VM_NONE (0)
#define | SPA_CPU_VM_OTHER (1 << 0)
#define | SPA_CPU_VM_KVM (1 << 1)
#define | SPA_CPU_VM_QEMU (1 << 2)
#define | SPA_CPU_VM_BOCHS (1 << 3)
#define | SPA_CPU_VM_XEN (1 << 4)
#define | SPA_CPU_VM_UML (1 << 5)
#define | SPA_CPU_VM_VMWARE (1 << 6)
#define | SPA_CPU_VM_ORACLE (1 << 7)
#define | SPA_CPU_VM_MICROSOFT (1 << 8)
#define | SPA_CPU_VM_ZVM (1 << 9)
#define | SPA_CPU_VM_PARALLELS (1 << 10)
#define | SPA_CPU_VM_BHYVE (1 << 11)
#define | SPA_CPU_VM_QNX (1 << 12)
#define | SPA_CPU_VM_ACRN (1 << 13)
#define | SPA_CPU_VM_POWERVM (1 << 14)
#define | spa_cpu_method(o, method, version, ...)
#define | spa_cpu_get_flags(c) spa_cpu_method(c, get_flags, 0)
#define | spa_cpu_force_flags(c, f) spa_cpu_method(c, force_flags, 0, f)
#define | spa_cpu_get_count(c) spa_cpu_method(c, get_count, 0)
#define | spa_cpu_get_max_align(c) spa_cpu_method(c, get_max_align, 0)
#define | spa_cpu_get_vm_type(c) spa_cpu_method(c, get_vm_type, 1)
#define | SPA_KEY_CPU_FORCE "cpu.force"
| keys can be given when initializing the cpu handle More...
#define | SPA_KEY_CPU_VM_TYPE "cpu.vm.type"
| force a VM type More...
#define | SPA_TYPE_INTERFACE_DBus SPA_TYPE_INFO_INTERFACE_BASE "DBus"
#define | SPA_VERSION_DBUS 0
#define | SPA_DBUS_CONNECTION_EVENT_DESTROY 0
#define | SPA_DBUS_CONNECTION_EVENT_DISCONNECTED 1
#define | SPA_DBUS_CONNECTION_EVENT_NUM 2
#define | spa_dbus_connection_call(c, method, vers, ...)
#define | spa_dbus_connection_call_vp(c, method, vers, ...)
#define | spa_dbus_connection_get(c) spa_dbus_connection_call_vp(c,get,0)
#define | spa_dbus_connection_destroy(c) spa_dbus_connection_call(c,destroy,0)
#define | spa_dbus_connection_add_listener(c, ...) spa_dbus_connection_call(c,add_listener,1,__VA_ARGS__)
#define | SPA_TYPE_INTERFACE_I18N SPA_TYPE_INFO_INTERFACE_BASE "I18N"
#define | SPA_VERSION_I18N 0
#define | SPA_TYPE_INTERFACE_Loop SPA_TYPE_INFO_INTERFACE_BASE "Loop"
#define | SPA_TYPE_INTERFACE_DataLoop SPA_TYPE_INFO_INTERFACE_BASE "DataLoop"
#define | SPA_VERSION_LOOP 0
#define | SPA_TYPE_INTERFACE_LoopControl SPA_TYPE_INFO_INTERFACE_BASE "LoopControl"
#define | SPA_VERSION_LOOP_CONTROL 0
#define | SPA_TYPE_INTERFACE_LoopUtils SPA_TYPE_INFO_INTERFACE_BASE "LoopUtils"
#define | SPA_VERSION_LOOP_UTILS 0
#define | spa_loop_method(o, method, version, ...)
#define | spa_loop_add_source(l, ...) spa_loop_method(l,add_source,0,##__VA_ARGS__)
#define | spa_loop_update_source(l, ...) spa_loop_method(l,update_source,0,##__VA_ARGS__)
#define | spa_loop_remove_source(l, ...) spa_loop_method(l,remove_source,0,##__VA_ARGS__)
#define | spa_loop_invoke(l, ...) spa_loop_method(l,invoke,0,##__VA_ARGS__)
#define | spa_loop_control_hook_before(l)
#define | spa_loop_control_hook_after(l)
#define | spa_loop_control_method_v(o, method, version, ...)
#define | spa_loop_control_method_r(o, method, version, ...)
#define | spa_loop_control_get_fd(l) spa_loop_control_method_r(l,get_fd,0)
#define | spa_loop_control_add_hook(l, ...) spa_loop_control_method_v(l,add_hook,0,__VA_ARGS__)
#define | spa_loop_control_enter(l) spa_loop_control_method_v(l,enter,0)
#define | spa_loop_control_leave(l) spa_loop_control_method_v(l,leave,0)
#define | spa_loop_control_iterate(l, ...) spa_loop_control_method_r(l,iterate,0,__VA_ARGS__)
#define | spa_loop_utils_method_v(o, method, version, ...)
#define | spa_loop_utils_method_r(o, method, version, ...)
#define | spa_loop_utils_method_s(o, method, version, ...)
#define | spa_loop_utils_add_io(l, ...) spa_loop_utils_method_s(l,add_io,0,__VA_ARGS__)
#define | spa_loop_utils_update_io(l, ...) spa_loop_utils_method_r(l,update_io,0,__VA_ARGS__)
#define | spa_loop_utils_add_idle(l, ...) spa_loop_utils_method_s(l,add_idle,0,__VA_ARGS__)
#define | spa_loop_utils_enable_idle(l, ...) spa_loop_utils_method_r(l,enable_idle,0,__VA_ARGS__)
#define | spa_loop_utils_add_event(l, ...) spa_loop_utils_method_s(l,add_event,0,__VA_ARGS__)
#define | spa_loop_utils_signal_event(l, ...) spa_loop_utils_method_r(l,signal_event,0,__VA_ARGS__)
#define | spa_loop_utils_add_timer(l, ...) spa_loop_utils_method_s(l,add_timer,0,__VA_ARGS__)
#define | spa_loop_utils_update_timer(l, ...) spa_loop_utils_method_r(l,update_timer,0,__VA_ARGS__)
#define | spa_loop_utils_add_signal(l, ...) spa_loop_utils_method_s(l,add_signal,0,__VA_ARGS__)
#define | spa_loop_utils_destroy_source(l, ...) spa_loop_utils_method_v(l,destroy_source,0,__VA_ARGS__)
#define | SPA_TYPE_INTERFACE_PluginLoader SPA_TYPE_INFO_INTERFACE_BASE "PluginLoader"
#define | SPA_VERSION_PLUGIN_LOADER 0
#define | SPA_TYPE_INTERFACE_System SPA_TYPE_INFO_INTERFACE_BASE "System"
| a collection of core system functions More...
#define | SPA_TYPE_INTERFACE_DataSystem SPA_TYPE_INFO_INTERFACE_BASE "DataSystem"
#define | SPA_VERSION_SYSTEM 0
#define | SPA_IO_IN (1 << 0)
#define | SPA_IO_OUT (1 << 2)
#define | SPA_IO_ERR (1 << 3)
#define | SPA_IO_HUP (1 << 4)
#define | SPA_FD_CLOEXEC (1<<0)
#define | SPA_FD_NONBLOCK (1<<1)
#define | SPA_FD_EVENT_SEMAPHORE (1<<2)
#define | SPA_FD_TIMER_ABSTIME (1<<3)
#define | SPA_FD_TIMER_CANCEL_ON_SET (1<<4)
#define | spa_system_method_r(o, method, version, ...)
#define | spa_system_read(s, ...) spa_system_method_r(s,read,0,__VA_ARGS__)
#define | spa_system_write(s, ...) spa_system_method_r(s,write,0,__VA_ARGS__)
#define | spa_system_ioctl(s, ...) spa_system_method_r(s,ioctl,0,__VA_ARGS__)
#define | spa_system_close(s, ...) spa_system_method_r(s,close,0,__VA_ARGS__)
#define | spa_system_clock_gettime(s, ...) spa_system_method_r(s,clock_gettime,0,__VA_ARGS__)
#define | spa_system_clock_getres(s, ...) spa_system_method_r(s,clock_getres,0,__VA_ARGS__)
#define | spa_system_pollfd_create(s, ...) spa_system_method_r(s,pollfd_create,0,__VA_ARGS__)
#define | spa_system_pollfd_add(s, ...) spa_system_method_r(s,pollfd_add,0,__VA_ARGS__)
#define | spa_system_pollfd_mod(s, ...) spa_system_method_r(s,pollfd_mod,0,__VA_ARGS__)
#define | spa_system_pollfd_del(s, ...) spa_system_method_r(s,pollfd_del,0,__VA_ARGS__)
#define | spa_system_pollfd_wait(s, ...) spa_system_method_r(s,pollfd_wait,0,__VA_ARGS__)
#define | spa_system_timerfd_create(s, ...) spa_system_method_r(s,timerfd_create,0,__VA_ARGS__)
#define | spa_system_timerfd_settime(s, ...) spa_system_method_r(s,timerfd_settime,0,__VA_ARGS__)
#define | spa_system_timerfd_gettime(s, ...) spa_system_method_r(s,timerfd_gettime,0,__VA_ARGS__)
#define | spa_system_timerfd_read(s, ...) spa_system_method_r(s,timerfd_read,0,__VA_ARGS__)
#define | spa_system_eventfd_create(s, ...) spa_system_method_r(s,eventfd_create,0,__VA_ARGS__)
#define | spa_system_eventfd_write(s, ...) spa_system_method_r(s,eventfd_write,0,__VA_ARGS__)
#define | spa_system_eventfd_read(s, ...) spa_system_method_r(s,eventfd_read,0,__VA_ARGS__)
#define | spa_system_signalfd_create(s, ...) spa_system_method_r(s,signalfd_create,0,__VA_ARGS__)
#define | spa_system_signalfd_read(s, ...) spa_system_method_r(s,signalfd_read,0,__VA_ARGS__)
#define | SPA_TYPE_INFO_Thread SPA_TYPE_INFO_POINTER_BASE "Thread"
| a thread object. More...
#define | SPA_TYPE_INTERFACE_ThreadUtils SPA_TYPE_INFO_INTERFACE_BASE "ThreadUtils"
#define | SPA_VERSION_THREAD_UTILS 0

## Typedefs
typedef void(* | spa_source_func_t) (struct spa_source *source)
typedef int(* | spa_invoke_func_t) (struct spa_loop *loop, bool async, uint32_t seq, const void *data, size_t size, void *user_data)
typedef void(* | spa_source_io_func_t) (void *data, int fd, uint32_t mask)
typedef void(* | spa_source_idle_func_t) (void *data)
typedef void(* | spa_source_event_func_t) (void *data, uint64_t count)
typedef void(* | spa_source_timer_func_t) (void *data, uint64_t expirations)
typedef void(* | spa_source_signal_func_t) (void *data, int signal_number)

## Enumerations
enum | spa_dbus_type { SPA_DBUS_TYPE_SESSION , SPA_DBUS_TYPE_SYSTEM , SPA_DBUS_TYPE_STARTER }

## Functions
struct spa_dbus_connection * | spa_dbus_get_connection (struct spa_dbus *dbus, enum spa_dbus_type type)
const char * | spa_i18n_text (struct spa_i18n *i18n, const char *msgid)
const char * | spa_i18n_ntext (struct spa_i18n *i18n, const char *msgid, const char *msgid_plural, unsigned long int n)
struct spa_handle * | spa_plugin_loader_load (struct spa_plugin_loader *loader, const char *factory_name, const struct spa_dict *info)
int | spa_plugin_loader_unload (struct spa_plugin_loader *loader, struct spa_handle *handle)
struct spa_thread * | spa_thread_utils_create (struct spa_thread_utils *o, const struct spa_dict *props, void *(*start_routine)(void *), void *arg)
int | spa_thread_utils_join (struct spa_thread_utils *o, struct spa_thread *thread, void **retval)
int | spa_thread_utils_get_rt_range (struct spa_thread_utils *o, const struct spa_dict *props, int *min, int *max)
int | spa_thread_utils_acquire_rt (struct spa_thread_utils *o, struct spa_thread *thread, int priority)
int | spa_thread_utils_drop_rt (struct spa_thread_utils *o, struct spa_thread *thread)

## Detailed Description

## Macro Definition Documentation

## ◆ SPA_CPU_FLAG_3DNOW

#define SPA_CPU_FLAG_3DNOW (1<<2)

AMD 3DNOW.

## ◆ SPA_CPU_FLAG_3DNOWEXT

#define SPA_CPU_FLAG_3DNOWEXT (1<<5)

AMD 3DNowExt.

## ◆ SPA_CPU_FLAG_AESNI

#define SPA_CPU_FLAG_AESNI (1<<10)

Advanced Encryption Standard.

## ◆ SPA_CPU_FLAG_ALTIVEC

#define SPA_CPU_FLAG_ALTIVEC (1<<0)

standard

## ◆ SPA_CPU_FLAG_ARMV5TE

#define SPA_CPU_FLAG_ARMV5TE (1 << 0)

## ◆ SPA_CPU_FLAG_ARMV6

#define SPA_CPU_FLAG_ARMV6 (1 << 1)

## ◆ SPA_CPU_FLAG_ARMV6T2

#define SPA_CPU_FLAG_ARMV6T2 (1 << 2)

## ◆ SPA_CPU_FLAG_ARMV8

#define SPA_CPU_FLAG_ARMV8 (1 << 6)

## ◆ SPA_CPU_FLAG_AVX

#define SPA_CPU_FLAG_AVX (1<<11)

AVX.

## ◆ SPA_CPU_FLAG_AVX2

#define SPA_CPU_FLAG_AVX2 (1<<15)

AVX2.

## ◆ SPA_CPU_FLAG_AVX512

#define SPA_CPU_FLAG_AVX512 (1<<19)

AVX-512.

## ◆ SPA_CPU_FLAG_BMI1

#define SPA_CPU_FLAG_BMI1 (1<<17)

Bit Manipulation Instruction Set 1.

## ◆ SPA_CPU_FLAG_BMI2

#define SPA_CPU_FLAG_BMI2 (1<<18)

Bit Manipulation Instruction Set 2.

## ◆ SPA_CPU_FLAG_CMOV

#define SPA_CPU_FLAG_CMOV (1<<14)

supports cmov

## ◆ SPA_CPU_FLAG_FMA3

#define SPA_CPU_FLAG_FMA3 (1<<16)

Haswell FMA3.

## ◆ SPA_CPU_FLAG_FMA4

#define SPA_CPU_FLAG_FMA4 (1<<13)

Bulldozer FMA4.

## ◆ SPA_CPU_FLAG_MMX

#define SPA_CPU_FLAG_MMX (1<<0)

standard MMX

## ◆ SPA_CPU_FLAG_MMXEXT

#define SPA_CPU_FLAG_MMXEXT (1<<1)

SSE integer or AMD MMX ext.

## ◆ SPA_CPU_FLAG_NEON

#define SPA_CPU_FLAG_NEON (1 << 5)

## ◆ SPA_CPU_FLAG_POWER8

#define SPA_CPU_FLAG_POWER8 (1<<2)

ISA 2.07.

## ◆ SPA_CPU_FLAG_SLOW_UNALIGNED

#define SPA_CPU_FLAG_SLOW_UNALIGNED (1<<20)

unaligned loads/stores are slow

## ◆ SPA_CPU_FLAG_SSE

#define SPA_CPU_FLAG_SSE (1<<3)

SSE.

## ◆ SPA_CPU_FLAG_SSE2

#define SPA_CPU_FLAG_SSE2 (1<<4)

SSE2.

## ◆ SPA_CPU_FLAG_SSE3

#define SPA_CPU_FLAG_SSE3 (1<<6)

Prescott SSE3.

## ◆ SPA_CPU_FLAG_SSE41

#define SPA_CPU_FLAG_SSE41 (1<<8)

Penryn SSE4.1.

## ◆ SPA_CPU_FLAG_SSE42

#define SPA_CPU_FLAG_SSE42 (1<<9)

Nehalem SSE4.2.

## ◆ SPA_CPU_FLAG_SSSE3

#define SPA_CPU_FLAG_SSSE3 (1<<7)

Conroe SSSE3.

## ◆ SPA_CPU_FLAG_VFP

#define SPA_CPU_FLAG_VFP (1 << 3)

## ◆ SPA_CPU_FLAG_VFPV3

#define SPA_CPU_FLAG_VFPV3 (1 << 4)

## ◆ SPA_CPU_FLAG_VSX

#define SPA_CPU_FLAG_VSX (1<<1)

ISA 2.06.

## ◆ SPA_CPU_FLAG_XOP

#define SPA_CPU_FLAG_XOP (1<<12)

Bulldozer XOP.

## ◆ SPA_CPU_FORCE_AUTODETECT

#define SPA_CPU_FORCE_AUTODETECT ((uint32_t)-1)

## ◆ spa_cpu_force_flags

#define spa_cpu_force_flags | ( |  | c,
|  |  | f
| ) |  | spa_cpu_method(c, force_flags, 0, f)

## ◆ spa_cpu_get_count

#define spa_cpu_get_count | ( |  | c | ) | spa_cpu_method(c, get_count, 0)

## ◆ spa_cpu_get_flags

#define spa_cpu_get_flags | ( |  | c | ) | spa_cpu_method(c, get_flags, 0)

## ◆ spa_cpu_get_max_align

#define spa_cpu_get_max_align | ( |  | c | ) | spa_cpu_method(c, get_max_align, 0)

## ◆ spa_cpu_get_vm_type

#define spa_cpu_get_vm_type | ( |  | c | ) | spa_cpu_method(c, get_vm_type, 1)

## ◆ spa_cpu_method

#define spa_cpu_method | ( |  | o,
|  |  | method,
|  |  | version,
|  |  | ...
| ) |  |

Value:
({ \
int _res = -ENOTSUP; \
struct spa_cpu *_c = o; \
spa_interface_call_res(&_c->iface, \
struct spa_cpu_methods, _res, \
method, version, ##__VA_ARGS__); \
_res; \
})
spa_cpu_methods
methods
Definition: cpu.h:113
spa_cpu
Definition: cpu.h:52

## ◆ SPA_CPU_VM_ACRN

#define SPA_CPU_VM_ACRN (1 << 13)

## ◆ SPA_CPU_VM_BHYVE

#define SPA_CPU_VM_BHYVE (1 << 11)

## ◆ SPA_CPU_VM_BOCHS

#define SPA_CPU_VM_BOCHS (1 << 3)

## ◆ SPA_CPU_VM_KVM

#define SPA_CPU_VM_KVM (1 << 1)

## ◆ SPA_CPU_VM_MICROSOFT

#define SPA_CPU_VM_MICROSOFT (1 << 8)

## ◆ SPA_CPU_VM_NONE

#define SPA_CPU_VM_NONE (0)

## ◆ SPA_CPU_VM_ORACLE

#define SPA_CPU_VM_ORACLE (1 << 7)

## ◆ SPA_CPU_VM_OTHER

#define SPA_CPU_VM_OTHER (1 << 0)

## ◆ SPA_CPU_VM_PARALLELS

#define SPA_CPU_VM_PARALLELS (1 << 10)

## ◆ SPA_CPU_VM_POWERVM

#define SPA_CPU_VM_POWERVM (1 << 14)

## ◆ SPA_CPU_VM_QEMU

#define SPA_CPU_VM_QEMU (1 << 2)

## ◆ SPA_CPU_VM_QNX

#define SPA_CPU_VM_QNX (1 << 12)

## ◆ SPA_CPU_VM_UML

#define SPA_CPU_VM_UML (1 << 5)

## ◆ SPA_CPU_VM_VMWARE

#define SPA_CPU_VM_VMWARE (1 << 6)

## ◆ SPA_CPU_VM_XEN

#define SPA_CPU_VM_XEN (1 << 4)

## ◆ SPA_CPU_VM_ZVM

#define SPA_CPU_VM_ZVM (1 << 9)

## ◆ spa_dbus_connection_add_listener

#define spa_dbus_connection_add_listener | ( |  | c,
|  |  | ...
| ) |  | spa_dbus_connection_call(c,add_listener,1,__VA_ARGS__)

## ◆ spa_dbus_connection_call

#define spa_dbus_connection_call | ( |  | c,
|  |  | method,
|  |  | vers,
|  |  | ...
| ) |  |

Value:
({ \
if (SPA_LIKELY(SPA_CALLBACK_CHECK(c,method,vers))) \
c->method((c), ## __VA_ARGS__); \
})
SPA_CALLBACK_CHECK
#define SPA_CALLBACK_CHECK(c, m, v)
Check if a callback c has method m of version v.
Definition: hook.h:136
SPA_LIKELY
#define SPA_LIKELY(x)
Definition: defs.h:241

## ◆ spa_dbus_connection_call_vp

#define spa_dbus_connection_call_vp | ( |  | c,
|  |  | method,
|  |  | vers,
|  |  | ...
| ) |  |

Value:
({ \
void *_res = NULL; \
if (SPA_LIKELY(SPA_CALLBACK_CHECK(c,method,vers))) \
_res = c->method((c), ## __VA_ARGS__); \
_res; \
})

## ◆ spa_dbus_connection_destroy

#define spa_dbus_connection_destroy | ( |  | c | ) | spa_dbus_connection_call(c,destroy,0)

## ◆ SPA_DBUS_CONNECTION_EVENT_DESTROY

#define SPA_DBUS_CONNECTION_EVENT_DESTROY 0

## ◆ SPA_DBUS_CONNECTION_EVENT_DISCONNECTED

#define SPA_DBUS_CONNECTION_EVENT_DISCONNECTED 1

## ◆ SPA_DBUS_CONNECTION_EVENT_NUM

#define SPA_DBUS_CONNECTION_EVENT_NUM 2

## ◆ spa_dbus_connection_get

#define spa_dbus_connection_get | ( |  | c | ) | spa_dbus_connection_call_vp(c,get,0)

## ◆ SPA_FD_CLOEXEC

#define SPA_FD_CLOEXEC (1<<0)

## ◆ SPA_FD_EVENT_SEMAPHORE

#define SPA_FD_EVENT_SEMAPHORE (1<<2)

## ◆ SPA_FD_NONBLOCK

#define SPA_FD_NONBLOCK (1<<1)

## ◆ SPA_FD_TIMER_ABSTIME

#define SPA_FD_TIMER_ABSTIME (1<<3)

## ◆ SPA_FD_TIMER_CANCEL_ON_SET

#define SPA_FD_TIMER_CANCEL_ON_SET (1<<4)

## ◆ SPA_IO_ERR

#define SPA_IO_ERR (1 << 3)

## ◆ SPA_IO_HUP

#define SPA_IO_HUP (1 << 4)

## ◆ SPA_IO_IN

#define SPA_IO_IN (1 << 0)

## ◆ SPA_IO_OUT

#define SPA_IO_OUT (1 << 2)

## ◆ SPA_KEY_CPU_FORCE

#define SPA_KEY_CPU_FORCE "cpu.force"

keys can be given when initializing the cpu handle

force cpu flags

## ◆ SPA_KEY_CPU_VM_TYPE

#define SPA_KEY_CPU_VM_TYPE "cpu.vm.type"

force a VM type

## ◆ spa_loop_add_source

#define spa_loop_add_source | ( |  | l,
|  |  | ...
| ) |  | spa_loop_method(l,add_source,0,##__VA_ARGS__)

## ◆ spa_loop_control_add_hook

#define spa_loop_control_add_hook | ( |  | l,
|  |  | ...
| ) |  | spa_loop_control_method_v(l,add_hook,0,__VA_ARGS__)

## ◆ spa_loop_control_enter

#define spa_loop_control_enter | ( |  | l | ) | spa_loop_control_method_v(l,enter,0)

## ◆ spa_loop_control_get_fd

#define spa_loop_control_get_fd | ( |  | l | ) | spa_loop_control_method_r(l,get_fd,0)

## ◆ spa_loop_control_hook_after

#define spa_loop_control_hook_after | ( |  | l | ) |

Value:
({ \
struct spa_hook_list *_l = l; \
struct spa_hook *_h; \
spa_list_for_each(_h, &_l->list, link) \
spa_callbacks_call(&_h->cb, struct spa_loop_control_hooks, after, 0); \
})
link
Definition: media-session.c:183
spa_hook_list
A list of hooks.
Definition: hook.h:284
spa_hook
A hook, contains the structure with functions and the data passed to the functions.
Definition: hook.h:295
spa_loop_control_hooks
Control hooks.
Definition: build/doc/spa/support/loop.h:124

## ◆ spa_loop_control_hook_before

#define spa_loop_control_hook_before | ( |  | l | ) |

Value:
({ \
struct spa_hook_list *_l = l; \
struct spa_hook *_h; \
spa_list_for_each_reverse(_h, &_l->list, link) \
spa_callbacks_call(&_h->cb, struct spa_loop_control_hooks, before, 0); \
})

## ◆ spa_loop_control_iterate

#define spa_loop_control_iterate | ( |  | l,
|  |  | ...
| ) |  | spa_loop_control_method_r(l,iterate,0,__VA_ARGS__)

## ◆ spa_loop_control_leave

#define spa_loop_control_leave | ( |  | l | ) | spa_loop_control_method_v(l,leave,0)

## ◆ spa_loop_control_method_r

#define spa_loop_control_method_r | ( |  | o,
|  |  | method,
|  |  | version,
|  |  | ...
| ) |  |

Value:
({ \
int _res = -ENOTSUP; \
struct spa_loop_control *_o = o; \
spa_interface_call_res(&_o->iface, \
struct spa_loop_control_methods, _res, \
method, version, ##__VA_ARGS__); \
_res; \
})
spa_loop_control_methods
Control an event loop.
Definition: build/doc/spa/support/loop.h:154
spa_loop_control
Definition: build/doc/spa/support/loop.h:48

## ◆ spa_loop_control_method_v

#define spa_loop_control_method_v | ( |  | o,
|  |  | method,
|  |  | version,
|  |  | ...
| ) |  |

Value:
({ \
struct spa_loop_control *_o = o; \
spa_interface_call(&_o->iface, \
struct spa_loop_control_methods, \
method, version, ##__VA_ARGS__); \
})

## ◆ spa_loop_invoke

#define spa_loop_invoke | ( |  | l,
|  |  | ...
| ) |  | spa_loop_method(l,invoke,0,##__VA_ARGS__)

## ◆ spa_loop_method

#define spa_loop_method | ( |  | o,
|  |  | method,
|  |  | version,
|  |  | ...
| ) |  |

Value:
({ \
int _res = -ENOTSUP; \
struct spa_loop *_o = o; \
spa_interface_call_res(&_o->iface, \
struct spa_loop_methods, _res, \
method, version, ##__VA_ARGS__); \
_res; \
})
spa_loop_methods
Register sources and work items to an event loop.
Definition: build/doc/spa/support/loop.h:77
spa_loop
Definition: build/doc/spa/support/loop.h:44

## ◆ spa_loop_remove_source

#define spa_loop_remove_source | ( |  | l,
|  |  | ...
| ) |  | spa_loop_method(l,remove_source,0,##__VA_ARGS__)

## ◆ spa_loop_update_source

#define spa_loop_update_source | ( |  | l,
|  |  | ...
| ) |  | spa_loop_method(l,update_source,0,##__VA_ARGS__)

## ◆ spa_loop_utils_add_event

#define spa_loop_utils_add_event | ( |  | l,
|  |  | ...
| ) |  | spa_loop_utils_method_s(l,add_event,0,__VA_ARGS__)

## ◆ spa_loop_utils_add_idle

#define spa_loop_utils_add_idle | ( |  | l,
|  |  | ...
| ) |  | spa_loop_utils_method_s(l,add_idle,0,__VA_ARGS__)

## ◆ spa_loop_utils_add_io

#define spa_loop_utils_add_io | ( |  | l,
|  |  | ...
| ) |  | spa_loop_utils_method_s(l,add_io,0,__VA_ARGS__)

## ◆ spa_loop_utils_add_signal

#define spa_loop_utils_add_signal | ( |  | l,
|  |  | ...
| ) |  | spa_loop_utils_method_s(l,add_signal,0,__VA_ARGS__)

## ◆ spa_loop_utils_add_timer

#define spa_loop_utils_add_timer | ( |  | l,
|  |  | ...
| ) |  | spa_loop_utils_method_s(l,add_timer,0,__VA_ARGS__)

## ◆ spa_loop_utils_destroy_source

#define spa_loop_utils_destroy_source | ( |  | l,
|  |  | ...
| ) |  | spa_loop_utils_method_v(l,destroy_source,0,__VA_ARGS__)

## ◆ spa_loop_utils_enable_idle

#define spa_loop_utils_enable_idle | ( |  | l,
|  |  | ...
| ) |  | spa_loop_utils_method_r(l,enable_idle,0,__VA_ARGS__)

## ◆ spa_loop_utils_method_r

#define spa_loop_utils_method_r | ( |  | o,
|  |  | method,
|  |  | version,
|  |  | ...
| ) |  |

Value:
({ \
int _res = -ENOTSUP; \
struct spa_loop_utils *_o = o; \
spa_interface_call_res(&_o->iface, \
struct spa_loop_utils_methods, _res, \
method, version, ##__VA_ARGS__); \
_res; \
})
spa_loop_utils_methods
Create sources for an event loop.
Definition: build/doc/spa/support/loop.h:234
spa_loop_utils
Definition: build/doc/spa/support/loop.h:52

## ◆ spa_loop_utils_method_s

#define spa_loop_utils_method_s | ( |  | o,
|  |  | method,
|  |  | version,
|  |  | ...
| ) |  |

Value:
({ \
struct spa_source *_res = NULL; \
struct spa_loop_utils *_o = o; \
spa_interface_call_res(&_o->iface, \
struct spa_loop_utils_methods, _res, \
method, version, ##__VA_ARGS__); \
_res; \
})
spa_source
Definition: build/doc/spa/support/loop.h:58

## ◆ spa_loop_utils_method_v

#define spa_loop_utils_method_v | ( |  | o,
|  |  | method,
|  |  | version,
|  |  | ...
| ) |  |

Value:
({ \
struct spa_loop_utils *_o = o; \
spa_interface_call(&_o->iface, \
struct spa_loop_utils_methods, \
method, version, ##__VA_ARGS__); \
})

## ◆ spa_loop_utils_signal_event

#define spa_loop_utils_signal_event | ( |  | l,
|  |  | ...
| ) |  | spa_loop_utils_method_r(l,signal_event,0,__VA_ARGS__)

## ◆ spa_loop_utils_update_io

#define spa_loop_utils_update_io | ( |  | l,
|  |  | ...
| ) |  | spa_loop_utils_method_r(l,update_io,0,__VA_ARGS__)

## ◆ spa_loop_utils_update_timer

#define spa_loop_utils_update_timer | ( |  | l,
|  |  | ...
| ) |  | spa_loop_utils_method_r(l,update_timer,0,__VA_ARGS__)

## ◆ spa_system_clock_getres

#define spa_system_clock_getres | ( |  | s,
|  |  | ...
| ) |  | spa_system_method_r(s,clock_getres,0,__VA_ARGS__)

## ◆ spa_system_clock_gettime

#define spa_system_clock_gettime | ( |  | s,
|  |  | ...
| ) |  | spa_system_method_r(s,clock_gettime,0,__VA_ARGS__)

## ◆ spa_system_close

#define spa_system_close | ( |  | s,
|  |  | ...
| ) |  | spa_system_method_r(s,close,0,__VA_ARGS__)

## ◆ spa_system_eventfd_create

#define spa_system_eventfd_create | ( |  | s,
|  |  | ...
| ) |  | spa_system_method_r(s,eventfd_create,0,__VA_ARGS__)

## ◆ spa_system_eventfd_read

#define spa_system_eventfd_read | ( |  | s,
|  |  | ...
| ) |  | spa_system_method_r(s,eventfd_read,0,__VA_ARGS__)

## ◆ spa_system_eventfd_write

#define spa_system_eventfd_write | ( |  | s,
|  |  | ...
| ) |  | spa_system_method_r(s,eventfd_write,0,__VA_ARGS__)

## ◆ spa_system_ioctl

#define spa_system_ioctl | ( |  | s,
|  |  | ...
| ) |  | spa_system_method_r(s,ioctl,0,__VA_ARGS__)

## ◆ spa_system_method_r

#define spa_system_method_r | ( |  | o,
|  |  | method,
|  |  | version,
|  |  | ...
| ) |  |

Value:
({ \
int _res = -ENOTSUP; \
struct spa_system *_o = o; \
spa_interface_call_res(&_o->iface, \
struct spa_system_methods, _res, \
method, version, ##__VA_ARGS__); \
_res; \
})
spa_system_methods
Definition: system.h:72
spa_system
Definition: system.h:52

## ◆ spa_system_pollfd_add

#define spa_system_pollfd_add | ( |  | s,
|  |  | ...
| ) |  | spa_system_method_r(s,pollfd_add,0,__VA_ARGS__)

## ◆ spa_system_pollfd_create

#define spa_system_pollfd_create | ( |  | s,
|  |  | ...
| ) |  | spa_system_method_r(s,pollfd_create,0,__VA_ARGS__)

## ◆ spa_system_pollfd_del

#define spa_system_pollfd_del | ( |  | s,
|  |  | ...
| ) |  | spa_system_method_r(s,pollfd_del,0,__VA_ARGS__)

## ◆ spa_system_pollfd_mod

#define spa_system_pollfd_mod | ( |  | s,
|  |  | ...
| ) |  | spa_system_method_r(s,pollfd_mod,0,__VA_ARGS__)

## ◆ spa_system_pollfd_wait

#define spa_system_pollfd_wait | ( |  | s,
|  |  | ...
| ) |  | spa_system_method_r(s,pollfd_wait,0,__VA_ARGS__)

## ◆ spa_system_read

#define spa_system_read | ( |  | s,
|  |  | ...
| ) |  | spa_system_method_r(s,read,0,__VA_ARGS__)

## ◆ spa_system_signalfd_create

#define spa_system_signalfd_create | ( |  | s,
|  |  | ...
| ) |  | spa_system_method_r(s,signalfd_create,0,__VA_ARGS__)

## ◆ spa_system_signalfd_read

#define spa_system_signalfd_read | ( |  | s,
|  |  | ...
| ) |  | spa_system_method_r(s,signalfd_read,0,__VA_ARGS__)

## ◆ spa_system_timerfd_create

#define spa_system_timerfd_create | ( |  | s,
|  |  | ...
| ) |  | spa_system_method_r(s,timerfd_create,0,__VA_ARGS__)

## ◆ spa_system_timerfd_gettime

#define spa_system_timerfd_gettime | ( |  | s,
|  |  | ...
| ) |  | spa_system_method_r(s,timerfd_gettime,0,__VA_ARGS__)

## ◆ spa_system_timerfd_read

#define spa_system_timerfd_read | ( |  | s,
|  |  | ...
| ) |  | spa_system_method_r(s,timerfd_read,0,__VA_ARGS__)

## ◆ spa_system_timerfd_settime

#define spa_system_timerfd_settime | ( |  | s,
|  |  | ...
| ) |  | spa_system_method_r(s,timerfd_settime,0,__VA_ARGS__)

## ◆ spa_system_write

#define spa_system_write | ( |  | s,
|  |  | ...
| ) |  | spa_system_method_r(s,write,0,__VA_ARGS__)

## ◆ SPA_TYPE_INFO_Thread

#define SPA_TYPE_INFO_Thread SPA_TYPE_INFO_POINTER_BASE "Thread"

a thread object.

This can be cast to a platform native thread, like pthread on posix systems

## ◆ SPA_TYPE_INTERFACE_CPU

#define SPA_TYPE_INTERFACE_CPU SPA_TYPE_INFO_INTERFACE_BASE "CPU"

The CPU features interface.

## ◆ SPA_TYPE_INTERFACE_DataLoop

#define SPA_TYPE_INTERFACE_DataLoop SPA_TYPE_INFO_INTERFACE_BASE "DataLoop"

## ◆ SPA_TYPE_INTERFACE_DataSystem

#define SPA_TYPE_INTERFACE_DataSystem SPA_TYPE_INFO_INTERFACE_BASE "DataSystem"

## ◆ SPA_TYPE_INTERFACE_DBus

#define SPA_TYPE_INTERFACE_DBus SPA_TYPE_INFO_INTERFACE_BASE "DBus"

## ◆ SPA_TYPE_INTERFACE_I18N

#define SPA_TYPE_INTERFACE_I18N SPA_TYPE_INFO_INTERFACE_BASE "I18N"

## ◆ SPA_TYPE_INTERFACE_Loop

#define SPA_TYPE_INTERFACE_Loop SPA_TYPE_INFO_INTERFACE_BASE "Loop"

## ◆ SPA_TYPE_INTERFACE_LoopControl

#define SPA_TYPE_INTERFACE_LoopControl SPA_TYPE_INFO_INTERFACE_BASE "LoopControl"

## ◆ SPA_TYPE_INTERFACE_LoopUtils

#define SPA_TYPE_INTERFACE_LoopUtils SPA_TYPE_INFO_INTERFACE_BASE "LoopUtils"

## ◆ SPA_TYPE_INTERFACE_PluginLoader

#define SPA_TYPE_INTERFACE_PluginLoader SPA_TYPE_INFO_INTERFACE_BASE "PluginLoader"

## ◆ SPA_TYPE_INTERFACE_System

#define SPA_TYPE_INTERFACE_System SPA_TYPE_INFO_INTERFACE_BASE "System"

a collection of core system functions

## ◆ SPA_TYPE_INTERFACE_ThreadUtils

#define SPA_TYPE_INTERFACE_ThreadUtils SPA_TYPE_INFO_INTERFACE_BASE "ThreadUtils"

## ◆ SPA_VERSION_CPU

#define SPA_VERSION_CPU 0

## ◆ SPA_VERSION_DBUS

#define SPA_VERSION_DBUS 0

## ◆ SPA_VERSION_I18N

#define SPA_VERSION_I18N 0

## ◆ SPA_VERSION_LOOP

#define SPA_VERSION_LOOP 0

## ◆ SPA_VERSION_LOOP_CONTROL

#define SPA_VERSION_LOOP_CONTROL 0

## ◆ SPA_VERSION_LOOP_UTILS

#define SPA_VERSION_LOOP_UTILS 0

## ◆ SPA_VERSION_PLUGIN_LOADER

#define SPA_VERSION_PLUGIN_LOADER 0

## ◆ SPA_VERSION_SYSTEM

#define SPA_VERSION_SYSTEM 0

## ◆ SPA_VERSION_THREAD_UTILS

#define SPA_VERSION_THREAD_UTILS 0

## Typedef Documentation

## ◆ spa_invoke_func_t

typedef int(* spa_invoke_func_t) (struct spa_loop *loop, bool async, uint32_t seq, const void *data, size_t size, void *user_data)

## ◆ spa_source_event_func_t

typedef void(* spa_source_event_func_t) (void *data, uint64_t count)

## ◆ spa_source_func_t

typedef void(* spa_source_func_t) (struct spa_source *source)

## ◆ spa_source_idle_func_t

typedef void(* spa_source_idle_func_t) (void *data)

## ◆ spa_source_io_func_t

typedef void(* spa_source_io_func_t) (void *data, int fd, uint32_t mask)

## ◆ spa_source_signal_func_t

typedef void(* spa_source_signal_func_t) (void *data, int signal_number)

## ◆ spa_source_timer_func_t

typedef void(* spa_source_timer_func_t) (void *data, uint64_t expirations)

## Enumeration Type Documentation

## ◆ spa_dbus_type

enum spa_dbus_type

Enumerator
SPA_DBUS_TYPE_SESSION | The login session bus.
SPA_DBUS_TYPE_SYSTEM | The systemwide bus.
SPA_DBUS_TYPE_STARTER | The bus that started us, if any.

## Function Documentation

## ◆ spa_dbus_get_connection()

struct spa_dbus_connection * spa_dbus_get_connection | ( | struct spa_dbus * | dbus,
|  | enum spa_dbus_type | type
| ) |  |
| inline

References spa_dbus::iface, and spa_interface_call_res.

Referenced by pipewire__module_init().

## ◆ spa_i18n_ntext()

const char * spa_i18n_ntext | ( | struct spa_i18n * | i18n,
|  | const char * | msgid,
|  | const char * | msgid_plural,
|  | unsigned long int | n
| ) |  |
| inline

References spa_i18n::iface, msgid_plural, n, spa_interface_call_res, and SPA_LIKELY.

Referenced by pw_ngettext().

## ◆ spa_i18n_text()

const char * spa_i18n_text | ( | struct spa_i18n * | i18n,
|  | const char * | msgid
| ) |  |
| inline

References spa_interface_call_res, and SPA_LIKELY.

Referenced by pw_gettext().

## ◆ spa_plugin_loader_load()

struct spa_handle * spa_plugin_loader_load | ( | struct spa_plugin_loader * | loader,
|  | const char * | factory_name,
|  | const struct spa_dict * | info
| ) |  |
| inline

References spa_plugin_loader::iface, spa_interface_call_res, and SPA_LIKELY.

## ◆ spa_plugin_loader_unload()

int spa_plugin_loader_unload | ( | struct spa_plugin_loader * | loader,
|  | struct spa_handle * | handle
| ) |  |
| inline

References spa_plugin_loader::iface, spa_interface_call_res, and SPA_LIKELY.

## ◆ spa_thread_utils_acquire_rt()

int spa_thread_utils_acquire_rt | ( | struct spa_thread_utils * | o,
|  | struct spa_thread * | thread,
|  | int | priority
| ) |  |
| inline

References spa_thread_utils::iface, and spa_interface_call_res.

## ◆ spa_thread_utils_create()

struct spa_thread * spa_thread_utils_create | ( | struct spa_thread_utils * | o,
|  | const struct spa_dict * | props,
|  | void *(*)(void *) | start_routine,
|  | void * | arg
| ) |  |
| inline

References spa_thread_utils::iface, props, and spa_interface_call_res.

## ◆ spa_thread_utils_drop_rt()

int spa_thread_utils_drop_rt | ( | struct spa_thread_utils * | o,
|  | struct spa_thread * | thread
| ) |  |
| inline

References spa_thread_utils::iface, and spa_interface_call_res.

## ◆ spa_thread_utils_get_rt_range()

int spa_thread_utils_get_rt_range | ( | struct spa_thread_utils * | o,
|  | const struct spa_dict * | props,
|  | int * | min,
|  | int * | max
| ) |  |
| inline

References spa_thread_utils::iface, props, and spa_interface_call_res.

## ◆ spa_thread_utils_join()

int spa_thread_utils_join | ( | struct spa_thread_utils * | o,
|  | struct spa_thread * | thread,
|  | void ** | retval
| ) |  |
| inline

References spa_thread_utils::iface, and spa_interface_call_res.