PipeWire  0.3.36
SPA Device

The device interface can be used to monitor all kinds of devices and create objects as a result. More...

Data Structures

struct  spa_device
 
struct  spa_device_info
 Information about the device and parameters it supports. More...
 
struct  spa_device_object_info
 Information about a device object. More...
 
struct  spa_result_device_params
 
struct  spa_device_events
 spa_device_events: More...
 
struct  spa_device_methods
 spa_device_methods: More...
 

Macros

#define SPA_TYPE_INTERFACE_Device   SPA_TYPE_INFO_INTERFACE_BASE "Device"
 
#define SPA_VERSION_DEVICE   0
 
#define SPA_DEVICE_INFO_INIT()   (struct spa_device_info){ SPA_VERSION_DEVICE_INFO, }
 
#define SPA_DEVICE_OBJECT_INFO_INIT()   (struct spa_device_object_info){ SPA_VERSION_DEVICE_OBJECT_INFO, }
 
#define SPA_RESULT_TYPE_DEVICE_PARAMS   1
 the result of spa_device_enum_params() More...
 
#define SPA_DEVICE_EVENT_INFO   0
 
#define SPA_DEVICE_EVENT_RESULT   1
 
#define SPA_DEVICE_EVENT_EVENT   2
 
#define SPA_DEVICE_EVENT_OBJECT_INFO   3
 
#define SPA_DEVICE_EVENT_NUM   4
 
#define SPA_DEVICE_METHOD_ADD_LISTENER   0
 
#define SPA_DEVICE_METHOD_SYNC   1
 
#define SPA_DEVICE_METHOD_ENUM_PARAMS   2
 
#define SPA_DEVICE_METHOD_SET_PARAM   3
 
#define SPA_DEVICE_METHOD_NUM   4
 
#define spa_device_method(o, method, version, ...)
 
#define spa_device_add_listener(d, ...)   spa_device_method(d, add_listener, 0, __VA_ARGS__)
 
#define spa_device_sync(d, ...)   spa_device_method(d, sync, 0, __VA_ARGS__)
 
#define spa_device_enum_params(d, ...)   spa_device_method(d, enum_params, 0, __VA_ARGS__)
 
#define spa_device_set_param(d, ...)   spa_device_method(d, set_param, 0, __VA_ARGS__)
 
#define SPA_KEY_DEVICE_ENUM_API   "device.enum.api"
 the api used to discover this device More...
 
#define SPA_KEY_DEVICE_API   "device.api"
 the api used by the device Ex. More...
 
#define SPA_KEY_DEVICE_NAME   "device.name"
 the name of the device More...
 
#define SPA_KEY_DEVICE_ALIAS   "device.alias"
 alternative name of the device More...
 
#define SPA_KEY_DEVICE_NICK   "device.nick"
 the device short name More...
 
#define SPA_KEY_DEVICE_DESCRIPTION   "device.description"
 a device description More...
 
#define SPA_KEY_DEVICE_ICON   "device.icon"
 icon for the device. More...
 
#define SPA_KEY_DEVICE_ICON_NAME   "device.icon-name"
 an XDG icon name for the device. More...
 
#define SPA_KEY_DEVICE_PLUGGED_USEC   "device.plugged.usec"
 when the device was plugged More...
 
#define SPA_KEY_DEVICE_BUS_ID   "device.bus-id"
 the device bus-id More...
 
#define SPA_KEY_DEVICE_BUS_PATH   "device.bus-path"
 bus path to the device in the OS' format. More...
 
#define SPA_KEY_DEVICE_BUS   "device.bus"
 bus of the device if applicable. More...
 
#define SPA_KEY_DEVICE_SUBSYSTEM   "device.subsystem"
 device subsystem More...
 
#define SPA_KEY_DEVICE_SYSFS_PATH   "device.sysfs.path"
 device sysfs path More...
 
#define SPA_KEY_DEVICE_VENDOR_ID   "device.vendor.id"
 vendor ID if applicable More...
 
#define SPA_KEY_DEVICE_VENDOR_NAME   "device.vendor.name"
 vendor name if applicable More...
 
#define SPA_KEY_DEVICE_PRODUCT_ID   "device.product.id"
 product ID if applicable More...
 
#define SPA_KEY_DEVICE_PRODUCT_NAME   "device.product.name"
 product name if applicable More...
 
