PipeWire 1.6.8

Loading...
Searching...
No Matches
Device
SPA

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

## Files
file | device.h
| spa/monitor/device.h
file | event.h
| spa/monitor/event.h
file | type-info.h
| spa/monitor/type-info.h

## 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...
struct | spa_result_device_params_data

## Enumerations
enum | spa_device_event { SPA_DEVICE_EVENT_ObjectConfig }
enum | spa_event_device { SPA_EVENT_DEVICE_START , SPA_EVENT_DEVICE_Object , SPA_EVENT_DEVICE_Props }

## Macros
#define | SPA_TYPE_INTERFACE_Device SPA_TYPE_INFO_INTERFACE_BASE "Device"
#define | SPA_VERSION_DEVICE 0
#define | SPA_VERSION_DEVICE_INFO 0
#define | SPA_DEVICE_CHANGE_MASK_FLAGS (1u<<0)
#define | SPA_DEVICE_CHANGE_MASK_PROPS (1u<<1)
#define | SPA_DEVICE_CHANGE_MASK_PARAMS (1u<<2)
#define | SPA_DEVICE_INFO_INIT()
#define | SPA_VERSION_DEVICE_OBJECT_INFO 0
#define | SPA_DEVICE_OBJECT_CHANGE_MASK_FLAGS (1u<<0)
#define | SPA_DEVICE_OBJECT_CHANGE_MASK_PROPS (1u<<1)
#define | SPA_DEVICE_OBJECT_INFO_INIT()
#define | SPA_RESULT_TYPE_DEVICE_PARAMS 1
| the result of spa_device_enum_params()
#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_VERSION_DEVICE_EVENTS 0
| version of the structure
#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_VERSION_DEVICE_METHODS 0
#define | SPA_KEY_DEVICE_ENUM_API "device.enum.api"
| the api used to discover this device
#define | SPA_KEY_DEVICE_API "device.api"
| the api used by the device Ex.
#define | SPA_KEY_DEVICE_NAME "device.name"
| the name of the device
#define | SPA_KEY_DEVICE_ALIAS "device.alias"
| alternative name of the device
#define | SPA_KEY_DEVICE_NICK "device.nick"
| the device short name
#define | SPA_KEY_DEVICE_DESCRIPTION "device.description"
| a device description
#define | SPA_KEY_DEVICE_ICON "device.icon"
| icon for the device.
#define | SPA_KEY_DEVICE_ICON_NAME "device.icon-name"
| an XDG icon name for the device.
#define | SPA_KEY_DEVICE_PLUGGED_USEC "device.plugged.usec"
| when the device was plugged
#define | SPA_KEY_DEVICE_BUS_ID "device.bus-id"
| the device bus-id
#define | SPA_KEY_DEVICE_BUS_PATH "device.bus-path"
| bus path to the device in the OS' format.
#define | SPA_KEY_DEVICE_BUS "device.bus"
| bus of the device if applicable.
#define | SPA_KEY_DEVICE_SUBSYSTEM "device.subsystem"
| device subsystem
#define | SPA_KEY_DEVICE_SYSFS_PATH "device.sysfs.path"
| device sysfs path
#define | SPA_KEY_DEVICE_VENDOR_ID "device.vendor.id"
| vendor ID if applicable
#define | SPA_KEY_DEVICE_VENDOR_NAME "device.vendor.name"
| vendor name if applicable
#define | SPA_KEY_DEVICE_PRODUCT_ID "device.product.id"
| product ID if applicable
#define | SPA_KEY_DEVICE_PRODUCT_NAME "device.product.name"
| product name if applicable
#define | SPA_KEY_DEVICE_SERIAL "device.serial"
| Serial number if applicable.
#define | SPA_KEY_DEVICE_CLASS "device.class"
| device class
#define | SPA_KEY_DEVICE_CAPABILITIES "device.capabilities"
| api specific device capabilities
#define | SPA_KEY_DEVICE_FORM_FACTOR "device.form-factor"
| form factor if applicable.
#define | SPA_KEY_DEVICE_PROFILE "device.profile"
| profile for the device
#define | SPA_KEY_DEVICE_PROFILE_SET "device.profile-set"
| profile set for the device
#define | SPA_KEY_DEVICE_STRING "device.string"
| device string in the underlying layer's format.
#define | SPA_KEY_DEVICE_DEVIDS "device.devids"
| space separated list of device ids (dev_t) of the underlying device(s) if applicable
#define | SPA_DEVICE_EVENT_ID(ev)
#define | SPA_DEVICE_EVENT_INIT(id)
#define | SPA_TYPE_INFO_DeviceEvent SPA_TYPE_INFO_EVENT_BASE "Device"
#define | SPA_TYPE_INFO_DEVICE_EVENT_BASE SPA_TYPE_INFO_DeviceEvent ":"
#define | SPA_TYPE_INFO_DeviceEventId SPA_TYPE_INFO_ENUM_BASE "DeviceEventId"
#define | SPA_TYPE_INFO_DEVICE_EVENT_ID_BASE SPA_TYPE_INFO_DeviceEventId ":"
#define | spa_device_emit(hooks, method, version, ...)
#define | spa_device_emit_info(hooks, i)
#define | spa_device_emit_result(hooks, s, r, t, res)
#define | spa_device_emit_event(hooks, e)
#define | spa_device_emit_object_info(hooks, id, i)

