Added snd_func_macro and added 'defaults.*' definitions to alsa.conf.

Changed arguments CARD to string (to accept card IDs).
Enhanced function card_strtype to accept card IDs.
This commit is contained in:
Jaroslav Kysela 2001-06-19 11:52:50 +00:00
parent 455edb9e21
commit 0c5b3434a8
9 changed files with 220 additions and 77 deletions

View file

@ -11,6 +11,18 @@ preload {
]
}
# defaults
defaults.ctl.card 0
defaults.pcm.card 0
defaults.pcm.device 0
defaults.pcm.subdevice -1
defaults.pcm.front.card defaults.pcm.card
defaults.pcm.front.device defaults.pcm.device
defaults.rawmidi.card 0
defaults.rawmidi.device 0
defaults.rawmidi.subdevice -1
#
# PCM interface
#
@ -18,14 +30,17 @@ preload {
pcm.hw {
@args [ CARD DEV SUBDEV ]
@args.CARD {
type integer
type string
default {
@func igetenv
@func getenv
vars [
ALSA_PCM_CARD
ALSA_CARD
]
default 0
default {
@func macro
name defaults.pcm.card
}
}
}
@args.DEV {
@ -35,12 +50,18 @@ pcm.hw {
vars [
ALSA_PCM_DEVICE
]
default 0
default {
@func macro
name defaults.pcm.device
}
}
}
@args.SUBDEV {
type integer
default -1
default {
@func macro
name defaults.pcm.subdevice
}
}
type hw
card $CARD
@ -51,14 +72,17 @@ pcm.hw {
pcm.plughw {
@args [ CARD DEV SUBDEV ]
@args.CARD {
type integer
type string
default {
@func igetenv
@func getenv
vars [
ALSA_PCM_CARD
ALSA_CARD
]
default 0
default {
@func macro
name defaults.pcm.card
}
}
}
@args.DEV {
@ -68,12 +92,18 @@ pcm.plughw {
vars [
ALSA_PCM_DEVICE
]
default 0
default {
@func macro
name defaults.pcm.device
}
}
}
@args.SUBDEV {
type integer
default -1
default {
@func macro
name defaults.pcm.subdevice
}
}
type plug
slave.pcm {
@ -148,36 +178,48 @@ pcm.default {
slave.pcm {
type hw
card {
@func igetenv
@func getenv
vars [
ALSA_PCM_CARD
ALSA_CARD
]
default 0
default {
@func macro
name defaults.pcm.card
}
}
device {
@func igetenv
vars [
ALSA_PCM_DEVICE
]
default 0
default {
@func macro
name defaults.pcm.device
}
}
subdevice {
@func macro
name defaults.pcm.subdevice
}
subdevice -1
}
}
pcm.front {
@args [ CARD DEV ]
@args.CARD {
type integer
type string
default {
@func igetenv
@func getenv
vars [
ALSA_FRONT_CARD
ALSA_PCM_CARD
ALSA_CARD
]
default 0
default {
@func macro
name defaults.pcm.front.card
}
}
}
@args.DEV {
@ -187,7 +229,10 @@ pcm.front {
vars [
ALSA_FRONT_DEVICE
]
default 0
default {
@func macro
name defaults.pcm.front.device
}
}
}
@func refer
@ -221,15 +266,18 @@ pcm.front {
pcm.rear {
@args [ CARD DEV ]
@args.CARD {
type integer
type string
default {
@func igetenv
@func getenv
vars [
ALSA_REAR_CARD
ALSA_PCM_CARD
ALSA_CARD
]
default 0
default {
@func macro
name defaults.pcm.rear.card
}
}
}
@args.DEV {
@ -239,7 +287,10 @@ pcm.rear {
vars [
ALSA_REAR_DEVICE
]
default 0
default {
@func macro
name defaults.pcm.rear.device
}
}
}
@func refer
@ -273,15 +324,18 @@ pcm.rear {
pcm.center_lfe {
@args [ CARD DEV ]
@args.CARD {
type integer
type string
default {
@func igetenv
@func getenv
vars [
ALSA_CENTER_LFE_CARD
ALSA_PCM_CARD
ALSA_CARD
]
default 0
default {
@func macro
name defaults.pcm.center_lfe.card
}
}
}
@args.DEV {
@ -291,7 +345,10 @@ pcm.center_lfe {
vars [
ALSA_CENTER_LFE_DEVICE
]
default 0
default {
@func macro
name defaults.pcm.center_lfe.device
}
}
}
@func refer
@ -325,15 +382,18 @@ pcm.center_lfe {
pcm.surround40 {
@args [ CARD DEV ]
@args.CARD {
type integer
type string
default {
@func igetenv
@func getenv
vars [
ALSA_SURROUND40_CARD
ALSA_PCM_CARD
ALSA_CARD
]
default 0
default {
@func macro
name defaults.pcm.surround40.card
}
}
}
@args.DEV {
@ -343,7 +403,10 @@ pcm.surround40 {
vars [
ALSA_SURROUND40_DEVICE
]
default 0
default {
@func macro
name defaults.pcm.surround40.device
}
}
}
@func refer
@ -377,15 +440,18 @@ pcm.surround40 {
pcm.surround51 {
@args [ CARD DEV ]
@args.CARD {
type integer
type string
default {
@func igetenv
@func getenv
vars [
ALSA_SURROUND51_CARD
ALSA_PCM_CARD
ALSA_CARD
]
default 0
default {
@func macro
name defaults.pcm.surround51.card
}
}
}
@args.DEV {
@ -395,7 +461,10 @@ pcm.surround51 {
vars [
ALSA_SURROUND51_DEVICE
]
default 0
default {
@func macro
name defaults.pcm.surround51.device
}
}
}
@func refer
@ -429,15 +498,18 @@ pcm.surround51 {
pcm.iec958 {
@args [ CARD DEV AES0 AES1 AES2 AES3 ]
@args.CARD {
type integer
type string
default {
@func igetenv
@func getenv
vars [
ALSA_IEC958_CARD
ALSA_PCM_CARD
ALSA_CARD
]
default 0
default {
@func macro
name defaults.pcm.iec958.card
}
}
}
@args.DEV {
@ -447,7 +519,10 @@ pcm.iec958 {
vars [
ALSA_IEC958_DEVICE
]
default 0
default {
@func macro
name defaults.pcm.iec958.device
}
}
}
@args.AES0 {
@ -512,14 +587,17 @@ pcm.spdif pcm.iec958
ctl.hw {
@args[ CARD ]
@args.CARD {
type integer
type string
default {
@func igetenv
@func getenv
vars [
ALSA_CTL_CARD
ALSA_CARD
]
default 0
default {
@func macro
name defaults.ctl.card
}
}
}
type hw
@ -542,12 +620,15 @@ ctl.shm {
ctl.default {
type hw
card {
@func igetenv
@func getenv
vars [
ALSA_CTL_CARD
ALSA_CARD
]
default 0
default {
@func macro
name defaults.ctl.card
}
}
}
@ -558,14 +639,17 @@ ctl.default {
rawmidi.hw {
@args [ CARD DEV SUBDEV ]
@args.CARD {
type integer
type string
default {
@func igetenv
@func getenv
vars [
ALSA_RAWMIDI_CARD
ALSA_CARD
]
default 0
default {
@func macro
name defaults.rawmidi.card
}
}
}
@args.DEV {
@ -575,7 +659,10 @@ rawmidi.hw {
vars [
ALSA_RAWMIDI_DEVICE
]
default 0
default {
@func macro
name defaults.rawmidi.device
}
}
}
@args.SUBDEV {
@ -591,19 +678,25 @@ rawmidi.hw {
rawmidi.default {
type hw
card {
@func igetenv
@func getenv
vars [
ALSA_RAWMIDI_CARD
ALSA_CARD
]
default 0
default {
@func macro
name defaults.rawmidi.card
}
}
device {
@func igetenv
vars [
ALSA_RAWMIDI_DEVICE
]
default 0
default {
@func macro
name defaults.rawmidi.device
}
}
}

View file

@ -5,7 +5,7 @@
cards.EMU10K1.pcm.front.0 {
@args [ CARD ]
@args.CARD {
type integer
type string
}
type hw
card $CARD
@ -15,7 +15,7 @@ cards.EMU10K1.pcm.front.0 {
cards.EMU10K1.pcm.rear.0 {
@args [ CARD ]
@args.CARD {
type integer
type string
}
type hooks
slave.pcm {
@ -44,6 +44,9 @@ cards.EMU10K1.pcm.rear.0 {
cards.EMU10K1.pcm.center_lfe {
@args [ CARD ]
@args.CARD {
type string
}
type hooks
slave.pcm {
type hw
@ -84,7 +87,7 @@ cards.EMU10K1.pcm.center_lfe {
cards.EMU10K1.pcm.surround40.0 {
@args [ CARD ]
@args.CARD {
type integer
type string
}
type multi
slaves [
@ -118,7 +121,7 @@ cards.EMU10K1.pcm.surround40.0 {
cards.EMU10K1.pcm.surround51.0 {
@args [ CARD ]
@args.CARD {
type integer
type string
}
type multi
slaves [
@ -163,7 +166,7 @@ cards.EMU10K1.pcm.surround51.0 {
cards.EMU10K1.pcm.iec958.0 {
@args [ CARD DEV AES0 AES1 AES2 AES3 ]
@args.CARD {
type integer
type string
}
@args.DEV {
type integer

View file

@ -5,7 +5,7 @@
cards.ENS1370.pcm.front.0 {
@args [ CARD ]
@args.CARD {
type integer
type string
}
type hw
card $CARD
@ -15,7 +15,7 @@ cards.ENS1370.pcm.front.0 {
cards.ENS1370.pcm.rear.0 {
@args [ CARD ]
@args.CARD {
type integer
type string
}
type hooks
slave.pcm {
@ -45,7 +45,7 @@ cards.ENS1370.pcm.rear.0 {
cards.ENS1370.pcm.surround40.0 {
@args [ CARD ]
@args.CARD {
type integer
type string
}
type multi
master 1

View file

@ -5,7 +5,7 @@
cards.FM801.front.0 {
@args [ CARD ]
@args.CARD {
type integer
type string
}
type hw
card $CARD
@ -18,7 +18,7 @@ cards.FM801.surround51.0 "cards.FM801.front.0"
cards.FM801.iec958.0 {
@args [ CARD DEV AES0 AES1 AES2 AES3 ]
@args.CARD {
type integer
type string
}
@args.DEV {
type integer

View file

@ -5,7 +5,7 @@
cards.INTEL8X0.pcm.front.0 {
@args [ CARD ]
@args.CARD {
type integer
type string
}
type hw
card $CARD
@ -15,7 +15,7 @@ cards.INTEL8X0.pcm.front.0 {
cards.INTEL8X0.pcm.surround40.0 {
@args [ CARD ]
@args.CARD {
type integer
type string
}
type multi
slaves [
@ -40,7 +40,7 @@ cards.INTEL8X0.pcm.surround40.0 {
cards.INTEL8X0.pcm.surround51.0 {
@args [ CARD ]
@args.CARD {
type integer
type string
}
type multi
slaves [
@ -67,7 +67,7 @@ cards.INTEL8X0.pcm.surround51.0 {
cards.INTEL8X0.pcm.iec958.0 {
@args [ CARD DEV AES0 AES1 AES2 AES3 ]
@args.CARD {
type integer
type string
}
@args.DEV {
type integer

View file

@ -5,7 +5,7 @@
cards.SI_7018.pcm.front.0 {
@args [ CARD ]
@args.CARD {
type integer
type string
}
type hw
card $CARD
@ -15,7 +15,7 @@ cards.SI_7018.pcm.front.0 {
cards.SI_7018.pcm.rear.0 {
@args [ CARD ]
@args.CARD {
type integer
type string
}
type hooks
slave.pcm {
@ -39,7 +39,7 @@ cards.SI_7018.pcm.rear.0 {
cards.SI_7018.pcm.surround40.0 {
@args [ CARD ]
@args.CARD {
type integer
type string
}
type multi
slaves [

View file

@ -5,7 +5,7 @@
cards.TRID4DWAVENX.pcm.front.0 {
@args [ CARD ]
@args.CARD {
type integer
type string
}
type hw
card $CARD
@ -15,7 +15,7 @@ cards.TRID4DWAVENX.pcm.front.0 {
cards.TRID4DWAVENX.pcm.rear.0 {
@args [ CARD ]
@args.CARD {
type integer
type string
}
type hooks
slave.pcm {
@ -53,7 +53,7 @@ cards.TRID4DWAVENX.pcm.rear.0 {
cards.TRID4DWAVENX.pcm.surround40.0 {
@args [ CARD ]
@args.CARD {
type integer
type string
}
type multi
slaves [
@ -87,7 +87,7 @@ cards.TRID4DWAVENX.pcm.surround40.0 {
cards.TRID4DWAVENX.pcm.iec958.0 {
@args [ CARD AES0 AES1 AES2 AES3 ]
@args.CARD {
type integer
type string
}
@args.AES0 {
type integer

View file

@ -5,7 +5,7 @@
cards.YMFPCI.front.0 {
@args [ CARD ]
@args.CARD {
type integer
type string
}
type hw
card $CARD
@ -15,7 +15,7 @@ cards.YMFPCI.front.0 {
cards.YMFPCI.rear.0 {
@args [ CARD ]
@args.CARD {
type integer
type string
}
type hw
card $CARD
@ -25,7 +25,7 @@ cards.YMFPCI.rear.0 {
cards.YMFPCI.surround40.0 {
@args [ CARD ]
@args.CARD {
type integer
type string
}
type multi
slaves [
@ -59,7 +59,7 @@ cards.YMFPCI.surround40.0 {
cards.YMFPCI.iec958.0 {
@args [ CARD DEV AES0 AES1 AES2 AES3 ]
@args.CARD {
type integer
type string
}
@args.DEV {
type integer

View file

@ -432,6 +432,7 @@ int snd_func_card_strtype(snd_config_t **dst, snd_config_t *root, snd_config_t *
{
snd_config_t *n;
char *res = NULL;
char *str;
snd_ctl_t *ctl = NULL;
snd_ctl_card_info_t *info;
long v;
@ -447,11 +448,19 @@ int snd_func_card_strtype(snd_config_t **dst, snd_config_t *root, snd_config_t *
SNDERR("error evaluating card");
goto __error;
}
err = snd_config_get_integer(n, &v);
err = snd_config_get_ascii(n, &str);
if (err < 0) {
SNDERR("field card is not an integer");
SNDERR("field card is not an integer or a string");
goto __error;
}
v = snd_card_get_index(str);
if (v < 0) {
SNDERR("cannot find card '%s'", str);
free(str);
err = v;
goto __error;
}
free(str);
err = open_ctl(v, &ctl);
if (err < 0) {
SNDERR("could not open control for card %li", v);
@ -682,3 +691,41 @@ int snd_func_refer(snd_config_t **dst, snd_config_t *root, snd_config_t *src, vo
_end:
return err;
}
int snd_func_macro(snd_config_t **dst, snd_config_t *root, snd_config_t *src, void *private_data)
{
snd_config_t *n;
const char *name;
char *buf = NULL;
int err;
err = snd_config_search(src, "name", &n);
if (err >= 0) {
err = snd_config_evaluate(n, root, private_data, NULL);
if (err < 0) {
SNDERR("error evaluating name");
goto _end;
}
err = snd_config_get_string(n, &name);
if (err < 0) {
SNDERR("name is not a string");
goto _end;
}
}
if (strchr(name, '.') == NULL) {
buf = malloc(6 + strlen(name) + 1);
if (buf == NULL) {
err = -ENOMEM;
goto _end;
}
strcpy(buf, "macro.");
strcat(buf, name);
}
err = snd_config_search_definition(root, NULL, name, dst);
if (err < 0)
SNDERR("Unable to find macro definition '%s'", name);
_end:
if (buf)
free(buf);
return err;
}