ALSA project - the C library reference: External I/O plugin SDK

ALSA project - the C library reference

- Main Page
- Related Pages
- Modules
- Data Structures
- Files
- Examples

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Typedefs | Enumerations | Functions
External I/O plugin SDK
External PCM plugin SDK

## Data Structures
struct | snd_pcm_ioplug_t
struct | snd_pcm_ioplug_callback_t

## Macros
#define | SND_PCM_IOPLUG_FLAG_LISTED (1<<0)
#define | SND_PCM_IOPLUG_FLAG_MONOTONIC (1<<1)
#define | SND_PCM_IOPLUG_FLAG_BOUNDARY_WA (1<<2)
#define | SND_PCM_IOPLUG_VERSION_MAJOR 1
#define | SND_PCM_IOPLUG_VERSION_MINOR 0
#define | SND_PCM_IOPLUG_VERSION_TINY 2
#define | SND_PCM_IOPLUG_VERSION

## Typedefs
typedef snd_pcm_ioplug | snd_pcm_ioplug_t
typedef snd_pcm_ioplug_callback | snd_pcm_ioplug_callback_t

## Enumerations
enum | { SND_PCM_IOPLUG_HW_ACCESS = 0, SND_PCM_IOPLUG_HW_FORMAT, SND_PCM_IOPLUG_HW_CHANNELS, SND_PCM_IOPLUG_HW_RATE, SND_PCM_IOPLUG_HW_PERIOD_BYTES, SND_PCM_IOPLUG_HW_BUFFER_BYTES, SND_PCM_IOPLUG_HW_PERIODS, SND_PCM_IOPLUG_HW_PARAMS }

## Functions
int | snd_pcm_ioplug_create (snd_pcm_ioplug_t *io, const char *name, snd_pcm_stream_t stream, int mode)
| Create an ioplug instance. More...
int | snd_pcm_ioplug_delete (snd_pcm_ioplug_t *io)
| Delete the ioplug instance. More...
int | snd_pcm_ioplug_reinit_status (snd_pcm_ioplug_t *ioplug)
| Reinitialize the poll and mmap status. More...
const snd_pcm_channel_area_t * | snd_pcm_ioplug_mmap_areas (snd_pcm_ioplug_t *ioplug)
| Get mmap area of ioplug. More...
void | snd_pcm_ioplug_params_reset (snd_pcm_ioplug_t *io)
| Reset ioplug parameters. More...
int | snd_pcm_ioplug_set_param_minmax (snd_pcm_ioplug_t *io, int type, unsigned int min, unsigned int max)
| Set parameter as the min/max values. More...
int | snd_pcm_ioplug_set_param_list (snd_pcm_ioplug_t *io, int type, unsigned int num_list, const unsigned int *list)
| Set parameter as the list. More...
int | snd_pcm_ioplug_set_state (snd_pcm_ioplug_t *ioplug, snd_pcm_state_t state)
| Change the ioplug PCM status. More...
snd_pcm_uframes_t | snd_pcm_ioplug_avail (const snd_pcm_ioplug_t *const ioplug, const snd_pcm_uframes_t hw_ptr, const snd_pcm_uframes_t appl_ptr)
| Get the available frames. This function can be used to calculate the the available frames before calling snd_pcm_avail_update() More...
snd_pcm_uframes_t | snd_pcm_ioplug_hw_avail (const snd_pcm_ioplug_t *const ioplug, const snd_pcm_uframes_t hw_ptr, const snd_pcm_uframes_t appl_ptr)
| Get the available frames. This function can be used to calculate the the available frames before calling snd_pcm_avail_update() More...

## Detailed Description

See the PCM (digital audio) interface page for more details.

## Macro Definition Documentation

#define SND_PCM_IOPLUG_FLAG_BOUNDARY_WA (1<<2)

hw pointer wrap around at boundary instead of buffer_size

#define SND_PCM_IOPLUG_FLAG_LISTED (1<<0)

list up this PCM

#define SND_PCM_IOPLUG_FLAG_MONOTONIC (1<<1)

monotonic timestamps

#define SND_PCM_IOPLUG_VERSION

Value:
((SND_PCM_IOPLUG_VERSION_MAJOR<<16) |\
(SND_PCM_IOPLUG_VERSION_MINOR<<8) |\
(SND_PCM_IOPLUG_VERSION_TINY))
SND_PCM_IOPLUG_VERSION_MINOR
#define SND_PCM_IOPLUG_VERSION_MINOR
Definition: pcm_ioplug.h:75
SND_PCM_IOPLUG_VERSION_TINY
#define SND_PCM_IOPLUG_VERSION_TINY
Definition: pcm_ioplug.h:76
SND_PCM_IOPLUG_VERSION_MAJOR
#define SND_PCM_IOPLUG_VERSION_MAJOR
Definition: pcm_ioplug.h:74

IO-plugin protocol version

#define SND_PCM_IOPLUG_VERSION_MAJOR 1

Protocol major version

#define SND_PCM_IOPLUG_VERSION_MINOR 0

Protocol minor version

#define SND_PCM_IOPLUG_VERSION_TINY 2

Protocol tiny version

## Typedef Documentation