#define SPA_KEY_DEVICE_SERIAL   "device.serial"
 Serial number if applicable. More...
 
#define SPA_KEY_DEVICE_CLASS   "device.class"
 device class More...
 
#define SPA_KEY_DEVICE_CAPABILITIES   "device.capabilities"
 api specific device capabilities More...
 
#define SPA_KEY_DEVICE_FORM_FACTOR   "device.form-factor"
 form factor if applicable. More...
 
#define SPA_KEY_DEVICE_PROFILE   "device.profile "
 profile for the device More...
 
#define SPA_KEY_DEVICE_PROFILE_SET   "device.profile-set"
 profile set for the device More...
 
#define SPA_KEY_DEVICE_STRING   "device.string"
 device string in the underlying layer's format. More...
 

Detailed Description

The device interface can be used to monitor all kinds of devices and create objects as a result.

Objects a typically other Devices or Nodes.

Macro Definition Documentation

◆ spa_device_add_listener

#define spa_device_add_listener (   d,
  ... 
)    spa_device_method(d, add_listener, 0, __VA_ARGS__)

◆ spa_device_enum_params

#define spa_device_enum_params (   d,
  ... 
)    spa_device_method(d, enum_params, 0, __VA_ARGS__)

◆ SPA_DEVICE_EVENT_EVENT

#define SPA_DEVICE_EVENT_EVENT   2

◆ SPA_DEVICE_EVENT_INFO

#define SPA_DEVICE_EVENT_INFO   0

◆ SPA_DEVICE_EVENT_NUM

#define SPA_DEVICE_EVENT_NUM   4

◆ SPA_DEVICE_EVENT_OBJECT_INFO

#define SPA_DEVICE_EVENT_OBJECT_INFO   3

◆ SPA_DEVICE_EVENT_RESULT

#define SPA_DEVICE_EVENT_RESULT   1

◆ SPA_DEVICE_INFO_INIT

#define SPA_DEVICE_INFO_INIT ( )    (struct spa_device_info){ SPA_VERSION_DEVICE_INFO, }

◆ spa_device_method

#define spa_device_method (   o,
  method,
  version,
  ... 
)
Value:
({ \
int _res = -ENOTSUP; \
struct spa_device *_o = o; \
spa_interface_call_res(&_o->iface, \
struct spa_device_methods, _res, \
method, version, ##__VA_ARGS__); \
_res; \
})
spa_device_methods:
Definition: build-13876487/doc/spa/monitor/device.h:146
Definition: build-13876487/doc/spa/monitor/device.h:53

◆ SPA_DEVICE_METHOD_ADD_LISTENER

#define SPA_DEVICE_METHOD_ADD_LISTENER   0

◆ SPA_DEVICE_METHOD_ENUM_PARAMS

#define SPA_DEVICE_METHOD_ENUM_PARAMS   2

◆ SPA_DEVICE_METHOD_NUM

#define SPA_DEVICE_METHOD_NUM   4

◆ SPA_DEVICE_METHOD_SET_PARAM

#define SPA_DEVICE_METHOD_SET_PARAM   3

◆ SPA_DEVICE_METHOD_SYNC

#define SPA_DEVICE_METHOD_SYNC   1

◆ SPA_DEVICE_OBJECT_INFO_INIT

#define SPA_DEVICE_OBJECT_INFO_INIT ( )    (struct spa_device_object_info){ SPA_VERSION_DEVICE_OBJECT_INFO, }

◆ spa_device_set_param

#define spa_device_set_param (   d,
  ... 
)    spa_device_method(d, set_param, 0, __VA_ARGS__)

◆ spa_device_sync

#define spa_device_sync (   d,
  ... 
)    spa_device_method(d, sync, 0, __VA_ARGS__)

◆ SPA_KEY_DEVICE_ALIAS

#define SPA_KEY_DEVICE_ALIAS   "device.alias"

alternative name of the device

◆ SPA_KEY_DEVICE_API

#define SPA_KEY_DEVICE_API   "device.api"

the api used by the device Ex.

"udev", "alsa", "v4l2".

◆ SPA_KEY_DEVICE_BUS

#define SPA_KEY_DEVICE_BUS   "device.bus"

bus of the device if applicable.

One of "isa", "pci", "usb", "firewire", "bluetooth"

◆ SPA_KEY_DEVICE_BUS_ID