## Functions
SPA_API_DEVICE int | spa_device_add_listener (struct spa_device *object, struct spa_hook *listener, const struct spa_device_events *events, void *data)
SPA_API_DEVICE int | spa_device_sync (struct spa_device *object, int seq)
SPA_API_DEVICE int | spa_device_enum_params (struct spa_device *object, int seq, uint32_t id, uint32_t index, uint32_t max, const struct spa_pod *filter)
SPA_API_DEVICE int | spa_device_set_param (struct spa_device *object, uint32_t id, uint32_t flags, const struct spa_pod *param)
SPA_API_DEVICE_UTILS void | spa_result_func_device_params (void *data, int seq, int res 1, uint32_t type, const void *result)
SPA_API_DEVICE_UTILS int | spa_device_enum_params_sync (struct spa_device *device, uint32_t id, uint32_t *index, const struct spa_pod *filter, struct spa_pod **param, struct spa_pod_builder *builder)

## Variables
static const struct spa_type_info | spa_type_device_event_id []
static const struct spa_type_info | spa_type_device_event []

## 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.

## Enumeration Type Documentation

## ◆ spa_device_event

enum spa_device_event

Enumerator
SPA_DEVICE_EVENT_ObjectConfig |

## ◆ spa_event_device

enum spa_event_device

Enumerator
SPA_EVENT_DEVICE_START |
SPA_EVENT_DEVICE_Object |
SPA_EVENT_DEVICE_Props |

## Macro Definition Documentation

## ◆ SPA_TYPE_INTERFACE_Device

#define SPA_TYPE_INTERFACE_Device SPA_TYPE_INFO_INTERFACE_BASE "Device"

Examples
  bluez-session.c, and export-spa-device.c.

## ◆ SPA_VERSION_DEVICE

#define SPA_VERSION_DEVICE 0

## ◆ SPA_VERSION_DEVICE_INFO

#define SPA_VERSION_DEVICE_INFO 0

## ◆ SPA_DEVICE_CHANGE_MASK_FLAGS

#define SPA_DEVICE_CHANGE_MASK_FLAGS (1u<<0)

## ◆ SPA_DEVICE_CHANGE_MASK_PROPS

#define SPA_DEVICE_CHANGE_MASK_PROPS (1u<<1)

## ◆ SPA_DEVICE_CHANGE_MASK_PARAMS

#define SPA_DEVICE_CHANGE_MASK_PARAMS (1u<<2)

## ◆ SPA_DEVICE_INFO_INIT

#define SPA_DEVICE_INFO_INIT | ( |  | ) |

Value:
((struct spa_device_info){ SPA_VERSION_DEVICE_INFO, })
SPA_VERSION_DEVICE_INFO
#define SPA_VERSION_DEVICE_INFO
Definition device.h:59
spa_device_info
Information about the device and parameters it supports.
Definition device.h:57

## ◆ SPA_VERSION_DEVICE_OBJECT_INFO

#define SPA_VERSION_DEVICE_OBJECT_INFO 0

## ◆ SPA_DEVICE_OBJECT_CHANGE_MASK_FLAGS

#define SPA_DEVICE_OBJECT_CHANGE_MASK_FLAGS (1u<<0)

## ◆ SPA_DEVICE_OBJECT_CHANGE_MASK_PROPS