typedef struct snd_pcm_ioplug_callback snd_pcm_ioplug_callback_t

Callback table of ioplug

typedef struct snd_pcm_ioplug snd_pcm_ioplug_t

I/O plugin handle

## Enumeration Type Documentation

anonymous enum

hw constraints for ioplug

Enumerator
SND_PCM_IOPLUG_HW_ACCESS | access type
SND_PCM_IOPLUG_HW_FORMAT | format
SND_PCM_IOPLUG_HW_CHANNELS | channels
SND_PCM_IOPLUG_HW_RATE | rate
SND_PCM_IOPLUG_HW_PERIOD_BYTES | period bytes
SND_PCM_IOPLUG_HW_BUFFER_BYTES | buffer bytes
SND_PCM_IOPLUG_HW_PERIODS | number of periods
SND_PCM_IOPLUG_HW_PARAMS | max number of hw constraints

## Function Documentation

snd_pcm_uframes_t snd_pcm_ioplug_avail | ( | const snd_pcm_ioplug_t *const | ioplug,
|  | const snd_pcm_uframes_t | hw_ptr,
|  | const snd_pcm_uframes_t | appl_ptr
| ) |  |

Get the available frames. This function can be used to calculate the the available frames before calling snd_pcm_avail_update()

Parameters

  ioplug | the ioplug handle
  hw_ptr | hardware pointer in frames
  appl_ptr | application pointer in frames

Returns
  available frames for the application

int snd_pcm_ioplug_create | ( | snd_pcm_ioplug_t * | ioplug,
|  | const char * | name,
|  | snd_pcm_stream_t | stream,
|  | int | mode
| ) |  |

Create an ioplug instance.

Parameters

  ioplug | the ioplug handle
  name | name of PCM
  stream | stream direction
  mode | PCM open mode

Returns
  0 if successful, or a negative error code

Creates the ioplug instance.

The callback is the mandatory field of ioplug handle. At least, start, stop and pointer callbacks must be set before calling this function.

int snd_pcm_ioplug_delete | ( | snd_pcm_ioplug_t * | ioplug | ) |

Delete the ioplug instance.

Parameters

  ioplug | the ioplug handle

Returns
  0 if successful, or a negative error code

snd_pcm_uframes_t snd_pcm_ioplug_hw_avail | ( | const snd_pcm_ioplug_t *const | ioplug,
|  | const snd_pcm_uframes_t | hw_ptr,
|  | const snd_pcm_uframes_t | appl_ptr
| ) |  |

Get the available frames. This function can be used to calculate the the available frames before calling snd_pcm_avail_update()

Parameters

  ioplug | the ioplug handle
  hw_ptr | hardware pointer in frames
  appl_ptr | application pointer in frames

Returns
  available frames for the hardware

const snd_pcm_channel_area_t* snd_pcm_ioplug_mmap_areas | ( | snd_pcm_ioplug_t * | ioplug | ) |

Get mmap area of ioplug.

Parameters

  ioplug | the ioplug handle

Returns
  the mmap channel areas if available, or NULL

Returns the mmap channel areas if available. When mmap_rw field is not set, this function always returns NULL.

void snd_pcm_ioplug_params_reset | ( | snd_pcm_ioplug_t * | ioplug | ) |

Reset ioplug parameters.

Parameters

  ioplug | the ioplug handle

Resets the all parameters for the given ioplug handle.

int snd_pcm_ioplug_reinit_status | ( | snd_pcm_ioplug_t * | ioplug | ) |

Reinitialize the poll and mmap status.

Parameters

  ioplug | the ioplug handle

Returns
  0 if successful, or a negative error code

Reinitializes the poll and the mmap status of the PCM. Call this function to propagate the status change in the ioplug instance to its PCM internals.

int snd_pcm_ioplug_set_param_list | ( | snd_pcm_ioplug_t * | ioplug,
|  | int | type,
|  | unsigned int | num_list,
|  | const unsigned int * | list
| ) |  |

Set parameter as the list.

Parameters

  ioplug | the ioplug handle
  type | parameter type
  num_list | number of available values
  list | the list of available values

Returns
  0 if successful, or a negative error code

Sets the parameter as the list. The available values of the given parameter type is restricted to the ones of the given list.

int snd_pcm_ioplug_set_param_minmax | ( | snd_pcm_ioplug_t * | ioplug,
|  | int | type,
|  | unsigned int | min,
|  | unsigned int | max
| ) |  |

Set parameter as the min/max values.

Parameters

  ioplug | the ioplug handle
  type | parameter type
  min | the minimum value
  max | the maximum value

Returns
  0 if successful, or a negative error code

Sets the parameter as the min/max values. The available values of the given parameter type is restricted between the given minimum and maximum values.

int snd_pcm_ioplug_set_state | ( | snd_pcm_ioplug_t * | ioplug,
|  | snd_pcm_state_t | state
| ) |  |

Change the ioplug PCM status.

Parameters

  ioplug | the ioplug handle
  state | the PCM status

Returns
  zero if successful or a negative error code

Changes the PCM status of the ioplug to the given value. This function can be used for external plugins to notify the status change, e.g. XRUN.