#define SPA_KEY_DEVICE_BUS_ID   "device.bus-id"

the device bus-id

◆ SPA_KEY_DEVICE_BUS_PATH

#define SPA_KEY_DEVICE_BUS_PATH   "device.bus-path"

bus path to the device in the OS' format.

Ex. "pci-0000:00:14.0-usb-0:3.2:1.0"

◆ SPA_KEY_DEVICE_CAPABILITIES

#define SPA_KEY_DEVICE_CAPABILITIES   "device.capabilities"

api specific device capabilities

◆ SPA_KEY_DEVICE_CLASS

#define SPA_KEY_DEVICE_CLASS   "device.class"

device class

◆ SPA_KEY_DEVICE_DESCRIPTION

#define SPA_KEY_DEVICE_DESCRIPTION   "device.description"

a device description

◆ SPA_KEY_DEVICE_ENUM_API

#define SPA_KEY_DEVICE_ENUM_API   "device.enum.api"

the api used to discover this device

◆ SPA_KEY_DEVICE_FORM_FACTOR

#define SPA_KEY_DEVICE_FORM_FACTOR   "device.form-factor"

form factor if applicable.

One of "internal", "speaker", "handset", "tv", "webcam", "microphone", "headset", "headphone", "hands-free", "car", "hifi", "computer", "portable"

◆ SPA_KEY_DEVICE_ICON

#define SPA_KEY_DEVICE_ICON   "device.icon"

icon for the device.

A base64 blob containing PNG image data

◆ SPA_KEY_DEVICE_ICON_NAME

#define SPA_KEY_DEVICE_ICON_NAME   "device.icon-name"

an XDG icon name for the device.

Ex. "sound-card-speakers-usb"

◆ SPA_KEY_DEVICE_NAME

#define SPA_KEY_DEVICE_NAME   "device.name"

the name of the device

◆ SPA_KEY_DEVICE_NICK

#define SPA_KEY_DEVICE_NICK   "device.nick"

the device short name

◆ SPA_KEY_DEVICE_PLUGGED_USEC

#define SPA_KEY_DEVICE_PLUGGED_USEC   "device.plugged.usec"

when the device was plugged

◆ SPA_KEY_DEVICE_PRODUCT_ID

#define SPA_KEY_DEVICE_PRODUCT_ID   "device.product.id"

product ID if applicable

◆ SPA_KEY_DEVICE_PRODUCT_NAME

#define SPA_KEY_DEVICE_PRODUCT_NAME   "device.product.name"

product name if applicable

◆ SPA_KEY_DEVICE_PROFILE

#define SPA_KEY_DEVICE_PROFILE   "device.profile "

profile for the device

◆ SPA_KEY_DEVICE_PROFILE_SET

#define SPA_KEY_DEVICE_PROFILE_SET   "device.profile-set"

profile set for the device

◆ SPA_KEY_DEVICE_SERIAL

#define SPA_KEY_DEVICE_SERIAL   "device.serial"

Serial number if applicable.

◆ SPA_KEY_DEVICE_STRING

#define SPA_KEY_DEVICE_STRING   "device.string"

device string in the underlying layer's format.

E.g. "surround51:0"

◆ SPA_KEY_DEVICE_SUBSYSTEM

#define SPA_KEY_DEVICE_SUBSYSTEM   "device.subsystem"

device subsystem

◆ SPA_KEY_DEVICE_SYSFS_PATH

#define SPA_KEY_DEVICE_SYSFS_PATH   "device.sysfs.path"

device sysfs path

◆ SPA_KEY_DEVICE_VENDOR_ID

#define SPA_KEY_DEVICE_VENDOR_ID   "device.vendor.id"

vendor ID if applicable

◆ SPA_KEY_DEVICE_VENDOR_NAME

#define SPA_KEY_DEVICE_VENDOR_NAME   "device.vendor.name"

vendor name if applicable

◆ SPA_RESULT_TYPE_DEVICE_PARAMS

#define SPA_RESULT_TYPE_DEVICE_PARAMS   1

the result of spa_device_enum_params()

◆ SPA_TYPE_INTERFACE_Device

#define SPA_TYPE_INTERFACE_Device   SPA_TYPE_INFO_INTERFACE_BASE "Device"

◆ SPA_VERSION_DEVICE

#define SPA_VERSION_DEVICE   0