Ok, back to use '@func refer' inside alsa.conf (following Abramo's

interpellation).
This commit is contained in:
Jaroslav Kysela 2001-06-19 10:36:31 +00:00
parent 735e5473e0
commit 455edb9e21
9 changed files with 264 additions and 549 deletions

View file

@ -190,27 +190,31 @@ pcm.front {
default 0
}
}
refer {
file {
@func concat
strings [
{
@func datadir
}
"/cards/"
{
@func card_strtype
card $CARD
}
".conf"
]
}
name {
@func concat
strings [
"pcm.front_" $DEV ":CARD=" $CARD
]
}
@func refer
file {
@func concat
strings [
{
@func datadir
}
"/cards/"
{
@func card_strtype
card $CARD
}
".conf"
]
}
name {
@func concat
strings [
"cards."
{
@func card_strtype
card $CARD
}
".pcm.front." $DEV ":CARD=" $CARD
]
}
}
@ -238,27 +242,31 @@ pcm.rear {
default 0
}
}
refer {
file {
@func concat
strings [
{
@func datadir
}
"/cards/"
{
@func card_strtype
card $CARD
}
".conf"
]
}
name {
@func concat
strings [
"pcm.rear_" $DEV ":CARD=" $CARD
]
}
@func refer
file {
@func concat
strings [
{
@func datadir
}
"/cards/"
{
@func card_strtype
card $CARD
}
".conf"
]
}
name {
@func concat
strings [
"cards."
{
@func card_strtype
card $CARD
}
".pcm.rear." $DEV ":CARD=" $CARD
]
}
}
@ -286,27 +294,31 @@ pcm.center_lfe {
default 0
}
}
refer {
file {
@func concat
strings [
{
@func datadir
}
"/cards/"
{
@func card_strtype
card $CARD
}
".conf"
]
}
name {
@func concat
strings [
"pcm.center_lfe_" $DEV ":CARD=" $CARD
]
}
@func refer
file {
@func concat
strings [
{
@func datadir
}
"/cards/"
{
@func card_strtype
card $CARD
}
".conf"
]
}
name {
@func concat
strings [
"cards."
{
@func card_strtype
card $CARD
}
".pcm.center_lfe." $DEV ":CARD=" $CARD
]
}
}
@ -334,27 +346,31 @@ pcm.surround40 {
default 0
}
}
refer {
file {
@func concat
strings [
{
@func datadir
}
"/cards/"
{
@func card_strtype
card $CARD
}
".conf"
]
}
name {
@func concat
strings [
"pcm.surround40_" $DEV ":CARD=" $CARD
]
}
@func refer
file {
@func concat
strings [
{
@func datadir
}
"/cards/"
{
@func card_strtype
card $CARD
}
".conf"
]
}
name {
@func concat
strings [
"cards."
{
@func card_strtype
card $CARD
}
".pcm.surround40." $DEV ":CARD=" $CARD
]
}
}
@ -382,27 +398,31 @@ pcm.surround51 {
default 0
}
}
refer {
file {
@func concat
strings [
{
@func datadir
}
"/cards/"
{
@func card_strtype
card $CARD
}
".conf"
]
}
name {
@func concat
strings [
"pcm.surround51_" $DEV ":CARD=" $CARD
]
}
@func refer
file {
@func concat
strings [
{
@func datadir
}
"/cards/"
{
@func card_strtype
card $CARD
}
".conf"
]
}
name {
@func concat
strings [
"cards."
{
@func card_strtype
card $CARD
}
".pcm.surround51." $DEV ":CARD=" $CARD
]
}
}
@ -450,32 +470,36 @@ pcm.iec958 {
# fs=48000Hz, clock accuracy=1000ppm
default 0x02
}
refer {
file {
@func concat
strings [
{
@func datadir
}
"/cards/"
{
@func card_strtype
card $CARD
}
".conf"
]
}
name {
@func concat
strings [
"pcm.iec958_" $DEV ":"
"CARD=" $CARD ","
"AES0=" $AES0 ","
"AES1=" $AES1 ","
"AES2=" $AES2 ","
"AES3=" $AES3
]
}
@func refer
file {
@func concat
strings [
{
@func datadir
}
"/cards/"
{
@func card_strtype
card $CARD
}
".conf"
]
}
name {
@func concat
strings [
"cards."
{
@func card_strtype
card $CARD
}
".pcm.iec958." $DEV ":"
"CARD=" $CARD ","
"AES0=" $AES0 ","
"AES1=" $AES1 ","
"AES2=" $AES2 ","
"AES3=" $AES3
]
}
}

