Modules | |
Simple Mixer Interface | |
Defines | |
#define | snd_mixer_class_alloca(ptr) |
allocate an invalid snd_mixer_class_t using standard alloca | |
Typedefs | |
typedef struct _snd_mixer | snd_mixer_t |
typedef struct _snd_mixer_class | snd_mixer_class_t |
typedef struct _snd_mixer_elem | snd_mixer_elem_t |
typedef int(* | snd_mixer_callback_t )(snd_mixer_t *ctl, unsigned int mask, snd_mixer_elem_t *elem) |
Mixer callback function. | |
typedef int(* | snd_mixer_elem_callback_t )(snd_mixer_elem_t *elem, unsigned int mask) |
Mixer element callback function. | |
typedef int(* | snd_mixer_compare_t )(const snd_mixer_elem_t *e1, const snd_mixer_elem_t *e2) |
Compare function for sorting mixer elements. | |
typedef int(* | snd_mixer_event_t )(snd_mixer_class_t *class_, unsigned int mask, snd_hctl_elem_t *helem, snd_mixer_elem_t *melem) |
Event callback for the mixer class. | |
Enumerations | |
enum | snd_mixer_elem_type_t { SND_MIXER_ELEM_SIMPLE, SND_MIXER_ELEM_LAST = SND_MIXER_ELEM_SIMPLE } |
Functions | |
int | snd_mixer_open (snd_mixer_t **mixer, int mode) |
Opens an empty mixer. | |
int | snd_mixer_close (snd_mixer_t *mixer) |
Close a mixer and free all related resources. | |
snd_mixer_elem_t * | snd_mixer_first_elem (snd_mixer_t *mixer) |
get first element for a mixer | |
snd_mixer_elem_t * | snd_mixer_last_elem (snd_mixer_t *mixer) |
get last element for a mixer | |
int | snd_mixer_handle_events (snd_mixer_t *mixer) |
Handle pending mixer events invoking callbacks. | |
int | snd_mixer_attach (snd_mixer_t *mixer, const char *name) |
Attach an HCTL specified with the CTL device name to an opened mixer. | |
int | snd_mixer_attach_hctl (snd_mixer_t *mixer, snd_hctl_t *hctl) |
Attach an HCTL to an opened mixer. | |
int | snd_mixer_detach (snd_mixer_t *mixer, const char *name) |
Detach a previously attached HCTL to an opened mixer freeing all related resources. | |
int | snd_mixer_detach_hctl (snd_mixer_t *mixer, snd_hctl_t *hctl) |
Detach a previously attached HCTL to an opened mixer freeing all related resources. | |
int | snd_mixer_get_hctl (snd_mixer_t *mixer, const char *name, snd_hctl_t **hctl) |
Obtain a HCTL pointer associated to given name. | |
int | snd_mixer_poll_descriptors_count (snd_mixer_t *mixer) |
get count of poll descriptors for mixer handle | |
int | snd_mixer_poll_descriptors (snd_mixer_t *mixer, struct pollfd *pfds, unsigned int space) |
get poll descriptors | |
int | snd_mixer_poll_descriptors_revents (snd_mixer_t *mixer, struct pollfd *pfds, unsigned int nfds, unsigned short *revents) |
get returned events from poll descriptors | |
int | snd_mixer_load (snd_mixer_t *mixer) |
Load a mixer elements. | |
void | snd_mixer_free (snd_mixer_t *mixer) |
Unload all mixer elements and free all related resources. | |
int | snd_mixer_wait (snd_mixer_t *mixer, int timeout) |
Wait for a mixer to become ready (i.e. at least one event pending). | |
int | snd_mixer_set_compare (snd_mixer_t *mixer, snd_mixer_compare_t msort) |
Change mixer compare function and reorder elements. | |
void | snd_mixer_set_callback (snd_mixer_t *obj, snd_mixer_callback_t val) |
Set callback function for a mixer. | |
void * | snd_mixer_get_callback_private (const snd_mixer_t *obj) |
Get callback private value for a mixer. | |
void | snd_mixer_set_callback_private (snd_mixer_t *obj, void *val) |
Set callback private value for a mixer. | |
unsigned int | snd_mixer_get_count (const snd_mixer_t *obj) |
Get elements count for a mixer. | |
int | snd_mixer_class_unregister (snd_mixer_class_t *clss) |
Unregister mixer element class and remove all its elements. | |
snd_mixer_elem_t * | snd_mixer_elem_next (snd_mixer_elem_t *elem) |
get next mixer element | |
snd_mixer_elem_t * | snd_mixer_elem_prev (snd_mixer_elem_t *elem) |
get previous mixer element | |
void | snd_mixer_elem_set_callback (snd_mixer_elem_t *obj, snd_mixer_elem_callback_t val) |
Set callback function for a mixer element. | |
void * | snd_mixer_elem_get_callback_private (const snd_mixer_elem_t *obj) |
Get callback private value for a mixer element. | |
void | snd_mixer_elem_set_callback_private (snd_mixer_elem_t *obj, void *val) |
Set callback private value for a mixer element. | |
snd_mixer_elem_type_t | snd_mixer_elem_get_type (const snd_mixer_elem_t *obj) |
Get type for a mixer element. | |
int | snd_mixer_class_register (snd_mixer_class_t *class_, snd_mixer_t *mixer) |
Register mixer element class. | |
int | snd_mixer_elem_new (snd_mixer_elem_t **elem, snd_mixer_elem_type_t type, int compare_weight, void *private_data, void(*private_free)(snd_mixer_elem_t *elem)) |
Allocate a new mixer element. | |
int | snd_mixer_elem_add (snd_mixer_elem_t *elem, snd_mixer_class_t *class_) |
Add an element for a registered mixer element class. | |
int | snd_mixer_elem_remove (snd_mixer_elem_t *elem) |
Remove a mixer element. | |
void | snd_mixer_elem_free (snd_mixer_elem_t *elem) |
Free a mixer element. | |
int | snd_mixer_elem_info (snd_mixer_elem_t *elem) |
Mixer element informations are changed. | |
int | snd_mixer_elem_value (snd_mixer_elem_t *elem) |
Mixer element values is changed. | |
int | snd_mixer_elem_attach (snd_mixer_elem_t *melem, snd_hctl_elem_t *helem) |
Attach an HCTL element to a mixer element. | |
int | snd_mixer_elem_detach (snd_mixer_elem_t *melem, snd_hctl_elem_t *helem) |
Detach an HCTL element from a mixer element. | |
int | snd_mixer_elem_empty (snd_mixer_elem_t *melem) |
Return true if a mixer element does not contain any HCTL elements. | |
void * | snd_mixer_elem_get_private (const snd_mixer_elem_t *melem) |
Get private data associated to give mixer element. | |
size_t | snd_mixer_class_sizeof (void) |
get size of snd_mixer_class_t | |
int | snd_mixer_class_malloc (snd_mixer_class_t **ptr) |
allocate an invalid snd_mixer_class_t using standard malloc | |
void | snd_mixer_class_free (snd_mixer_class_t *obj) |
frees a previously allocated snd_mixer_class_t | |
void | snd_mixer_class_copy (snd_mixer_class_t *dst, const snd_mixer_class_t *src) |
copy one snd_mixer_class_t to another | |
snd_mixer_t * | snd_mixer_class_get_mixer (const snd_mixer_class_t *class_) |
Get a mixer associated to given mixer class. | |
snd_mixer_event_t | snd_mixer_class_get_event (const snd_mixer_class_t *class_) |
Get mixer event callback associated to given mixer class. | |
void * | snd_mixer_class_get_private (const snd_mixer_class_t *class_) |
Get mixer private data associated to given mixer class. | |
snd_mixer_compare_t | snd_mixer_class_get_compare (const snd_mixer_class_t *class_) |
Get mixer compare callback associated to given mixer class. | |
int | snd_mixer_class_set_event (snd_mixer_class_t *class_, snd_mixer_event_t event) |
Set mixer event callback to given mixer class. | |
int | snd_mixer_class_set_private (snd_mixer_class_t *class_, void *private_data) |
Set mixer private data to given mixer class. | |
int | snd_mixer_class_set_private_free (snd_mixer_class_t *class_, void(*private_free)(snd_mixer_class_t *class_)) |
int | snd_mixer_class_set_compare (snd_mixer_class_t *class_, snd_mixer_compare_t compare) |
Set mixer compare callback to given mixer class. |
The mixer interface.
#define snd_mixer_class_alloca | ( | ptr | ) |
allocate an invalid snd_mixer_class_t using standard alloca
ptr | returned pointer |
typedef int(* snd_mixer_callback_t)(snd_mixer_t *ctl, unsigned int mask, snd_mixer_elem_t *elem) |
Mixer callback function.
mixer | Mixer handle | |
mask | event mask | |
elem | related mixer element (if any) |
typedef struct _snd_mixer_class snd_mixer_class_t |
Mixer elements class handle
typedef int(* snd_mixer_compare_t)(const snd_mixer_elem_t *e1, const snd_mixer_elem_t *e2) |
Compare function for sorting mixer elements.
e1 | First element | |
e2 | Second element |
typedef int(* snd_mixer_elem_callback_t)(snd_mixer_elem_t *elem, unsigned int mask) |
Mixer element callback function.
elem | Mixer element | |
mask | event mask |
typedef struct _snd_mixer_elem snd_mixer_elem_t |
Mixer element handle
typedef int(* snd_mixer_event_t)(snd_mixer_class_t *class_, unsigned int mask, snd_hctl_elem_t *helem, snd_mixer_elem_t *melem) |
Event callback for the mixer class.
class_ | Mixer class | |
mask | Event mask (SND_CTL_EVENT_*) | |
helem | HCTL element which invoked the event | |
melem | Mixer element associated to HCTL element |
typedef struct _snd_mixer snd_mixer_t |
Mixer handle
Mixer element type
int snd_mixer_attach | ( | snd_mixer_t * | mixer, | |
const char * | name | |||
) |
Attach an HCTL specified with the CTL device name to an opened mixer.
mixer | Mixer handle | |
name | HCTL name (see snd_hctl_open) |
int snd_mixer_attach_hctl | ( | snd_mixer_t * | mixer, | |
snd_hctl_t * | hctl | |||
) |
Attach an HCTL to an opened mixer.
mixer | Mixer handle | |
hctl | the HCTL to be attached |
void snd_mixer_class_copy | ( | snd_mixer_class_t * | dst, | |
const snd_mixer_class_t * | src | |||
) |
copy one snd_mixer_class_t to another
dst | pointer to destination | |
src | pointer to source |
void snd_mixer_class_free | ( | snd_mixer_class_t * | obj | ) |
frees a previously allocated snd_mixer_class_t
obj | pointer to object to free |
snd_mixer_compare_t snd_mixer_class_get_compare | ( | const snd_mixer_class_t * | obj | ) |
Get mixer compare callback associated to given mixer class.
obj | Mixer simple class identifier |
snd_mixer_event_t snd_mixer_class_get_event | ( | const snd_mixer_class_t * | obj | ) |
Get mixer event callback associated to given mixer class.
obj | Mixer simple class identifier |
snd_mixer_t* snd_mixer_class_get_mixer | ( | const snd_mixer_class_t * | obj | ) |
Get a mixer associated to given mixer class.
obj | Mixer simple class identifier |
void* snd_mixer_class_get_private | ( | const snd_mixer_class_t * | obj | ) |
Get mixer private data associated to given mixer class.
obj | Mixer simple class identifier |
int snd_mixer_class_malloc | ( | snd_mixer_class_t ** | ptr | ) |
allocate an invalid snd_mixer_class_t using standard malloc
ptr | returned pointer |
int snd_mixer_class_register | ( | snd_mixer_class_t * | class, | |
snd_mixer_t * | mixer | |||
) |
Register mixer element class.
class | Mixer element class | |
mixer | Mixer handle |
For use by mixer element class specific code.
int snd_mixer_class_set_compare | ( | snd_mixer_class_t * | obj, | |
snd_mixer_compare_t | compare | |||
) |
Set mixer compare callback to given mixer class.
obj | Mixer simple class identifier | |
compare | the compare callback to be used |
int snd_mixer_class_set_event | ( | snd_mixer_class_t * | obj, | |
snd_mixer_event_t | event | |||
) |
Set mixer event callback to given mixer class.
obj | Mixer simple class identifier | |
event | Event callback |
int snd_mixer_class_set_private | ( | snd_mixer_class_t * | obj, | |
void * | private_data | |||
) |
Set mixer private data to given mixer class.
obj | Mixer simple class identifier | |
private_data | class private data |
size_t snd_mixer_class_sizeof | ( | void | ) |
get size of snd_mixer_class_t
int snd_mixer_class_unregister | ( | snd_mixer_class_t * | class | ) |
Unregister mixer element class and remove all its elements.
class | Mixer element class |
Note that the class structure is also deallocated!
int snd_mixer_close | ( | snd_mixer_t * | mixer | ) |
Close a mixer and free all related resources.
mixer | Mixer handle |
int snd_mixer_detach | ( | snd_mixer_t * | mixer, | |
const char * | name | |||
) |
Detach a previously attached HCTL to an opened mixer freeing all related resources.
mixer | Mixer handle | |
name | HCTL previously attached |
int snd_mixer_detach_hctl | ( | snd_mixer_t * | mixer, | |
snd_hctl_t * | hctl | |||
) |
Detach a previously attached HCTL to an opened mixer freeing all related resources.
mixer | Mixer handle | |
hctl | HCTL previously attached |
Note: The hctl handle is not closed!
int snd_mixer_elem_add | ( | snd_mixer_elem_t * | elem, | |
snd_mixer_class_t * | class | |||
) |
Add an element for a registered mixer element class.
elem | Mixer element | |
class | Mixer element class |
For use by mixer element class specific code.
int snd_mixer_elem_attach | ( | snd_mixer_elem_t * | melem, | |
snd_hctl_elem_t * | helem | |||
) |
Attach an HCTL element to a mixer element.
melem | Mixer element | |
helem | HCTL element |
For use by mixer element class specific code.
int snd_mixer_elem_detach | ( | snd_mixer_elem_t * | melem, | |
snd_hctl_elem_t * | helem | |||
) |
Detach an HCTL element from a mixer element.
melem | Mixer element | |
helem | HCTL element |
For use by mixer element class specific code.
int snd_mixer_elem_empty | ( | snd_mixer_elem_t * | melem | ) |
Return true if a mixer element does not contain any HCTL elements.
melem | Mixer element |
For use by mixer element class specific code.
void snd_mixer_elem_free | ( | snd_mixer_elem_t * | elem | ) |
Free a mixer element.
elem | Mixer element |
For use by mixer element class specific code.
void* snd_mixer_elem_get_callback_private | ( | const snd_mixer_elem_t * | mixer | ) |
Get callback private value for a mixer element.
mixer | mixer element |
void* snd_mixer_elem_get_private | ( | const snd_mixer_elem_t * | elem | ) |
Get private data associated to give mixer element.
elem | Mixer element |
For use by mixer element class specific code.
snd_mixer_elem_type_t snd_mixer_elem_get_type | ( | const snd_mixer_elem_t * | mixer | ) |
Get type for a mixer element.
mixer | mixer element |
int snd_mixer_elem_info | ( | snd_mixer_elem_t * | elem | ) |
Mixer element informations are changed.
elem | Mixer element |
For use by mixer element class specific code.
int snd_mixer_elem_new | ( | snd_mixer_elem_t ** | elem, | |
snd_mixer_elem_type_t | type, | |||
int | compare_weight, | |||
void * | private_data, | |||
void(*)(snd_mixer_elem_t *elem) | private_free | |||
) |
Allocate a new mixer element.
elem | Returned mixer element | |
type | Mixer element type | |
compare_weight | Mixer element compare weight | |
private_data | Private data | |
private_free | Private data free callback |
For use by mixer element class specific code.
snd_mixer_elem_t* snd_mixer_elem_next | ( | snd_mixer_elem_t * | elem | ) |
get next mixer element
elem | mixer element |
snd_mixer_elem_t* snd_mixer_elem_prev | ( | snd_mixer_elem_t * | elem | ) |
get previous mixer element
elem | mixer element |
int snd_mixer_elem_remove | ( | snd_mixer_elem_t * | elem | ) |
Remove a mixer element.
elem | Mixer element |
For use by mixer element class specific code.
void snd_mixer_elem_set_callback | ( | snd_mixer_elem_t * | mixer, | |
snd_mixer_elem_callback_t | val | |||
) |
Set callback function for a mixer element.
mixer | mixer element | |
val | callback function |
void snd_mixer_elem_set_callback_private | ( | snd_mixer_elem_t * | mixer, | |
void * | val | |||
) |
Set callback private value for a mixer element.
mixer | mixer element | |
val | callback private value |
int snd_mixer_elem_value | ( | snd_mixer_elem_t * | elem | ) |
Mixer element values is changed.
elem | Mixer element |
For use by mixer element class specific code.
snd_mixer_elem_t* snd_mixer_first_elem | ( | snd_mixer_t * | mixer | ) |
get first element for a mixer
mixer | Mixer handle |
void snd_mixer_free | ( | snd_mixer_t * | mixer | ) |
Unload all mixer elements and free all related resources.
mixer | Mixer handle |
void* snd_mixer_get_callback_private | ( | const snd_mixer_t * | mixer | ) |
Get callback private value for a mixer.
mixer | mixer handle |
unsigned int snd_mixer_get_count | ( | const snd_mixer_t * | mixer | ) |
Get elements count for a mixer.
mixer | mixer handle |
int snd_mixer_get_hctl | ( | snd_mixer_t * | mixer, | |
const char * | name, | |||
snd_hctl_t ** | hctl | |||
) |
Obtain a HCTL pointer associated to given name.
mixer | Mixer handle | |
name | HCTL previously attached | |
hctl | HCTL pointer |
int snd_mixer_handle_events | ( | snd_mixer_t * | mixer | ) |
Handle pending mixer events invoking callbacks.
mixer | Mixer handle |
snd_mixer_elem_t* snd_mixer_last_elem | ( | snd_mixer_t * | mixer | ) |
get last element for a mixer
mixer | Mixer handle |
int snd_mixer_load | ( | snd_mixer_t * | mixer | ) |
Load a mixer elements.
mixer | Mixer handle |
int snd_mixer_open | ( | snd_mixer_t ** | mixerp, | |
int | mode | |||
) |
Opens an empty mixer.
mixerp | Returned mixer handle | |
mode | Open mode |
int snd_mixer_poll_descriptors | ( | snd_mixer_t * | mixer, | |
struct pollfd * | pfds, | |||
unsigned int | space | |||
) |
get poll descriptors
mixer | Mixer handle | |
pfds | array of poll descriptors | |
space | space in the poll descriptor array |
int snd_mixer_poll_descriptors_count | ( | snd_mixer_t * | mixer | ) |
get count of poll descriptors for mixer handle
mixer | Mixer handle |
int snd_mixer_poll_descriptors_revents | ( | snd_mixer_t * | mixer, | |
struct pollfd * | pfds, | |||
unsigned int | nfds, | |||
unsigned short * | revents | |||
) |
get returned events from poll descriptors
mixer | Mixer handle | |
pfds | array of poll descriptors | |
nfds | count of poll descriptors | |
revents | returned events |
void snd_mixer_set_callback | ( | snd_mixer_t * | obj, | |
snd_mixer_callback_t | val | |||
) |
Set callback function for a mixer.
obj | mixer handle | |
val | callback function |
void snd_mixer_set_callback_private | ( | snd_mixer_t * | mixer, | |
void * | val | |||
) |
Set callback private value for a mixer.
mixer | mixer handle | |
val | callback private value |
int snd_mixer_set_compare | ( | snd_mixer_t * | mixer, | |
snd_mixer_compare_t | compare | |||
) |
Change mixer compare function and reorder elements.
mixer | Mixer handle | |
compare | Element compare function |
int snd_mixer_wait | ( | snd_mixer_t * | mixer, | |
int | timeout | |||
) |
Wait for a mixer to become ready (i.e. at least one event pending).
mixer | Mixer handle | |
timeout | maximum time in milliseconds to wait |