PipeWire  0.3.36
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_connectionspa_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_handlespa_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,
 
)    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; \
})
methods
Definition: cpu.h:113
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__); \
})
#define SPA_CALLBACK_CHECK(c, m, v)
Check if a callback c has method m of version v.
Definition: hook.h:136
#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); \
})
A list of hooks.
Definition: hook.h:284
A hook, contains the structure with functions and the data passed to the functions.
Definition: hook.h:295
Control hooks.
Definition: build-13883675/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; \
})
Control an event loop.
Definition: build-13883675/doc/spa/support/loop.h:154
Definition: build-13883675/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, \
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; \
})
Register sources and work items to an event loop.
Definition: build-13883675/doc/spa/support/loop.h:77
Definition: build-13883675/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; \
})
Create sources for an event loop.
Definition: build-13883675/doc/spa/support/loop.h:234
Definition: build-13883675/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; \
})
Definition: build-13883675/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, \
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; \
})
Definition: system.h:72
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

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

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

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

◆ spa_plugin_loader_unload()

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

◆ spa_thread_utils_acquire_rt()

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

◆ 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

◆ spa_thread_utils_drop_rt()

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

◆ 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

◆ spa_thread_utils_join()

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