Device
Core API

Device interface. More...

## Files

file | device.h
| `pipewire/device.h`

## Data Structures

struct | pw_device_info
| The device information. More...
struct | pw_device_events
| Device events. More...
struct | pw_device_methods
| Device methods. More...
struct | pw_device

## Macros

#define | PW_TYPE_INTERFACE_Device PW_TYPE_INFO_INTERFACE_BASE "Device"
#define | PW_VERSION_DEVICE 3
#define | PW_DEVICE_CHANGE_MASK_PROPS (1 << 0)
#define | PW_DEVICE_CHANGE_MASK_PARAMS (1 << 1)
#define | PW_DEVICE_CHANGE_MASK_ALL ((1 << 2)-1)
#define | PW_DEVICE_EVENT_INFO 0
#define | PW_DEVICE_EVENT_PARAM 1
#define | PW_DEVICE_EVENT_NUM 2
#define | PW_VERSION_DEVICE_EVENTS 0
#define | PW_DEVICE_METHOD_ADD_LISTENER 0
#define | PW_DEVICE_METHOD_SUBSCRIBE_PARAMS 1
#define | PW_DEVICE_METHOD_ENUM_PARAMS 2
#define | PW_DEVICE_METHOD_SET_PARAM 3
#define | PW_DEVICE_METHOD_NUM 4
#define | PW_VERSION_DEVICE_METHODS 0
#define | pw_device_method(o, method, version, ...)
#define | pw_device_add_listener(c, ...) pw_device_method(c,add_listener,0,__VA_ARGS__)
#define | pw_device_subscribe_params(c, ...) pw_device_method(c,subscribe_params,0,__VA_ARGS__)
| Subscribe to parameter changes. More...
#define | pw_device_enum_params(c, ...) pw_device_method(c,enum_params,0,__VA_ARGS__)
| Enumerate device parameters. More...
#define | pw_device_set_param(c, ...) pw_device_method(c,set_param,0,__VA_ARGS__)
| Set a parameter on the device. More...

## Functions

struct pw_device_info * | pw_device_info_update (struct pw_device_info *info, const struct pw_device_info *update)
| Update and existing pw_device_info with update and reset. More...
struct pw_device_info * | pw_device_info_merge (struct pw_device_info *info, const struct pw_device_info *update, bool reset)
| Merge and existing pw_device_info with update. More...
void | pw_device_info_free (struct pw_device_info *info)
| Free a pw_device_info. More...

## Detailed Description

Device interface.

## Macro Definition Documentation

## PW_TYPE_INTERFACE_Device

#define PW_TYPE_INTERFACE_Device PW_TYPE_INFO_INTERFACE_BASE "Device"

Examples
  export-spa-device.c.

## PW_VERSION_DEVICE

#define PW_VERSION_DEVICE 3

Examples
  export-spa-device.c.

## PW_DEVICE_CHANGE_MASK_PROPS

#define PW_DEVICE_CHANGE_MASK_PROPS (1 << 0)

## PW_DEVICE_CHANGE_MASK_PARAMS

#define PW_DEVICE_CHANGE_MASK_PARAMS (1 << 1)

## PW_DEVICE_CHANGE_MASK_ALL

#define PW_DEVICE_CHANGE_MASK_ALL ((1 << 2)-1)

## PW_DEVICE_EVENT_INFO

#define PW_DEVICE_EVENT_INFO 0

## PW_DEVICE_EVENT_PARAM

#define PW_DEVICE_EVENT_PARAM 1

## PW_DEVICE_EVENT_NUM

#define PW_DEVICE_EVENT_NUM 2

## PW_VERSION_DEVICE_EVENTS

#define PW_VERSION_DEVICE_EVENTS 0

## PW_DEVICE_METHOD_ADD_LISTENER

#define PW_DEVICE_METHOD_ADD_LISTENER 0

## PW_DEVICE_METHOD_SUBSCRIBE_PARAMS

#define PW_DEVICE_METHOD_SUBSCRIBE_PARAMS 1

## PW_DEVICE_METHOD_ENUM_PARAMS

#define PW_DEVICE_METHOD_ENUM_PARAMS 2

## PW_DEVICE_METHOD_SET_PARAM

#define PW_DEVICE_METHOD_SET_PARAM 3

## PW_DEVICE_METHOD_NUM

#define PW_DEVICE_METHOD_NUM 4

## PW_VERSION_DEVICE_METHODS

#define PW_VERSION_DEVICE_METHODS 0

## pw_device_method

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

## pw_device_add_listener

#define pw_device_add_listener | ( |  | c,
|  |  | ...
| ) |  | pw_device_method(c,add_listener,0,__VA_ARGS__)

See also
  pw_device_methods.add_listener

## pw_device_subscribe_params

#define pw_device_subscribe_params | ( |  | c,
|  |  | ...
| ) |  | pw_device_method(c,subscribe_params,0,__VA_ARGS__)

Subscribe to parameter changes.

Automatically emit param events for the given ids when they are changed.

Parameters

  ids | an array of param ids
  n_ids | the number of ids in ids

See also
  pw_device_methods.subscribe_params

## pw_device_enum_params

#define pw_device_enum_params | ( |  | c,
|  |  | ...
| ) |  | pw_device_method(c,enum_params,0,__VA_ARGS__)

Enumerate device parameters.

Start enumeration of device parameters. For each param, a param event will be emitted.

Parameters

  seq | a sequence number to place in the reply
  id | the parameter id to enum or PW_ID_ANY for all
  start | the start index or 0 for the first param
  num | the maximum number of params to retrieve
  filter | a param filter or NULL

See also
  pw_device_methods.enum_params

## pw_device_set_param

#define pw_device_set_param | ( |  | c,
|  |  | ...
| ) |  | pw_device_method(c,set_param,0,__VA_ARGS__)

Set a parameter on the device.

Parameters

  id | the parameter id to set
  flags | extra parameter flags
  param | the parameter to set

See also
  pw_device_methods.set_param

## Function Documentation

## pw_device_info_update()

struct pw_device_info* pw_device_info_update | ( | struct pw_device_info * | info,
|  | const struct pw_device_info * | update
| ) |  |

Update and existing pw_device_info with update and reset.

## pw_device_info_merge()

struct pw_device_info* pw_device_info_merge | ( | struct pw_device_info * | info,
|  | const struct pw_device_info * | update,
|  | bool | reset
| ) |  |

Merge and existing pw_device_info with update.

## pw_device_info_free()

void pw_device_info_free | ( | struct pw_device_info * | info | ) |

Free a pw_device_info.