version 1.40, 2018/06/26 07:30:26 |
version 1.41, 2018/06/26 07:31:29 |
|
|
for (j = d->slot_list; j != NULL; j = j->next) { |
for (j = d->slot_list; j != NULL; j = j->next) { |
if (!(j->mode & MODE_PLAY)) |
if (!(j->mode & MODE_PLAY)) |
continue; |
continue; |
if (i->mix.slot_cmin <= j->mix.slot_cmax && |
if (i->opt->pmin <= j->mix.slot_cmax && |
i->mix.slot_cmax >= j->mix.slot_cmin) |
i->mix.slot_cmax >= j->opt->pmin) |
n++; |
n++; |
} |
} |
weight /= n; |
weight /= n; |
|
|
|
|
if (s->mode & MODE_PLAY) { |
if (s->mode & MODE_PLAY) { |
s->mix.bpf = s->par.bps * |
s->mix.bpf = s->par.bps * |
(s->mix.slot_cmax - s->mix.slot_cmin + 1); |
(s->mix.slot_cmax - s->opt->pmin + 1); |
abuf_init(&s->mix.buf, s->appbufsz * s->mix.bpf); |
abuf_init(&s->mix.buf, s->appbufsz * s->mix.bpf); |
|
|
slot_nch = s->mix.slot_cmax - s->mix.slot_cmin + 1; |
slot_nch = s->mix.slot_cmax - s->opt->pmin + 1; |
dev_nch = s->opt->pmax - s->opt->pmin + 1; |
dev_nch = s->opt->pmax - s->opt->pmin + 1; |
s->mix.decbuf = NULL; |
s->mix.decbuf = NULL; |
s->mix.resampbuf = NULL; |
s->mix.resampbuf = NULL; |
|
|
s->mix.join = slot_nch / dev_nch; |
s->mix.join = slot_nch / dev_nch; |
} |
} |
cmap_init(&s->mix.cmap, |
cmap_init(&s->mix.cmap, |
s->mix.slot_cmin, s->mix.slot_cmax, |
s->opt->pmin, s->mix.slot_cmax, |
s->mix.slot_cmin, s->mix.slot_cmax, |
s->opt->pmin, s->mix.slot_cmax, |
0, d->pchan - 1, |
0, d->pchan - 1, |
s->opt->pmin, s->opt->pmax); |
s->opt->pmin, s->opt->pmax); |
if (!aparams_native(&s->par)) { |
if (!aparams_native(&s->par)) { |
|
|
|
|
if (s->mode & MODE_RECMASK) { |
if (s->mode & MODE_RECMASK) { |
s->sub.bpf = s->par.bps * |
s->sub.bpf = s->par.bps * |
(s->sub.slot_cmax - s->sub.slot_cmin + 1); |
(s->sub.slot_cmax - s->opt->rmin + 1); |
abuf_init(&s->sub.buf, s->appbufsz * s->sub.bpf); |
abuf_init(&s->sub.buf, s->appbufsz * s->sub.bpf); |
|
|
slot_nch = s->sub.slot_cmax - s->sub.slot_cmin + 1; |
slot_nch = s->sub.slot_cmax - s->opt->rmin + 1; |
dev_nch = s->opt->rmax - s->opt->rmin + 1; |
dev_nch = s->opt->rmax - s->opt->rmin + 1; |
s->sub.encbuf = NULL; |
s->sub.encbuf = NULL; |
s->sub.resampbuf = NULL; |
s->sub.resampbuf = NULL; |
|
|
cmap_init(&s->sub.cmap, |
cmap_init(&s->sub.cmap, |
0, ((s->mode & MODE_MON) ? d->pchan : d->rchan) - 1, |
0, ((s->mode & MODE_MON) ? d->pchan : d->rchan) - 1, |
s->opt->rmin, s->opt->rmax, |
s->opt->rmin, s->opt->rmax, |
s->sub.slot_cmin, s->sub.slot_cmax, |
s->opt->rmin, s->sub.slot_cmax, |
s->sub.slot_cmin, s->sub.slot_cmax); |
s->opt->rmin, s->sub.slot_cmax); |
if (s->rate != d->rate) { |
if (s->rate != d->rate) { |
resamp_init(&s->sub.resamp, d->round, s->round, |
resamp_init(&s->sub.resamp, d->round, s->round, |
slot_nch); |
slot_nch); |
|
|
s->pstate = SLOT_INIT; |
s->pstate = SLOT_INIT; |
s->mode = mode; |
s->mode = mode; |
aparams_init(&s->par); |
aparams_init(&s->par); |
if (s->mode & MODE_PLAY) { |
if (s->mode & MODE_PLAY) |
s->mix.slot_cmin = s->opt->pmin; |
|
s->mix.slot_cmax = s->opt->pmax; |
s->mix.slot_cmax = s->opt->pmax; |
} |
if (s->mode & MODE_RECMASK) |
if (s->mode & MODE_RECMASK) { |
|
s->sub.slot_cmin = s->opt->rmin; |
|
s->sub.slot_cmax = s->opt->rmax; |
s->sub.slot_cmax = s->opt->rmax; |
} |
|
if (s->opt->mmc) { |
if (s->opt->mmc) { |
s->xrun = XRUN_SYNC; |
s->xrun = XRUN_SYNC; |
s->tstate = MMC_STOP; |
s->tstate = MMC_STOP; |