View file

@ -2,54 +2,26 @@
# Configuration for the EMU10K1 chip
#
pcm.emu10k1_front {
@args [ CARD DEV SUBDEV ]
cards.EMU10K1.pcm.front.0 {
@args [ CARD ]
@args.CARD {
type integer
}
@args.DEV {
type integer
}
@args.SUBDEV {
type integer
default -1
}
type hw
card $CARD
device $DEV
subdevice $SUBDEV
device 0
}
pcm.front_0 {
cards.EMU10K1.pcm.rear.0 {
@args [ CARD ]
@args.CARD {
type integer
}
@func refer
name {
@func concat
strings [ "pcm.emu10k1_front:" $CARD ",0,-1" ]
}
}
pcm.emu10k1_rear {
@args [ CARD DEV SUBDEV ]
@args.CARD {
type integer
}
@args.DEV {
type integer
}
@args.SUBDEV {
type integer
default -1
}
type hooks
slave.pcm {
@func concat
strings [
"pcm.emu10k1_front:" $CARD "," $DEV "," $SUBDEV
]
type hw
card $CARD
device 0
}
hooks.0 {
type ctl_elems
@ -70,36 +42,13 @@ pcm.emu10k1_rear {
}
}
pcm.rear_0 {
cards.EMU10K1.pcm.center_lfe {
@args [ CARD ]
@args.CARD {
type integer
}
@func refer
name {
@func concat
strings [ "pcm.emu10k1_rear:" $CARD ",0,-1" ]
}
}
pcm.emu10k1_center_lfe {
@args [ CARD DEV SUBDEV ]
@args.CARD {
type integer
}
@args.DEV {
type integer
}
@args.SUBDEV {
type integer
default -1
}
type hooks
slave.pcm {
@func concat
strings [
"pcm.emu10k1_front:" $CARD "," $DEV "," $SUBDEV
]
type hw
card $CARD
device 0
}
hooks.0 {
type ctl_elems
@ -132,19 +81,7 @@ pcm.emu10k1_center_lfe {
}
}
pcm.center_lfe_0 {
@args [ CARD ]
@args.CARD {
type integer
}
@func refer
name {
@func concat
strings [ "pcm.emu10k1_center_lfe:" $CARD ",0,-1" ]
}
}
pcm.surround40_0 {
cards.EMU10K1.pcm.surround40.0 {
@args [ CARD ]
@args.CARD {
type integer
@ -155,7 +92,7 @@ pcm.surround40_0 {
pcm {
@func concat
strings [
"pcm.emu10k1_front:" $CARD ",0,-1"
"cards.EMU10K1.pcm.front.0:CARD=" $CARD
]
}
channels 2
@ -164,7 +101,7 @@ pcm.surround40_0 {
pcm {
@func concat
strings [
"pcm.emu10k1_rear:" $CARD ",0,-1"
"cards.EMU10K1.pcm.rear.0:CARD=" $CARD
]
}
channels 2
@ -178,7 +115,7 @@ pcm.surround40_0 {
]
}
pcm.surround51_0 {
cards.EMU10K1.pcm.surround51.0 {
@args [ CARD ]
@args.CARD {
type integer
@ -189,7 +126,7 @@ pcm.surround51_0 {
pcm {
@func concat
strings [
"pcm.emu10k1_front:" $CARD ",0,-1"
"cards.EMU10K1.pcm.front.0:CARD=" $CARD
]
}
channels 2
@ -198,7 +135,7 @@ pcm.surround51_0 {
pcm {
@func concat
strings [
"pcm.emu10k1_rear:" $CARD ",0,-1"
"cards.EMU10K1.pcm.rear.0:CARD=" $CARD
]
}
channels 2
@ -207,7 +144,7 @@ pcm.surround51_0 {
pcm {
@func concat
strings [
"pcm.emu10k1_center_lfe:" $CARD ",0,-1"
"cards.EMU10K1.pcm.center_lfe.0:CARD=" $CARD
]
}
channels 2
@ -223,7 +160,7 @@ pcm.surround51_0 {
]
}
pcm.iec958_0 {
cards.EMU10K1.pcm.iec958.0 {
@args [ CARD DEV AES0 AES1 AES2 AES3 ]
@args.CARD {
type integer
@ -245,13 +182,9 @@ pcm.iec958_0 {
}
type hooks
slave.pcm {
@func concat
strings [
"hw:"
"CARD=" $CARD ","
"DEV=3,"
"SUBDEV=0"
]
type hw
card $CARD
device 3
}
hooks.0 {
type ctl_elems

View file

@ -2,54 +2,26 @@
# Configuration for the ENS1370 chip
#
pcm.ens1370_front {
@args [ CARD DEV SUBDEV ]
@args.CARD {
type integer
}
@args.DEV {
type integer
}
@args.SUBDEV {
type integer
default -1
}
type hw
card $CARD
device $DEV
subdevice $SUBDEV
}
pcm.front_0 {
cards.ENS1370.pcm.front.0 {
@args [ CARD ]
@args.CARD {
type integer
}
@func refer
name {
@func concat
strings [ "pcm.ens1370_front:" $CARD ",0,-1" ]
}
}
type hw
card $CARD
device 1
}
pcm.ens1370_rear {
@args [ CARD DEV SUBDEV ]
cards.ENS1370.pcm.rear.0 {
@args [ CARD ]
@args.CARD {
type integer
}
@args.DEV {
type integer
}
@args.SUBDEV {
type integer
default -1
}
type hooks
slave.pcm {
@func concat
strings [
"pcm.ens1370_front:" $CARD "," $DEV "," $SUBDEV
]
type hw
card $CARD
device 0
}
hooks.0 {
type ctl_elems
@ -70,19 +42,7 @@ pcm.ens1370_rear {
}
}
pcm.rear_0 {
@args [ CARD ]
@args.CARD {
type integer
}
@func refer
name {
@func concat
strings [ "pcm.ens1370_rear:" $CARD ",0,-1" ]
}
}
pcm.surround40_0 {
cards.ENS1370.pcm.surround40.0 {
@args [ CARD ]
@args.CARD {
type integer
@ -94,7 +54,7 @@ pcm.surround40_0 {
pcm {
@func concat
strings [
"pcm.ens1370_front:" $CARD ",0,-1"
"cards.ENS1370.pcm.front.0:CARD=" $CARD
]
}
channels 2
@ -103,7 +63,7 @@ pcm.surround40_0 {
pcm {
@func concat
strings [
"pcm.ens1370_rear:" $CARD ",0,-1"
"cards.ENS1370.pcm.rear.0:CARD=" $CARD
]
}
channels 2

View file

@ -2,59 +2,20 @@
# Configuration for the FM801 chip
#
pcm.fm801_front {
@args [ CARD DEV SUBDEV ]
cards.FM801.front.0 {
@args [ CARD ]
@args.CARD {
type integer
}
@args.DEV {
type integer
}
@args.SUBDEV {
type integer
default -1
}
type hw
card $CARD
device $DEV
subdevice $SUBDEV
device 0
}
pcm.front_0 {
@args [ CARD ]
@args.CARD {
type integer
}
@func refer
name {
@func concat
strings [ "pcm.fm801_front:" $CARD ",0,-1" ]
}
}
cards.FM801.surround40.0 "cards.FM801.front.0"
cards.FM801.surround51.0 "cards.FM801.front.0"
pcm.surround40_0 {
@args [ CARD ]
@args.CARD {
type integer
}
type hw
card $CARD
device 0
subdevice 0
}
pcm.surround51_0 {
@args [ CARD ]
@args.CARD {
type integer
}
type hw
card $CARD
device 0
subdevice 0
}
pcm.iec958_0 {
cards.FM801.iec958.0 {
@args [ CARD DEV AES0 AES1 AES2 AES3 ]
@args.CARD {
type integer
@ -76,13 +37,9 @@ pcm.iec958_0 {
}
type hooks
slave.pcm {
@func concat
strings [
"hw:"
"CARD=" $CARD ","
"DEV=0,"
"SUBDEV=0"
]
type hw
card $CARD
device 0
}
hooks.0 {
type ctl_elems

View file

@ -2,37 +2,17 @@
# Configuration for the INTEL8X0 chip
#
pcm.intel8x0_front {
@args [ CARD DEV SUBDEV ]
@args.CARD {
type integer
}
@args.DEV {
type integer
}
@args.SUBDEV {
type integer
default -1
}
type hw
card $CARD
device $DEV
subdevice $SUBDEV
}
pcm.front_0 {
cards.INTEL8X0.pcm.front.0 {
@args [ CARD ]
@args.CARD {
type integer
}
@func refer
name {
@func concat
strings [ "pcm.intel8x0_front:" $CARD ",0,-1" ]
}
}
type hw
card $CARD
device 0
}
pcm.surround40_0 {
cards.INTEL8X0.pcm.surround40.0 {
@args [ CARD ]
@args.CARD {
type integer
@ -43,7 +23,7 @@ pcm.surround40_0 {
pcm {
@func concat
strings [
"pcm.intel8x0_front:" $CARD ",0,-1"
"cards.INTEL8X0.pcm.front.0:CARD=" $CARD
]
}
channels 4
@ -57,7 +37,7 @@ pcm.surround40_0 {
]
}
pcm.surround51_0 {
cards.INTEL8X0.pcm.surround51.0 {
@args [ CARD ]
@args.CARD {
type integer
@ -68,7 +48,7 @@ pcm.surround51_0 {
pcm {
@func concat
strings [
"pcm.intel8x0_front:" $CARD ",0,-1"
"cards.INTEL8X0.pcm.front.0:CARD=" $CARD
]
}
channels 2
@ -84,7 +64,7 @@ pcm.surround51_0 {
]
}
pcm.iec958_0 {
cards.INTEL8X0.pcm.iec958.0 {
@args [ CARD DEV AES0 AES1 AES2 AES3 ]
@args.CARD {
type integer
@ -106,13 +86,9 @@ pcm.iec958_0 {
}
type hooks
slave.pcm {
@func concat
strings [
"hw:"
"CARD=" $CARD ","
"DEV=0,"
"SUBDEV=0"
]
type hw
card $CARD
device 0
}
hooks.0 {
type ctl_elems

View file

@ -2,54 +2,26 @@
# Configuration for the SI7018 chip
#
pcm.si7018_front {
@args [ CARD DEV SUBDEV ]
@args.CARD {
type integer
}
@args.DEV {
type integer
}
@args.SUBDEV {
type integer
default -1
}
type hw
card $CARD
device $DEV
subdevice $SUBDEV
}
pcm.front_0 {
cards.SI_7018.pcm.front.0 {
@args [ CARD ]
@args.CARD {
type integer
}
@func refer
name {
@func concat
strings [ "pcm.si7018_front:" $CARD ",0,-1" ]
}
}
type hw
card $CARD
device 0
}
pcm.si7018_rear {
@args [ CARD DEV SUBDEV ]
cards.SI_7018.pcm.rear.0 {
@args [ CARD ]
@args.CARD {
type integer
}
@args.DEV {
type integer
}
@args.SUBDEV {
type integer
default -1
}
type hooks
slave.pcm {
@func concat
strings [
"pcm.si7018_front:" $CARD "," $DEV "," $SUBDEV
]
type hw
card $CARD
device 0
}
hooks.0 {
type ctl_elems
@ -64,19 +36,7 @@ pcm.si7018_rear {
}
}
pcm.rear_0 {
@args [ CARD ]
@args.CARD {
type integer
}
@func refer
name {
@func concat
strings [ "pcm.si7018_rear:" $CARD ",0,-1" ]
}
}
pcm.surround40_0 {
cards.SI_7018.pcm.surround40.0 {
@args [ CARD ]
@args.CARD {
type integer
@ -87,7 +47,7 @@ pcm.surround40_0 {
pcm {
@func concat
strings [
"pcm.si7018_front:" $CARD ",0,-1"
"cards.SI_7018.pcm.front.0:CARD=" $CARD
]
}
channels 2
@ -96,7 +56,7 @@ pcm.surround40_0 {
pcm {
@func concat
strings [
"pcm.si7018_rear:" $CARD ",0,-1"
"cards.SI_7018.pcm.rear.0:CARD=" $CARD
]
}
channels 2

View file

@ -2,61 +2,32 @@
# Configuration for the Trident 4D-Wave NX chip
#
pcm.trid4dwavenx_front {
@args [ CARD DEV SUBDEV ]
@args.CARD {
type integer
}
@args.DEV {
type integer
}
@args.SUBDEV {
type integer
default -1
}
type hw
card $CARD
device $DEV
subdevice $SUBDEV
}
pcm.front_0 {
cards.TRID4DWAVENX.pcm.front.0 {
@args [ CARD ]
@args.CARD {
type integer
}
@func refer
name {
@func concat
strings [ "pcm.trid4dwavenx_front:" $CARD ",0,-1" ]
}
}
type hw
card $CARD
device 0
}
pcm.trid4dwavenx_rear {
@args [ CARD DEV SUBDEV ]
cards.TRID4DWAVENX.pcm.rear.0 {
@args [ CARD ]
@args.CARD {
type integer
}
@args.DEV {
type integer
}
@args.SUBDEV {
type integer
default -1
}
type hooks
slave.pcm {
@func concat
strings [
"pcm.trid4dwavenx_front:CARD=" $CARD ",DEV=" $DEV ",SUBDEV=" $SUBDEV
]
type hw
card $CARD
device 0
}
hooks.0 {
type ctl_elems
hook_args [
{
name "Rear Path"
index { @func private_pcm_subdevice }
lock true
preserve true
value true
@ -66,32 +37,20 @@ pcm.trid4dwavenx_rear {
index { @func private_pcm_subdevice }
lock true
preserve true
value [ 0 0 ]
value 0
}
{
name "PCM Reverb Playback Volume"
index { @func private_pcm_subdevice }
lock true
preserve true
value [ 127 127 ]
value 127
}
]
}
}
pcm.rear_0 {
@args [ CARD ]
@args.CARD {
type integer
}
@func refer
name {
@func concat
strings [ "pcm.trid4dwavenx_rear:" $CARD ]
}
}
pcm.surround40_0 {
cards.TRID4DWAVENX.pcm.surround40.0 {
@args [ CARD ]
@args.CARD {
type integer
@ -102,7 +61,7 @@ pcm.surround40_0 {
pcm {
@func concat
strings [
"pcm.trid4dwavenx_front:" $CARD ",0,-1"
"cards.TRID4DWAVENX.pcm.front.0:CARD=" $CARD
]
}
channels 2
@ -111,7 +70,7 @@ pcm.surround40_0 {
pcm {
@func concat
strings [
"pcm.trid4dwavenx_rear:" $CARD ",0,-1"
"cards.TRID4DWAVENX.pcm.rear.0:CARD=" $CARD
]
}
channels 2
@ -125,14 +84,11 @@ pcm.surround40_0 {
]
}
pcm.iec958_0 {
@args [ CARD DEV AES0 AES1 AES2 AES3 ]
cards.TRID4DWAVENX.pcm.iec958.0 {
@args [ CARD AES0 AES1 AES2 AES3 ]
@args.CARD {
type integer
}
@args.DEV {
type integer
}
@args.AES0 {
type integer
}

View file

@ -2,37 +2,17 @@
# Configuration for the YMFPCI chip
#
pcm.ymfpci_front {
@args [ CARD DEV SUBDEV ]
@args.CARD {
type integer
}
@args.DEV {
type integer
}
@args.SUBDEV {
type integer
default -1
}
type hw
card $CARD
device $DEV
subdevice $SUBDEV
}
pcm.front_0 {
cards.YMFPCI.front.0 {
@args [ CARD ]
@args.CARD {
type integer
}
@func refer
name {
@func concat
strings [ "pcm.ymfpci_front:" $CARD ",0,-1" ]
}
}
type hw
card $CARD
device 0
}
pcm.ymfpci_rear {
cards.YMFPCI.rear.0 {
@args [ CARD ]
@args.CARD {
type integer
@ -40,22 +20,9 @@ pcm.ymfpci_rear {
type hw
card $CARD
device 2
subdevice 0
}
pcm.rear_0 {
@args [ CARD ]
@args.CARD {
type integer
}
@func refer
name {
@func concat
strings [ "pcm.ymfpci_rear:" $CARD ]
}
}
pcm.surround40_0 {
cards.YMFPCI.surround40.0 {
@args [ CARD ]
@args.CARD {
type integer
@ -66,7 +33,7 @@ pcm.surround40_0 {
pcm {
@func concat
strings [
"pcm.ymfpci_front:" $CARD ",0,-1"
"cards.YMFPCI.front.0:CARD=" $CARD
]
}
channels 2
@ -75,7 +42,7 @@ pcm.surround40_0 {
pcm {
@func concat
strings [
"pcm.ymfpci_rear:" $CARD
"cards.YMFPCI.rear.0:CARD=" $CARD
]
}
channels 2
@ -89,7 +56,7 @@ pcm.surround40_0 {
]
}
pcm.iec958_0 {
cards.YMFPCI.iec958.0 {
@args [ CARD DEV AES0 AES1 AES2 AES3 ]
@args.CARD {
type integer
@ -111,13 +78,9 @@ pcm.iec958_0 {
}
type hooks
slave.pcm {
@func concat
strings [
"hw:"
"CARD=" $CARD ","
"DEV=1,"
"SUBDEV=0"
]
type hw
card $CARD
device 1
}
hooks.0 {
type ctl_elems

View file

@ -624,16 +624,15 @@ int snd_func_private_pcm_subdevice(snd_config_t **dst, snd_config_t *root ATTRIB
return err;
}
int snd_func_refer(snd_config_t **dst, snd_config_t *_root, snd_config_t *src, void *private_data)
int snd_func_refer(snd_config_t **dst, snd_config_t *root, snd_config_t *src, void *private_data)
{
snd_config_t *n;
snd_config_t *root;
const char *file = NULL, *name = NULL;
int err;
err = snd_config_search(src, "file", &n);
if (err >= 0) {
err = snd_config_evaluate(n, _root, private_data, NULL);
err = snd_config_evaluate(n, root, private_data, NULL);
if (err < 0) {
SNDERR("error evaluating file");
goto _end;
@ -646,7 +645,7 @@ int snd_func_refer(snd_config_t **dst, snd_config_t *_root, snd_config_t *src, v
}
err = snd_config_search(src, "name", &n);
if (err >= 0) {
err = snd_config_evaluate(n, _root, private_data, NULL);
err = snd_config_evaluate(n, root, private_data, NULL);
if (err < 0) {
SNDERR("error evaluating name");
goto _end;
@ -657,18 +656,13 @@ int snd_func_refer(snd_config_t **dst, snd_config_t *_root, snd_config_t *src, v
goto _end;
}
}
if (!file && !name) {
if (!name) {
err = -EINVAL;
SNDERR("neither file or name are specified");
SNDERR("name is not specified");
goto _end;
}
if (!file)
root = _root;
else {
if (file) {
snd_input_t *input;
err = snd_config_top(&root);
if (err < 0)
goto _end;
err = snd_input_stdio_open(&input, file, "r");
if (err < 0) {
SNDERR("Unable to open file %s: %s", file, snd_strerror(err));
@ -680,19 +674,11 @@ int snd_func_refer(snd_config_t **dst, snd_config_t *_root, snd_config_t *src, v
goto _end;
}
}
if (!name) {
if (root == _root)
err = snd_config_copy(dst, root);
else {
*dst = root;
err = 0;
}
} else
err = snd_config_search_definition(root, NULL, name, dst);
err = snd_config_search_definition(root, NULL, name, dst);
if (err >= 0)
err = snd_config_set_id(*dst, snd_config_get_id(src));
else
SNDERR("Unable to find definition '%s'", name);
_end:
if (root && root != _root)
snd_config_delete(root);
return err;
}