version 1.174, 2019/02/21 06:19:51 |
version 1.175, 2019/05/19 12:44:55 |
|
|
"[-h fmt] [-i file] [-j flag] [-o file] [-p position] [-q port]\n\t" |
"[-h fmt] [-i file] [-j flag] [-o file] [-p position] [-q port]\n\t" |
"[-r rate] [-v volume]\n"; |
"[-r rate] [-v volume]\n"; |
|
|
|
static void * |
|
allocbuf(int nfr, int nch) |
|
{ |
|
size_t fsize; |
|
|
|
if (nch < 0 || nch > NCHAN_MAX) { |
|
log_puts("allocbuf: bogus channel count\n"); |
|
panic(); |
|
} |
|
fsize = nch * sizeof(adata_t); |
|
return reallocarray(NULL, nfr, fsize); |
|
} |
|
|
static void |
static void |
slot_log(struct slot *s) |
slot_log(struct slot *s) |
{ |
{ |
|
|
} |
} |
#endif |
#endif |
s->bpf = s->afile.par.bps * (s->cmax - s->cmin + 1); |
s->bpf = s->afile.par.bps * (s->cmax - s->cmin + 1); |
s->round = (dev_round * s->afile.rate + dev_rate - 1) / dev_rate; |
s->round = ((long long)dev_round * s->afile.rate + |
|
dev_rate - 1) / dev_rate; |
|
|
bufsz = s->round * (dev_bufsz / dev_round); |
bufsz = s->round * (dev_bufsz / dev_round); |
bufsz -= bufsz % s->round; |
bufsz -= bufsz % s->round; |
|
|
if (s->afile.fmt != AFILE_FMT_PCM || |
if (s->afile.fmt != AFILE_FMT_PCM || |
!aparams_native(&s->afile.par)) { |
!aparams_native(&s->afile.par)) { |
dec_init(&s->conv, &s->afile.par, slot_nch); |
dec_init(&s->conv, &s->afile.par, slot_nch); |
s->convbuf = |
s->convbuf = allocbuf(s->round, slot_nch); |
xmalloc(s->round * slot_nch * sizeof(adata_t)); |
|
} |
} |
if (s->afile.rate != dev_rate) { |
if (s->afile.rate != dev_rate) { |
resamp_init(&s->resamp, s->afile.rate, dev_rate, |
resamp_init(&s->resamp, s->afile.rate, dev_rate, |
slot_nch); |
slot_nch); |
s->resampbuf = |
s->resampbuf = allocbuf(dev_round, slot_nch); |
xmalloc(dev_round * slot_nch * sizeof(adata_t)); |
|
} |
} |
} |
} |
if (s->mode & SIO_REC) { |
if (s->mode & SIO_REC) { |
|
|
if (s->afile.rate != dev_rate) { |
if (s->afile.rate != dev_rate) { |
resamp_init(&s->resamp, dev_rate, s->afile.rate, |
resamp_init(&s->resamp, dev_rate, s->afile.rate, |
slot_nch); |
slot_nch); |
s->resampbuf = |
s->resampbuf = allocbuf(dev_round, slot_nch); |
xmalloc(dev_round * slot_nch * sizeof(adata_t)); |
|
} |
} |
if (!aparams_native(&s->afile.par)) { |
if (!aparams_native(&s->afile.par)) { |
enc_init(&s->conv, &s->afile.par, slot_nch); |
enc_init(&s->conv, &s->afile.par, slot_nch); |
s->convbuf = |
s->convbuf = allocbuf(s->round, slot_nch); |
xmalloc(s->round * slot_nch * sizeof(adata_t)); |
|
} |
} |
|
|
/* |
/* |
|
|
dev_round = par.round; |
dev_round = par.round; |
if (mode & SIO_PLAY) { |
if (mode & SIO_PLAY) { |
dev_pchan = par.pchan; |
dev_pchan = par.pchan; |
dev_pbuf = xmalloc(sizeof(adata_t) * dev_pchan * dev_round); |
dev_pbuf = allocbuf(dev_round, dev_pchan); |
} |
} |
if (mode & SIO_REC) { |
if (mode & SIO_REC) { |
dev_rchan = par.rchan; |
dev_rchan = par.rchan; |
dev_rbuf = xmalloc(sizeof(adata_t) * dev_rchan * dev_round); |
dev_rbuf = allocbuf(dev_round, dev_rchan); |
} |
} |
dev_pstate = DEV_STOP; |
dev_pstate = DEV_STOP; |
if (log_level >= 2) { |
if (log_level >= 2) { |
|
|
dev_bufsz = rate; |
dev_bufsz = rate; |
dev_round = rate; |
dev_round = rate; |
dev_pchan = dev_rchan = cmax + 1; |
dev_pchan = dev_rchan = cmax + 1; |
dev_pbuf = dev_rbuf = xmalloc(sizeof(adata_t) * dev_pchan * dev_round); |
dev_pbuf = dev_rbuf = allocbuf(dev_round, dev_pchan); |
dev_pstate = DEV_STOP; |
dev_pstate = DEV_STOP; |
for (s = slot_list; s != NULL; s = s->next) |
for (s = slot_list; s != NULL; s = s->next) |
slot_init(s); |
slot_init(s); |