#define SPA_DEVICE_OBJECT_CHANGE_MASK_PROPS (1u<<1)

## ◆ SPA_DEVICE_OBJECT_INFO_INIT

#define SPA_DEVICE_OBJECT_INFO_INIT | ( |  | ) |

Value:
((struct spa_device_object_info){ SPA_VERSION_DEVICE_OBJECT_INFO, })
SPA_VERSION_DEVICE_OBJECT_INFO
#define SPA_VERSION_DEVICE_OBJECT_INFO
Definition device.h:85
spa_device_object_info
Information about a device object.
Definition device.h:83

## ◆ SPA_RESULT_TYPE_DEVICE_PARAMS

#define SPA_RESULT_TYPE_DEVICE_PARAMS 1

the result of spa_device_enum_params()

## ◆ SPA_DEVICE_EVENT_INFO

#define SPA_DEVICE_EVENT_INFO 0

## ◆ SPA_DEVICE_EVENT_RESULT

#define SPA_DEVICE_EVENT_RESULT 1

## ◆ SPA_DEVICE_EVENT_EVENT

#define SPA_DEVICE_EVENT_EVENT 2

## ◆ SPA_DEVICE_EVENT_OBJECT_INFO

#define SPA_DEVICE_EVENT_OBJECT_INFO 3

## ◆ SPA_DEVICE_EVENT_NUM

#define SPA_DEVICE_EVENT_NUM 4

## ◆ SPA_VERSION_DEVICE_EVENTS

#define SPA_VERSION_DEVICE_EVENTS 0

version of the structure

Examples
  bluez-session.c.

## ◆ SPA_DEVICE_METHOD_ADD_LISTENER

#define SPA_DEVICE_METHOD_ADD_LISTENER 0

## ◆ SPA_DEVICE_METHOD_SYNC

#define SPA_DEVICE_METHOD_SYNC 1

## ◆ SPA_DEVICE_METHOD_ENUM_PARAMS

#define SPA_DEVICE_METHOD_ENUM_PARAMS 2

## ◆ SPA_DEVICE_METHOD_SET_PARAM

#define SPA_DEVICE_METHOD_SET_PARAM 3

## ◆ SPA_DEVICE_METHOD_NUM

#define SPA_DEVICE_METHOD_NUM 4

## ◆ SPA_VERSION_DEVICE_METHODS

#define SPA_VERSION_DEVICE_METHODS 0

## ◆ SPA_KEY_DEVICE_ENUM_API

#define SPA_KEY_DEVICE_ENUM_API "device.enum.api"

the api used to discover this 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_NAME

#define SPA_KEY_DEVICE_NAME "device.name"

the name of the device

## ◆ SPA_KEY_DEVICE_ALIAS

#define SPA_KEY_DEVICE_ALIAS "device.alias"

alternative name of the device

## ◆ SPA_KEY_DEVICE_NICK

#define SPA_KEY_DEVICE_NICK "device.nick"

the device short name

## ◆ SPA_KEY_DEVICE_DESCRIPTION

#define SPA_KEY_DEVICE_DESCRIPTION "device.description"

a device description

## ◆ 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_PLUGGED_USEC

#define SPA_KEY_DEVICE_PLUGGED_USEC "device.plugged.usec"

when the device was plugged

## ◆ 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_BUS

#define SPA_KEY_DEVICE_BUS "device.bus"

bus of the device if applicable.

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

## ◆ 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_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_SERIAL

#define SPA_KEY_DEVICE_SERIAL "device.serial"

Serial number if applicable.

## ◆ SPA_KEY_DEVICE_CLASS

#define SPA_KEY_DEVICE_CLASS "device.class"

device class

## ◆ SPA_KEY_DEVICE_CAPABILITIES

#define SPA_KEY_DEVICE_CAPABILITIES "device.capabilities"

api specific device capabilities

## ◆ 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_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_STRING

#define SPA_KEY_DEVICE_STRING "device.string"

device string in the underlying layer's format.

E.g. "surround51:0"

## ◆ SPA_KEY_DEVICE_DEVIDS

#define SPA_KEY_DEVICE_DEVIDS "device.devids"

space separated list of device ids (dev_t) of the underlying device(s) if applicable

## ◆ SPA_DEVICE_EVENT_ID

#define SPA_DEVICE_EVENT_ID | ( |  | ev | ) |

