PipeWire: SPA Device

PipeWire 0.3.34

Data Structures | Macros
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
spa_device_methods:
Definition: build/doc/spa/monitor/device.h:146
spa_device
Definition: build/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