version 1.118, 2011/06/20 20:18:44 |
version 1.119, 2011/06/29 07:39:02 |
|
|
struct aparams opar; /* output (write) parameters */ |
struct aparams opar; /* output (write) parameters */ |
unsigned hold; /* open immediately */ |
unsigned hold; /* open immediately */ |
unsigned autovol; /* adjust volumes */ |
unsigned autovol; /* adjust volumes */ |
|
unsigned autopar; /* adjust parameters to streams */ |
unsigned bufsz; /* par.bufsz for sio device */ |
unsigned bufsz; /* par.bufsz for sio device */ |
unsigned round; /* par.round for sio device */ |
unsigned round; /* par.round for sio device */ |
unsigned mode; /* bitmap of MODE_XXX */ |
unsigned mode; /* bitmap of MODE_XXX */ |
|
|
cd->round = 0; |
cd->round = 0; |
cd->hold = 1; |
cd->hold = 1; |
cd->autovol = 1; |
cd->autovol = 1; |
|
cd->autopar = 1; |
} |
} |
SLIST_INIT(&cd->ins); |
SLIST_INIT(&cd->ins); |
SLIST_INIT(&cd->outs); |
SLIST_INIT(&cd->outs); |
|
|
void |
void |
aucat_usage(void) |
aucat_usage(void) |
{ |
{ |
(void)fputs("usage: " PROG_AUCAT " [-dlnu] [-a flag] [-b nframes] " |
(void)fputs("usage: " PROG_AUCAT " [-dln] [-a flag] [-b nframes] " |
"[-C min:max] [-c min:max] [-e enc]\n\t" |
"[-C min:max] [-c min:max] [-e enc]\n\t" |
"[-f device] [-h fmt] [-i file] [-j flag] [-L addr] [-m mode] " |
"[-f device] [-h fmt] [-i file] [-j flag] [-L addr] [-m mode] " |
"[-o file]\n\t" |
"[-o file]\n\t" |
"[-q device] [-r rate] [-s name] [-t mode] [-U unit] " |
"[-q device] [-r rate] [-s name] [-t mode] [-U unit] " |
"[-v volume]\n\t" |
"[-u flag]\nt" |
"[-w flag] [-x policy] [-z nframes]\n", |
"[-v volume] [-w flag] [-x policy] [-z nframes]\n", |
stderr); |
stderr); |
} |
} |
|
|
|
|
struct cfstr *cs; |
struct cfstr *cs; |
struct cfdev *cd; |
struct cfdev *cd; |
struct cfnet *cn; |
struct cfnet *cn; |
int c, u_flag, d_flag, l_flag, n_flag, unit; |
int c, d_flag, l_flag, n_flag, unit; |
char base[PATH_MAX], path[PATH_MAX]; |
char base[PATH_MAX], path[PATH_MAX]; |
unsigned mode, rate; |
unsigned mode, rate; |
const char *str; |
const char *str; |
|
|
* global options defaults |
* global options defaults |
*/ |
*/ |
unit = -1; |
unit = -1; |
u_flag = 0; |
|
d_flag = 0; |
d_flag = 0; |
l_flag = 0; |
l_flag = 0; |
n_flag = 0; |
n_flag = 0; |
|
|
cd = cfdev_new(NULL); |
cd = cfdev_new(NULL); |
cs = cfstr_new(NULL); |
cs = cfstr_new(NULL); |
|
|
while ((c = getopt(argc, argv, "a:w:dnb:c:C:e:r:h:x:v:i:o:f:m:luq:s:U:L:t:j:z:")) != -1) { |
while ((c = getopt(argc, argv, "a:w:dnb:c:C:e:r:h:x:v:i:o:f:m:lu:q:s:U:L:t:j:z:")) != -1) { |
switch (c) { |
switch (c) { |
case 'd': |
case 'd': |
#ifdef DEBUG |
#ifdef DEBUG |
|
|
case 'n': |
case 'n': |
n_flag = 1; |
n_flag = 1; |
break; |
break; |
case 'u': |
|
u_flag = 1; |
|
break; |
|
case 'U': |
case 'U': |
unit = strtonum(optarg, 0, MIDI_MAXCTL, &str); |
unit = strtonum(optarg, 0, MIDI_MAXCTL, &str); |
if (str) |
if (str) |
|
|
case 'w': |
case 'w': |
cd->autovol = opt_onoff(); |
cd->autovol = opt_onoff(); |
break; |
break; |
|
case 'u': |
|
cd->autopar = opt_onoff(); |
|
break; |
case 'q': |
case 'q': |
cfmid_add(&cd->mids, optarg); |
cfmid_add(&cd->mids, optarg); |
break; |
break; |
|
|
*/ |
*/ |
SLIST_FOREACH(cd, &cfdevs, entry) { |
SLIST_FOREACH(cd, &cfdevs, entry) { |
mode = 0; |
mode = 0; |
if (!u_flag) { |
if (cd->autopar) { |
aparams_init(&cd->opar, NCHAN_MAX - 1, 0, RATE_MIN); |
aparams_init(&cd->opar, NCHAN_MAX - 1, 0, RATE_MIN); |
aparams_init(&cd->opar, NCHAN_MAX - 1, 0, RATE_MIN); |
aparams_init(&cd->opar, NCHAN_MAX - 1, 0, RATE_MIN); |
} |
} |
|
|
if (cs->mode == 0) |
if (cs->mode == 0) |
errx(1, "%s: not in play mode", cs->path); |
errx(1, "%s: not in play mode", cs->path); |
mode |= (cs->mode & MODE_PLAY); |
mode |= (cs->mode & MODE_PLAY); |
if (!u_flag) |
if (cd->autopar) |
aparams_grow(&cd->opar, &cs->ipar); |
aparams_grow(&cd->opar, &cs->ipar); |
} |
} |
SLIST_FOREACH(cs, &cd->outs, entry) { |
SLIST_FOREACH(cs, &cd->outs, entry) { |
|
|
if ((cs->mode & MODE_REC) && (cs->mode & MODE_MON)) |
if ((cs->mode & MODE_REC) && (cs->mode & MODE_MON)) |
errx(1, "%s: can't rec and mon", cs->path); |
errx(1, "%s: can't rec and mon", cs->path); |
mode |= (cs->mode & MODE_RECMASK); |
mode |= (cs->mode & MODE_RECMASK); |
if (!u_flag) |
if (cd->autopar) |
aparams_grow(&cd->ipar, &cs->opar); |
aparams_grow(&cd->ipar, &cs->opar); |
} |
} |
SLIST_FOREACH(cs, &cd->opts, entry) { |
SLIST_FOREACH(cs, &cd->opts, entry) { |
if ((cs->mode & MODE_REC) && (cs->mode & MODE_MON)) |
if ((cs->mode & MODE_REC) && (cs->mode & MODE_MON)) |
errx(1, "%s: can't rec and mon", cs->path); |
errx(1, "%s: can't rec and mon", cs->path); |
mode |= (cs->mode & (MODE_RECMASK | MODE_PLAY)); |
mode |= (cs->mode & (MODE_RECMASK | MODE_PLAY)); |
if (!u_flag) { |
if (cd->autopar) { |
aparams_grow(&cd->opar, &cs->ipar); |
aparams_grow(&cd->opar, &cs->ipar); |
aparams_grow(&cd->ipar, &cs->opar); |
aparams_grow(&cd->ipar, &cs->opar); |
} |
} |