ALSA project - the C library reference
Data Structures | Macros | Typedefs | Enumerations | Functions
External I/O plugin SDK
Collaboration diagram for External I/O 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_tsnd_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

◆ SND_PCM_IOPLUG_FLAG_BOUNDARY_WA

#define SND_PCM_IOPLUG_FLAG_BOUNDARY_WA   (1<<2)

hw pointer wrap around at boundary instead of buffer_size

◆ SND_PCM_IOPLUG_FLAG_LISTED

#define SND_PCM_IOPLUG_FLAG_LISTED   (1<<0)

list up this PCM

◆ SND_PCM_IOPLUG_FLAG_MONOTONIC

#define SND_PCM_IOPLUG_FLAG_MONOTONIC   (1<<1)

monotonic timestamps

◆ SND_PCM_IOPLUG_VERSION

#define SND_PCM_IOPLUG_VERSION
Value:
#define SND_PCM_IOPLUG_VERSION_MAJOR
Definition: pcm_ioplug.h:74
#define SND_PCM_IOPLUG_VERSION_MINOR
Definition: pcm_ioplug.h:75
#define SND_PCM_IOPLUG_VERSION_TINY
Definition: pcm_ioplug.h:76

IO-plugin protocol version

◆ SND_PCM_IOPLUG_VERSION_MAJOR

#define SND_PCM_IOPLUG_VERSION_MAJOR   1

Protocol major version

◆ SND_PCM_IOPLUG_VERSION_MINOR

#define SND_PCM_IOPLUG_VERSION_MINOR   0

Protocol minor version

◆ SND_PCM_IOPLUG_VERSION_TINY

#define SND_PCM_IOPLUG_VERSION_TINY   2

Protocol tiny version

Typedef Documentation

◆ snd_pcm_ioplug_callback_t

Callback table of ioplug

◆ snd_pcm_ioplug_t

I/O plugin handle

Enumeration Type Documentation

◆ anonymous enum

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_ioplug_avail()

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
ioplugthe ioplug handle
hw_ptrhardware pointer in frames
appl_ptrapplication pointer in frames
Returns
available frames for the application

◆ snd_pcm_ioplug_create()

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
ioplugthe ioplug handle
namename of PCM
streamstream direction
modePCM 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.

◆ snd_pcm_ioplug_delete()

int snd_pcm_ioplug_delete ( snd_pcm_ioplug_t ioplug)

Delete the ioplug instance.

Parameters
ioplugthe ioplug handle
Returns
0 if successful, or a negative error code

◆ snd_pcm_ioplug_hw_avail()

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
ioplugthe ioplug handle
hw_ptrhardware pointer in frames
appl_ptrapplication pointer in frames
Returns
available frames for the hardware

◆ snd_pcm_ioplug_mmap_areas()

const snd_pcm_channel_area_t * snd_pcm_ioplug_mmap_areas ( snd_pcm_ioplug_t ioplug)

Get mmap area of ioplug.

Parameters
ioplugthe 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.

◆ snd_pcm_ioplug_params_reset()

void snd_pcm_ioplug_params_reset ( snd_pcm_ioplug_t ioplug)

Reset ioplug parameters.

Parameters
ioplugthe ioplug handle

Resets the all parameters for the given ioplug handle.

◆ snd_pcm_ioplug_reinit_status()

int snd_pcm_ioplug_reinit_status ( snd_pcm_ioplug_t ioplug)

Reinitialize the poll and mmap status.

Parameters
ioplugthe 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.

◆ snd_pcm_ioplug_set_param_list()

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
ioplugthe ioplug handle
typeparameter type
num_listnumber of available values
listthe 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.

◆ snd_pcm_ioplug_set_param_minmax()

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
ioplugthe ioplug handle
typeparameter type
minthe minimum value
maxthe 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.

◆ snd_pcm_ioplug_set_state()

int snd_pcm_ioplug_set_state ( snd_pcm_ioplug_t ioplug,
snd_pcm_state_t  state 
)

Change the ioplug PCM status.

Parameters
ioplugthe ioplug handle
statethe 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.