Value:
SPA_EVENT_ID(ev, SPA_TYPE_EVENT_Device)
SPA_EVENT_ID
#define SPA_EVENT_ID(ev, type)
Definition event.h:35
SPA_TYPE_EVENT_Device
@ SPA_TYPE_EVENT_Device
Definition type.h:73

## ◆ SPA_DEVICE_EVENT_INIT

#define SPA_DEVICE_EVENT_INIT | ( |  | id | ) |

Value:
SPA_EVENT_INIT(SPA_TYPE_EVENT_Device, id)
SPA_EVENT_INIT
#define SPA_EVENT_INIT(type, id)
Definition event.h:42

## ◆ SPA_TYPE_INFO_DeviceEvent

#define SPA_TYPE_INFO_DeviceEvent SPA_TYPE_INFO_EVENT_BASE "Device"

## ◆ SPA_TYPE_INFO_DEVICE_EVENT_BASE

#define SPA_TYPE_INFO_DEVICE_EVENT_BASE SPA_TYPE_INFO_DeviceEvent ":"

## ◆ SPA_TYPE_INFO_DeviceEventId

#define SPA_TYPE_INFO_DeviceEventId SPA_TYPE_INFO_ENUM_BASE "DeviceEventId"

## ◆ SPA_TYPE_INFO_DEVICE_EVENT_ID_BASE

#define SPA_TYPE_INFO_DEVICE_EVENT_ID_BASE SPA_TYPE_INFO_DeviceEventId ":"

## ◆ spa_device_emit

#define spa_device_emit | ( |  | hooks,
|  |  | method,
|  |  | version,
|  |  | ... )

## ◆ spa_device_emit_info

#define spa_device_emit_info | ( |  | hooks,
|  |  | i )

Value:
spa_device_emit(hooks,info, 0, i)
spa_device_emit
#define spa_device_emit(hooks, method, version,...)
Definition utils.h:84

## ◆ spa_device_emit_result

#define spa_device_emit_result | ( |  | hooks,
|  |  | s,
|  |  | r,
|  |  | t,
|  |  | res )

Value:
spa_device_emit(hooks,result, 0, s, r, t, res)
r
uint32_t int int const char int r
Definition core.h:447
res
uint32_t int int res
Definition core.h:433

## ◆ spa_device_emit_event

#define spa_device_emit_event | ( |  | hooks,
|  |  | e )

Value:
spa_device_emit(hooks,event, 0, e)

## ◆ spa_device_emit_object_info

#define spa_device_emit_object_info | ( |  | hooks,
|  |  | id,
|  |  | i )

Value:
spa_device_emit(hooks,object_info, 0, id, i)

## Function Documentation

## ◆ spa_device_add_listener()

SPA_API_DEVICE int spa_device_add_listener | ( | struct spa_device * | object,
|  | struct spa_hook * | listener,
|  | const struct spa_device_events * | events,
|  | void * | data )

Examples
  bluez-session.c.

## ◆ spa_device_sync()

SPA_API_DEVICE int spa_device_sync | ( | struct spa_device * | object,
|  | int | seq )

## ◆ spa_device_enum_params()

SPA_API_DEVICE int spa_device_enum_params | ( | struct spa_device * | object,
|  | int | seq,
|  | uint32_t | id,
|  | uint32_t | index,
|  | uint32_t | max,
|  | const struct spa_pod * | filter )

## ◆ spa_device_set_param()

SPA_API_DEVICE int spa_device_set_param | ( | struct spa_device * | object,
|  | uint32_t | id,
|  | uint32_t | flags,
|  | const struct spa_pod * | param )

## ◆ spa_result_func_device_params()

SPA_API_DEVICE_UTILS void spa_result_func_device_params | ( | void * | data,
|  | int | seq,
|  | int res | 1,
|  | uint32_t | type,
|  | const void * | result )

## ◆ spa_device_enum_params_sync()

SPA_API_DEVICE_UTILS int spa_device_enum_params_sync | ( | struct spa_device * | device,
|  | uint32_t | id,
|  | uint32_t * | index,
|  | const struct spa_pod * | filter,
|  | struct spa_pod ** | param,
|  | struct spa_pod_builder * | builder )

## Variable Documentation

## ◆ spa_type_device_event_id

const struct spa_type_info spa_type_device_event_id[]
| static

## ◆ spa_type_device_event

const struct spa_type_info spa_type_device_event[]
| static